summaryrefslogtreecommitdiff
path: root/salt/openbook/ci/files/openbookctl
blob: 6a6770d48fd460c32a7f236d3ad6a75a778c3dae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/bin/bash

echo 'mysql root password: {% raw %}{{ openbook_database_password }}{% endraw %}'
echo 'wsrep_node_address: {% raw %}{{ ansible_default_ipv4.address }}{% endraw %}'
echo 'wsrep_cluster_address: gcomm://{% raw %}{{ openbook_gcomm_addresses }}{% endraw %}'

{% raw %}{% if "True" == openbook_install_database|string() %}{% endraw %}
wait_for_database() {
    echo "Waiting for database to start..."
    started=1
    for i in {120..0}; do
        if echo 'SELECT 1' | mysql -h 127.0.0.1 -u root --password='{% raw %}{{ openbook_database_password }}{% endraw %}' &>/dev/null; then
            started=0
            break
        fi
        sleep 1
    done
    if [ $started -eq 1 ]; then
        echo "Error: database did not start."
        exit 1
    fi
}

ensure_openbook_databases_created() {
    if ! echo "SHOW DATABASES;" | mysql -h 127.0.0.1 -u root --password='{% raw %}{{ openbook_database_password }}{% endraw %}' 2>/dev/null | fgrep 'openbook'; then
        echo "Creating Openbook schema..."
        mysql -h 127.0.0.1 -u root --password='{% raw %}{{ openbook_database_password }}{% endraw %}' &>/dev/null < {{ pillar["database"]["files"]["create_openbook_schemas"]["path"] }}/{{ pillar["database"]["files"]["create_openbook_schemas"]["name"] }}
    fi
}
{% raw %}{% endif %}{% endraw %}

do_start() {
{% raw %}{% if "True" == openbook_install_database|string() %}{% endraw %}
    chmod 777 {{ pillar["database"]["dirs"]["var_lib_mysql"]["name"] }}
    chmod 777 {{ pillar["database"]["dirs"]["var_log_mysql"]["name"] }}
    {{ pillar["ansible"]["dirs"]["output"]["name"] }}/database/run.sh
    wait_for_database
    ensure_openbook_databases_created
{% raw %}{% endif %}{% endraw %}
    {{ pillar["ansible"]["dirs"]["output"]["name"] }}/job_scheduler_server/run.sh
    {{ pillar["ansible"]["dirs"]["output"]["name"] }}/workflow_server/run.sh
    {{ pillar["ansible"]["dirs"]["output"]["name"] }}/admin_api_server/run.sh
    {{ pillar["ansible"]["dirs"]["output"]["name"] }}/customer_api_server/run.sh
    {{ pillar["ansible"]["dirs"]["output"]["name"] }}/admin_web_ui/run.sh
    {{ pillar["ansible"]["dirs"]["output"]["name"] }}/customer_web_ui/run.sh
    echo
    echo "Openbook started. All components may not be fully initialized and available."
    echo "It is highly recommended to wait until initialization is complete before"
    echo "starting the next node in the cluster. To monitor the state, run:"
    echo
    echo "watch -n 5 \"lsof -i -n -P 2>/dev/null | fgrep '*:808'\""
    echo
    echo "When the output looks like the following, the node is fully initialized:"
    echo "(Your PIDs will vary)"
    echo
    echo "java     10349 root   98u  IPv6 1128362      0t0  TCP *:8083 (LISTEN)"
    echo "java     10413 root   98u  IPv6 1129955      0t0  TCP *:8081 (LISTEN)"
    echo "java     10472 root   88u  IPv6 1129171      0t0  TCP *:8082 (LISTEN)"
    echo "java     10542 root   88u  IPv6 1129173      0t0  TCP *:8080 (LISTEN)"
}

do_stop() {
    docker stop {{ pillar["customer_web_ui"]["container_name"] }}
    docker stop {{ pillar["admin_web_ui"]["container_name"] }}
    docker stop {{ pillar["customer_api_server"]["container_name"] }}
    docker stop {{ pillar["admin_api_server"]["container_name"] }}
    docker stop {{ pillar["workflow_server"]["container_name"] }}
    docker stop {{ pillar["job_scheduler_server"]["container_name"] }}
{% raw %}{% if "True" == openbook_install_database|string() %}{% endraw %}
    docker stop {{ pillar["database"]["container_name"] }}
{% raw %}{% endif %}{% endraw %}
    docker container prune -f
}

do_help() {
    echo "Usage:"
    echo "    $0 start"
    echo "    $0 stop"
{% raw %}{% if "True" == openbook_install_database|string() %}{% endraw %}
    echo "    $0 test_database"
{% raw %}{% endif %}{% endraw %}
}

case $1 in
    start*)
        do_start
        ;;
    stop*)
        do_stop
        ;;
{% raw %}{% if "True" == openbook_install_database|string() %}{% endraw %}
    test_database*)
        wait_for_database
        echo "Database is up."
        ;;
{% raw %}{% endif %}{% endraw %}
    *)
        do_help
        ;;
esac

exit 0