summaryrefslogtreecommitdiff
path: root/salt/openbook/ci/files/openbookctl
blob: 24c87bc6015fb305bc888097984d570a4677fb6c (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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/bin/bash

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

{% raw %}{% if "True" == openbook_install_database|string() %}{% endraw %}
wait_for_database() {
    started=1
    echo "Waiting up to 600 seconds for database to start..."
    for i in {600..0}; do
        if echo 'SELECT 1' | mysql -h {% raw %}{{ ansible_default_ipv4.address }}{% endraw %} -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 {% raw %}{{ ansible_default_ipv4.address }}{% endraw %} -u root --password='{% raw %}{{ openbook_database_password }}{% endraw %}' 2>/dev/null | fgrep 'openbook'; then
        echo "Creating Openbook schema..."
        mysql -h {% raw %}{{ ansible_default_ipv4.address }}{% endraw %} -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 %}
{% raw %}{% if "True" == openbook_install_job_scheduler_server|string() %}{% endraw %}
    {{ pillar["ansible"]["dirs"]["output"]["name"] }}/job_scheduler_server/run.sh ${@}
{% raw %}{% endif %}{% endraw %}
{% raw %}{% if "True" == openbook_install_workflow_server|string() %}{% endraw %}
    {{ pillar["ansible"]["dirs"]["output"]["name"] }}/workflow_server/run.sh ${@}
{% raw %}{% endif %}{% endraw %}
{% raw %}{% if "True" == openbook_install_admin_api_server|string() %}{% endraw %}
    {{ pillar["ansible"]["dirs"]["output"]["name"] }}/admin_api_server/run.sh ${@}
{% raw %}{% endif %}{% endraw %}
{% raw %}{% if "True" == openbook_install_customer_api_server|string() %}{% endraw %}
    {{ pillar["ansible"]["dirs"]["output"]["name"] }}/customer_api_server/run.sh ${@}
{% raw %}{% endif %}{% endraw %}
{% raw %}{% if "True" == openbook_install_admin_web_ui|string() %}{% endraw %}
    {{ pillar["ansible"]["dirs"]["output"]["name"] }}/admin_web_ui/run.sh ${@}
{% raw %}{% endif %}{% endraw %}
{% raw %}{% if "True" == openbook_install_customer_web_ui|string() %}{% endraw %}
    {{ pillar["ansible"]["dirs"]["output"]["name"] }}/customer_web_ui/run.sh ${@}
{% raw %}{% endif %}{% endraw %}
    echo
    echo "Openbook started."
}

do_stop() {
{% raw %}{% if "True" == openbook_install_customer_web_ui|string() %}{% endraw %}
    docker stop {{ pillar["customer_web_ui"]["container_name"] }}_{% raw %}{{ openbook_branch }}{% endraw %}
{% raw %}{% endif %}{% endraw %}
{% raw %}{% if "True" == openbook_install_admin_web_ui|string() %}{% endraw %}
    docker stop {{ pillar["admin_web_ui"]["container_name"] }}_{% raw %}{{ openbook_branch }}{% endraw %}
{% raw %}{% endif %}{% endraw %}
{% raw %}{% if "True" == openbook_install_customer_api_server|string() %}{% endraw %}
    docker stop {{ pillar["customer_api_server"]["container_name"] }}_{% raw %}{{ openbook_branch }}{% endraw %}
{% raw %}{% endif %}{% endraw %}
{% raw %}{% if "True" == openbook_install_admin_api_server|string() %}{% endraw %}
    docker stop {{ pillar["admin_api_server"]["container_name"] }}_{% raw %}{{ openbook_branch }}{% endraw %}
{% raw %}{% endif %}{% endraw %}
{% raw %}{% if "True" == openbook_install_workflow_server|string() %}{% endraw %}
    docker stop {{ pillar["workflow_server"]["container_name"] }}_{% raw %}{{ openbook_branch }}{% endraw %}
{% raw %}{% endif %}{% endraw %}
{% raw %}{% if "True" == openbook_install_job_scheduler_server|string() %}{% endraw %}
    docker stop {{ pillar["job_scheduler_server"]["container_name"] }}_{% raw %}{{ openbook_branch }}{% endraw %}
{% raw %}{% endif %}{% endraw %}
{% raw %}{% if "True" == openbook_install_database|string() %}{% endraw %}
    docker stop {{ pillar["database"]["container_name"] }}
{% raw %}{% endif %}{% endraw %}
    docker container prune -f
    echo
    echo "Openbook stopped."
}

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

case $1 in
    start*)
        do_start
        ;;
    debug*)
        do_start debug
        ;;
    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