Upgrade RF syntax for v3.2 compatibility
[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 Suite Setup       OpenStackInstallUtils.Get All Ssh Connections
4 Suite Teardown    Close All Connections
5 Library           SSHLibrary
6 Library           OperatingSystem
7 Library           RequestsLibrary
8 Resource          ../libraries/OpenStackInstallUtils.robot
9 Resource          ../libraries/SystemUtils.robot
10 Resource          ../libraries/Utils.robot
11
12 *** Test Cases ***
13 Setup MySql
14     Run Keyword If    2 < ${NUM_CONTROL_NODES}    Install MySQl Cluster    ${OS_CONTROL_1_IP}    ${OS_CONTROL_1_IP}    openstack
15     Run Keyword If    2 < ${NUM_CONTROL_NODES}    Install MySQl Cluster    ${OS_CONTROL_2_IP}    ${OS_CONTROL_2_IP}    openstack
16     Run Keyword If    2 < ${NUM_CONTROL_NODES}    Install MySQl Cluster    ${OS_CONTROL_3_IP}    ${OS_CONTROL_3_IP}    openstack
17     Run Keyword If    3 < ${NUM_CONTROL_NODES}    Install MySQl Cluster    ${OS_CONTROL_4_IP}    ${OS_CONTROL_4_IP}    openstack
18     Run Keyword If    4 < ${NUM_CONTROL_NODES}    Install MySQl Cluster    ${OS_CONTROL_5_IP}    ${OS_CONTROL_5_IP}    openstack
19     Run Keyword If    2 < ${NUM_CONTROL_NODES}    Configure Cluster Root Node    ${OS_CONTROL_1_IP}    ${OS_CONTROL_1_HOSTNAME}    ${OS_USER}
20     Run Keyword If    2 < ${NUM_CONTROL_NODES}    Enable MySQL non-root nodes    ${OS_CONTROL_2_IP}    ${OS_CONTROL_2_HOSTNAME}    ${OS_USER}
21     Run Keyword If    2 < ${NUM_CONTROL_NODES}    Enable MySQL non-root nodes    ${OS_CONTROL_3_IP}    ${OS_CONTROL_2_HOSTNAME}    ${OS_USER}
22     Run Keyword If    3 < ${NUM_CONTROL_NODES}    Enable MySQL non-root nodes    ${OS_CONTROL_4_IP}    ${OS_CONTROL_4_HOSTNAME}    ${OS_USER}
23     Run Keyword If    4 < ${NUM_CONTROL_NODES}    Enable MySQL non-root nodes    ${OS_CONTROL_5_IP}    ${OS_CONTROL_5_HOSTNAME}    ${OS_USER}
24     Run Keyword If    2 < ${NUM_CONTROL_NODES}    Add HAPROXY Entry for DB    ${HAPROXY_IP}    ${HAPROXY_IP}
25     Run Keyword If    2 > ${NUM_CONTROL_NODES}    Install MySql    ${OS_CONTROL_1_IP}
26     Run Keyword If    2 > ${NUM_CONTROL_NODES}    Enable MySql    ${OS_CONTROL_1_IP}    ${OS_CONTROL_1_HOSTNAME}    ${OS_USER}
27
28 *** Keywords ***
29 Install MySQl
30     [Arguments]    ${os_node_cxn}
31     Run Keyword If    '${OS_APPS_PRE_INSTALLED}' == 'no'    Install Rpm Package    ${os_node_cxn}    mariadb mariadb-server python2-PyMySQL
32     Touch File    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf
33     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    bind-address    0.0.0.0
34     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    default-storage-engine    innodb
35     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    innodb_file_per_table    innodb
36     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    max_connections    4096
37     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    collation-server    utf8_general_ci
38     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    character-set-server    utf8
39
40 Enable MySql
41     [Arguments]    ${os_node_cxn}    ${hostname}    ${hostuser}
42     Enable Service    ${os_node_cxn}    mariadb.service
43     Start Service    ${os_node_cxn}    mariadb.service
44     Create User Pass For Mysql    ${os_node_cxn}    root    mysql
45     Grant Privileges To Mysql Database    ${os_node_cxn}    root    mysql    *.*    ${hostname}    ${hostuser}
46     ...    mysql
47     Grant Privileges To Mysql Database    ${os_node_cxn}    root    mysql    *.*    localhost    ${hostuser}
48     ...    mysql
49
50 Install MySql Cluster
51     [Arguments]    ${os_node_cxn}    ${bindaddress}    ${galera_cluster_name}
52     Run Keyword If    '${OS_APPS_PRE_INSTALLED}' == 'no'    Install Rpm Package    ${os_node_cxn}    mariadb galera mariadb-galera-server python2-PyMySQL mariadb-libs
53     Touch File    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf
54     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    bind-address    0.0.0.0
55     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    datadir    /var/lib/mysql
56     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    socket    /var/lib/mysql/mysql.sock
57     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    user    mysql
58     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    binlog_format    ROW
59     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    default_storage_engine    innodb
60     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    innodb_autoinc_lock_mode    2
61     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    innodb_flush_log_at_trx_commit    0
62     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    innodb_buffer_pool_size    122M
63     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    wsrep_provider    /usr/lib64/galera/libgalera_smm.so
64     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    wsrep_provider_options    "pc.recovery=TRUE;gcache.size=300M"
65     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    wsrep_cluster_name    ${galera_cluster_name}
66     Run Keyword If    4 < ${NUM_CONTROL_NODES}    Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    wsrep_cluster_address
67     ...    gcomm://${OS_CONTROL_1_IP},${OS_CONTROL_2_IP},${OS_CONTROL_3_IP},${OS_CONTROL_4_IP},${OS_CONTROL_5_IP}
68     Run Keyword If    4 > ${NUM_CONTROL_NODES}    Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    wsrep_cluster_address
69     ...    gcomm://${OS_CONTROL_1_IP},${OS_CONTROL_2_IP},${OS_CONTROL_3_IP}
70     Crudini Edit    ${os_node_cxn}    /etc/my.cnf.d/openstack.cnf    mysqld    wsrep_sst_method    rsync
71     Crudini Delete    ${os_node_cxn}    /etc/my.cnf.d/auth_gssapi.cnf    mariadb    plugin-load-add
72     #Configure Mysql Cluster Check    ${os_node_cxn}
73
74 Configure Cluster Root Node
75     [Arguments]    ${os_node_cxn}    ${hostname}    ${hostuser}
76     Enable Service    ${os_node_cxn}    mariadb.service
77     Run Command    ${os_node_cxn}    sudo galera_new_cluster
78     Create User Pass For Mysql    ${os_node_cxn}    root    mysql
79     Grant Privileges To Mysql Database    ${os_node_cxn}    root    mysql    *.*    ${hostuser}    ${hostname}
80     ...    mysql
81     Grant Privileges To Mysql Database    ${os_node_cxn}    root    mysql    *.*    ${hostuser}    localhost
82     ...    mysql
83     Grant Privileges To Mysql Database    ${os_node_cxn}    root    mysql    *.*    ${hostuser}    ${HAPROXY_HOSTNAME}
84     ...    mysql    #Grant Process To Mysql Database    ${os_node_cxn}    root    mysql    *.*
85     ...        # clustercheck_user    localhost    # my_clustercheck_password
86     Execute MySQL STATUS Query    ${os_node_cxn}    root    mysql    wsrep_cluster_size
87
88 Enable MySQL non-root nodes
89     [Arguments]    ${os_node_cxn}    ${hostname}    ${hostuser}
90     Enable Service    ${os_node_cxn}    mariadb.service
91     Start Service    ${os_node_cxn}    mariadb.service
92     Grant Privileges To Mysql Database    ${os_node_cxn}    root    mysql    *.*    ${hostuser}    ${hostname}
93     ...    mysql
94     Grant Privileges To Mysql Database    ${os_node_cxn}    root    mysql    *.*    ${hostuser}    localhost
95     ...    mysql
96     Grant Privileges To Mysql Database    ${os_node_cxn}    root    mysql    *.*    ${hostuser}    ${HAPROXY_HOSTNAME}
97     ...    mysql    #Grant Process To Mysql Database    ${os_node_cxn}    root    mysql    *.*
98     ...        # clustercheck_user    localhost    # my_clustercheck_password
99     Execute MySQL STATUS Query    ${os_node_cxn}    root    mysql    wsrep_cluster_size
100
101 Add HAPROXY Entry for DB
102     [Arguments]    ${os_node_cxn}    ${bind_ip}
103     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    $'\n'listen hadatabase
104     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " bind ${bind_ip}:3306"
105     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " timeout client 90s"
106     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " mode tcp"
107     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " option mysql-check user root"
108     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " balance roundrobin"
109     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " timeout server 90s"
110     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " server galera1 ${OS_CONTROL_1_IP}:3306"
111     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " server galera2 ${OS_CONTROL_2_IP}:3306"
112     Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " server galera3 ${OS_CONTROL_3_IP}:3306"
113     Run Keyword If    3 < ${NUM_CONTROL_NODES}    Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " server galera4 ${OS_CONTROL_4_IP}:3306"
114     Run Keyword If    4 < ${NUM_CONTROL_NODES}    Append To File    ${os_node_cxn}    /etc/haproxy/haproxy.cfg    " server galera4 ${OS_CONTROL_5_IP}:3306"
115     Enable Service    ${os_node_cxn}    haproxy
116     Restart Service    ${os_node_cxn}    haproxy
117
118 Configure Mysql Cluster Check
119     [Arguments]    ${os_node_cxn}
120     Touch File    ${os_node_cxn}    /etc/sysconfig/clustercheck
121     Append To File    ${os_node_cxn}    /etc/sysconfig/clustercheck    MYSQL_USERNAME=clustercheck_user
122     Append To File    ${os_node_cxn}    /etc/sysconfig/clustercheck    MYSQL_PASSWORD=my_clustercheck_password
123     Append To File    ${os_node_cxn}    /etc/sysconfig/clustercheck    MYSQL_HOST=localhost
124     Append To File    ${os_node_cxn}    /etc/sysconfig/clustercheck    MYSQL_PORT=3306
125     Run Keyword If    '${OS_APPS_PRE_INSTALLED}' == 'no'    Install Rpm Package    ${os_node_cxn}    xinetd
126     Touch File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor
127     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    service galera-monitor
128     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    "{"
129     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " port = 9200"
130     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " disable = no"
131     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " socket_type = stream"
132     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " protocol = tcp"
133     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " wait = no"
134     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " user= root"
135     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " group = root"
136     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " groups = yes"
137     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " server = /usr/bin/clustercheck"
138     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " type = UNLISTED"
139     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " per_source = UNLISTED"
140     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " log_on_failure = HOST"
141     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    " flags = REUSE"
142     Append To File    ${os_node_cxn}    /etc/xinetd.d/galera-monitor    "}"
143     Daemon Reload    ${os_node_cxn}
144     Enable Service    ${os_node_cxn}    xinetd
145     Start Service    ${os_node_cxn}    xinetd