Remove testplans and suites for openstack
[integration/test.git] / tools / deployment / openstack_ha / deploy / 01_mysql_setup.robot
1 *** Settings ***
2 Documentation       Test suite to verify packet flows between vm instances.
3
4 Library             SSHLibrary
5 Library             OperatingSystem
6 Library             RequestsLibrary
7 Resource            ../libraries/OpenStackInstallUtils.robot
8 Resource            ../libraries/SystemUtils.robot
9 Resource            ../libraries/Utils.robot
10
11 Suite Setup         OpenStackInstallUtils.Get All Ssh Connections
12 Suite Teardown      Close All Connections
13
14
15 *** Test Cases ***
16 Setup MySql
17     IF    2 < ${NUM_CONTROL_NODES}
18         Install MySQl Cluster    ${OS_CONTROL_1_IP}    ${OS_CONTROL_1_IP}    openstack
19     END
20     IF    2 < ${NUM_CONTROL_NODES}
21         Install MySQl Cluster    ${OS_CONTROL_2_IP}    ${OS_CONTROL_2_IP}    openstack
22     END
23     IF    2 < ${NUM_CONTROL_NODES}
24         Install MySQl Cluster    ${OS_CONTROL_3_IP}    ${OS_CONTROL_3_IP}    openstack
25     END
26     IF    3 < ${NUM_CONTROL_NODES}
27         Install MySQl Cluster    ${OS_CONTROL_4_IP}    ${OS_CONTROL_4_IP}    openstack
28     END
29     IF    4 < ${NUM_CONTROL_NODES}
30         Install MySQl Cluster    ${OS_CONTROL_5_IP}    ${OS_CONTROL_5_IP}    openstack
31     END
32     IF    2 < ${NUM_CONTROL_NODES}
33         Configure Cluster Root Node    ${OS_CONTROL_1_IP}    ${OS_CONTROL_1_HOSTNAME}    ${OS_USER}
34     END
35     IF    2 < ${NUM_CONTROL_NODES}
36         Enable MySQL non-root nodes    ${OS_CONTROL_2_IP}    ${OS_CONTROL_2_HOSTNAME}    ${OS_USER}
37     END
38     IF    2 < ${NUM_CONTROL_NODES}
39         Enable MySQL non-root nodes    ${OS_CONTROL_3_IP}    ${OS_CONTROL_2_HOSTNAME}    ${OS_USER}
40     END
41     IF    3 < ${NUM_CONTROL_NODES}
42         Enable MySQL non-root nodes    ${OS_CONTROL_4_IP}    ${OS_CONTROL_4_HOSTNAME}    ${OS_USER}
43     END
44     IF    4 < ${NUM_CONTROL_NODES}
45         Enable MySQL non-root nodes    ${OS_CONTROL_5_IP}    ${OS_CONTROL_5_HOSTNAME}    ${OS_USER}
46     END
47     IF    2 < ${NUM_CONTROL_NODES}
48         Add HAPROXY Entry for DB    ${HAPROXY_IP}    ${HAPROXY_IP}
49     END
50     IF    2 > ${NUM_CONTROL_NODES}    Install MySql    ${OS_CONTROL_1_IP}
51     IF    2 > ${NUM_CONTROL_NODES}
52         Enable MySql    ${OS_CONTROL_1_IP}    ${OS_CONTROL_1_HOSTNAME}    ${OS_USER}
53     END
54
55
56 *** Keywords ***
57 Install MySQl
58     [Arguments]    ${os_node_cxn}
59     IF    '${OS_APPS_PRE_INSTALLED}' == 'no'
60         Install Rpm Package    ${os_node_cxn}    mariadb mariadb-server python2-PyMySQL
61     END
62     Touch File    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf
63     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    bind-address    0.0.0.0
64     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    default-storage-engine    innodb
65     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    innodb_file_per_table    innodb
66     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    max_connections    4096
67     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    collation-server    utf8_general_ci
68     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    character-set-server    utf8
69
70 Enable MySql
71     [Arguments]    ${os_node_cxn}    ${hostname}    ${hostuser}
72     Enable Service    ${os_node_cxn}    mariadb.service
73     Start Service    ${os_node_cxn}    mariadb.service
74     Create User Pass For Mysql    ${os_node_cxn}    root    mysql
75     Grant Privileges To Mysql Database    ${os_node_cxn}    root    mysql    *.*    ${hostname}    ${hostuser}
76     ...    mysql
77     Grant Privileges To Mysql Database    ${os_node_cxn}    root    mysql    *.*    localhost    ${hostuser}
78     ...    mysql
79
80 Install MySql Cluster
81     [Arguments]    ${os_node_cxn}    ${bindaddress}    ${galera_cluster_name}
82     IF    '${OS_APPS_PRE_INSTALLED}' == 'no'
83         Install Rpm Package    ${os_node_cxn}    mariadb galera mariadb-galera-server python2-PyMySQL mariadb-libs
84     END
85     Touch File    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf
86     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    bind-address    0.0.0.0
87     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    datadir    /var/lib/mysql
88     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    socket    /var/lib/mysql/mysql.sock
89     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    user    mysql
90     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    binlog_format    ROW
91     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    default_storage_engine    innodb
92     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    innodb_autoinc_lock_mode    2
93     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    innodb_flush_log_at_trx_commit    0
94     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    innodb_buffer_pool_size    122M
95     Crudini Edit
96     ...    ${os_node_cxn}
97     ...    /etc/my.cnf.d/openstack.cnf
98     ...    mysqld
99     ...    wsrep_provider
100     ...    /usr/lib64/galera/libgalera_smm.so
101     Crudini Edit
102     ...    ${os_node_cxn}
103     ...    /etc/my.cnf.d/openstack.cnf
104     ...    mysqld
105     ...    wsrep_provider_options
106     ...    "pc.recovery=TRUE;gcache.size=300M"
107     Crudini Edit
108     ...    ${os_node_cxn}
109     ...    /etc/my.cnf.d/openstack.cnf
110     ...    mysqld
111     ...    wsrep_cluster_name
112     ...    ${galera_cluster_name}
113     IF    4 < ${NUM_CONTROL_NODES}
114         Crudini Edit
115         ...    ${os_node_cxn}
116         ...    /etc/my.cnf.d/openstack.cnf
117         ...    mysqld
118         ...    wsrep_cluster_address
119         ...    gcomm://${OS_CONTROL_1_IP},${OS_CONTROL_2_IP},${OS_CONTROL_3_IP},${OS_CONTROL_4_IP},${OS_CONTROL_5_IP}
120     END
121     IF    4 > ${NUM_CONTROL_NODES}
122         Crudini Edit
123         ...    ${os_node_cxn}
124         ...    /etc/my.cnf.d/openstack.cnf
125         ...    mysqld
126         ...    wsrep_cluster_address
127         ...    gcomm://${OS_CONTROL_1_IP},${OS_CONTROL_2_IP},${OS_CONTROL_3_IP}
128     END
129     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    wsrep_sst_method    rsync
130     Crudini Delete    ${os_node_cxn}    /etc/my.cnf.d/auth_gssapi.cnf    mariadb    plugin-load-add
131     #Configure Mysql Cluster Check    ${os_node_cxn}
132
133 Configure Cluster Root Node
134     [Arguments]    ${os_node_cxn}    ${hostname}    ${hostuser}
135     Enable Service    ${os_node_cxn}    mariadb.service
136     Run Command    ${os_node_cxn}    sudo galera_new_cluster
137     Create User Pass For Mysql    ${os_node_cxn}    root    mysql
138     Grant Privileges To Mysql Database    ${os_node_cxn}    root    mysql    *.*    ${hostuser}    ${hostname}
139     ...    mysql
140     Grant Privileges To Mysql Database    ${os_node_cxn}    root    mysql    *.*    ${hostuser}    localhost
141     ...    mysql
142     Grant Privileges To Mysql Database    ${os_node_cxn}    root    mysql    *.*    ${hostuser}    ${HAPROXY_HOSTNAME}
143     ...    mysql    #Grant Process To Mysql Database    ${os_node_cxn}    root    mysql    *.*
144     ...    # clustercheck_user    localhost    # my_clustercheck_password
145     Execute MySQL STATUS Query    ${os_node_cxn}    root    mysql    wsrep_cluster_size
146
147 Enable MySQL non-root nodes
148     [Arguments]    ${os_node_cxn}    ${hostname}    ${hostuser}
149     Enable Service    ${os_node_cxn}    mariadb.service
150     Start Service    ${os_node_cxn}    mariadb.service
151     Grant Privileges To Mysql Database    ${os_node_cxn}    root    mysql    *.*    ${hostuser}    ${hostname}
152     ...    mysql
153     Grant Privileges To Mysql Database    ${os_node_cxn}    root    mysql    *.*    ${hostuser}    localhost
154     ...    mysql
155     Grant Privileges To Mysql Database    ${os_node_cxn}    root    mysql    *.*    ${hostuser}    ${HAPROXY_HOSTNAME}
156     ...    mysql    #Grant Process To Mysql Database    ${os_node_cxn}    root    mysql    *.*
157     ...    # clustercheck_user    localhost    # my_clustercheck_password
158     Execute MySQL STATUS Query    ${os_node_cxn}    root    mysql    wsrep_cluster_size
159
160 Add HAPROXY Entry for DB
161     [Arguments]    ${os_node_cxn}    ${bind_ip}
162     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    $'\n'listen hadatabase
163     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " bind ${bind_ip}:3306"
164     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " timeout client 90s"
165     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " mode tcp"
166     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " option mysql-check user root"
167     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " balance roundrobin"
168     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " timeout server 90s"
169     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " server galera1 ${OS_CONTROL_1_IP}:3306"
170     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " server galera2 ${OS_CONTROL_2_IP}:3306"
171     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " server galera3 ${OS_CONTROL_3_IP}:3306"
172     IF    3 < ${NUM_CONTROL_NODES}
173         Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " server galera4 ${OS_CONTROL_4_IP}:3306"
174     END
175     IF    4 < ${NUM_CONTROL_NODES}
176         Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " server galera4 ${OS_CONTROL_5_IP}:3306"
177     END
178     Enable Service    ${os_node_cxn}    haproxy
179     Restart Service    ${os_node_cxn}    haproxy
180
181 Configure Mysql Cluster Check
182     [Arguments]    ${os_node_cxn}
183     Touch File    ${os_node_cxn}    /etc/sysconfig/clustercheck
184     Append To File    ${os_node_cxn}    /etc/sysconfig/clustercheck    MYSQL_USERNAME=clustercheck_user
185     Append To File    ${os_node_cxn}    /etc/sysconfig/clustercheck    MYSQL_PASSWORD=my_clustercheck_password
186     Append To File    ${os_node_cxn}    /etc/sysconfig/clustercheck    MYSQL_HOST=localhost
187     Append To File    ${os_node_cxn}    /etc/sysconfig/clustercheck    MYSQL_PORT=3306
188     IF    '${OS_APPS_PRE_INSTALLED}' == 'no'
189         Install Rpm Package    ${os_node_cxn}    xinetd
190     END
191     Touch File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor
192     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    service galera-monitor
193     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    "{"
194     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " port = 9200"
195     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " disable = no"
196     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " socket_type = stream"
197     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " protocol = tcp"
198     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " wait = no"
199     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " user= root"
200     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " group = root"
201     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " groups = yes"
202     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " server = /usr/bin/clustercheck"
203     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " type = UNLISTED"
204     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " per_source = UNLISTED"
205     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " log_on_failure = HOST"
206     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " flags = REUSE"
207     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    "}"
208     Daemon Reload    ${os_node_cxn}
209     Enable Service    ${os_node_cxn}    xinetd
210     Start Service    ${os_node_cxn}    xinetd