80c3793d4ffdf20c677af5630baa8f7b18a8b029
[integration/test.git] / tools / deployment / openstack_ha / deploy / 02_rabbitmq_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 RabbitMQ
17     IF    2 > ${NUM_CONTROL_NODES}    Install RabbitMQ    ${OS_CONTROL_1_IP}
18     IF    2 > ${NUM_CONTROL_NODES}    Start RabbitMQ    ${OS_CONTROL_1_IP}
19     IF    2 > ${NUM_CONTROL_NODES}
20         Add Openstack MQ    ${OS_CONTROL_1_IP}    openstack    rabbit
21     END
22     IF    2 < ${NUM_CONTROL_NODES}    Install RabbitMQ    ${OS_CONTROL_1_IP}
23     IF    2 < ${NUM_CONTROL_NODES}
24         Start Stop And Copy Cookie File    ${OS_CONTROL_1_IP}    rabbit    rabbit
25     END
26     IF    2 < ${NUM_CONTROL_NODES}    Install RabbitMQ    ${OS_CONTROL_2_IP}
27     IF    2 < ${NUM_CONTROL_NODES}    Install RabbitMQ    ${OS_CONTROL_3_IP}
28     IF    3 < ${NUM_CONTROL_NODES}    Install RabbitMQ    ${OS_CONTROL_4_IP}
29     IF    4 < ${NUM_CONTROL_NODES}    Install RabbitMQ    ${OS_CONTROL_5_IP}
30     IF    2 < ${NUM_CONTROL_NODES}
31         Setup RabbitMQ Cluster    ${OS_CONTROL_2_IP}    rabbit    ${OS_CONTROL_1_HOSTNAME}
32     END
33     IF    2 < ${NUM_CONTROL_NODES}
34         Setup RabbitMQ Cluster    ${OS_CONTROL_3_IP}    rabbit    ${OS_CONTROL_1_HOSTNAME}
35     END
36     IF    3 < ${NUM_CONTROL_NODES}
37         Setup RabbitMQ Cluster    ${OS_CONTROL_4_IP}    rabbit    ${OS_CONTROL_1_HOSTNAME}
38     END
39     IF    4 < ${NUM_CONTROL_NODES}
40         Setup RabbitMQ Cluster    ${OS_CONTROL_5_IP}    rabbit    ${OS_CONTROL_1_HOSTNAME}
41     END
42     IF    2 < ${NUM_CONTROL_NODES}
43         Generic HAProxy Entry    ${HAPROXY_IP}    ${HAPROXY_IP}    5672    rabbitmq
44     END
45
46
47 *** Keywords ***
48 Install RabbitMQ
49     [Arguments]    ${os_node_cxn}
50     IF    '${OS_APPS_PRE_INSTALLED}' == 'no'
51         Install Rpm Package    ${os_node_cxn}    rabbitmq-server
52     END
53     Enable Service    ${os_node_cxn}    rabbitmq-server
54
55 Start RabbitMQ
56     [Arguments]    ${os_node_cxn}
57     Enable Service    ${os_node_cxn}    rabbitmq-server
58     Start Service    ${os_node_cxn}    rabbitmq-server
59
60 Start Stop And Copy Cookie File
61     [Arguments]    ${os_node_cxn}    ${rabbit_user}    ${rabbit_pass}
62     Enable Service    ${os_node_cxn}    rabbitmq-server
63     Start Service    ${os_node_cxn}    rabbitmq-server
64     Add Openstack MQ    ${os_node_cxn}    openstack    rabbit
65     Get RabbitMQ Cookie File    ${os_node_cxn}
66
67 Add Openstack MQ
68     [Arguments]    ${os_node_cxn}    ${rabbit_user}    ${rabbit_pass}
69     Add Rabbitmq User    ${os_node_cxn}    ${rabbit_user}    ${rabbit_pass}
70     Enable Access to Rabbitmq vhost    ${os_node_cxn}    ${rabbit_user}
71
72 Setup RabbitMQ Cluster
73     [Arguments]    ${os_node_cxn}    ${rabbit_user}    ${src_hostname}
74     Copy RabbitMQ Cookie File    ${os_node_cxn}    ${rabbit_user}    ${src_hostname}
75
76 Add Rabbitmq User
77     [Documentation]    Add a user to Rabbit MQ
78     [Arguments]    ${os_node_cxn}    ${rabbit_user}    ${rabbit_pass}
79     Switch Connection    ${os_node_cxn}
80     ${output}    ${rc}=    Execute Command
81     ...    sudo rabbitmqctl add_user ${rabbit_user} ${rabbit_pass}
82     ...    return_rc=True
83     ...    return_stdout=True
84     Log    ${output}
85     RETURN    ${output}
86
87     #Should Not Be True    ${rc}
88
89 Change Rabbitmq Password
90     [Documentation]    Add a user to Rabbit MQ
91     [Arguments]    ${os_node_cxn}    ${rabbit_user}    ${rabbit_pass}
92     Switch Connection    ${os_node_cxn}
93     ${output}    ${rc}=    Execute Command
94     ...    sudo rabbitmqctl change_password ${rabbit_user} ${rabbit_pass}
95     ...    return_rc=True
96     ...    return_stdout=True
97     Log    ${output}
98     Should Not Be True    ${rc}
99     RETURN    ${output}
100
101 Enable Access to Rabbitmq vhost
102     [Documentation]    Add a user to Rabbit MQ
103     [Arguments]    ${os_node_cxn}    ${rabbit_user}
104     Switch Connection    ${os_node_cxn}
105     ${output}    ${rc}=    Execute Command
106     ...    rabbitmqctl set_permissions ${rabbit_user} ".*" ".*" ".*"
107     ...    return_rc=True
108     ...    return_stdout=True
109     Log    ${output}
110     Should Not Be True    ${rc}
111     RETURN    ${output}
112
113 Stop RabbitMQ
114     [Documentation]    Stop the RabbitMQ user
115     [Arguments]    ${os_node_cxn}
116     Switch Connection    ${os_node_cxn}
117     ${output}    ${rc}=    Execute Command    rabbitmqctl stop_app    return_rc=True    return_stdout=True
118     Log    ${output}
119     Should Not Be True    ${rc}
120     RETURN    ${output}
121
122 Get RabbitMQ Cookie File
123     [Documentation]    Get the Cookie file from the primary node
124     [Arguments]    ${os_node_cxn}
125     Switch Connection    ${os_node_cxn}
126     ${output}    ${rc}=    Execute Command    rabbitmqctl stop_app    return_rc=True    return_stdout=True
127     Log    ${output}
128     Should Not Be True    ${rc}
129     SSHLibrary.Get File    /var/lib/rabbitmq/.erlang.cookie    /tmp/
130     ${output}    ${rc}=    Execute Command    rabbitmqctl start_app    return_rc=True    return_stdout=True
131     Log    ${output}
132     Should Not Be True    ${rc}
133     ${output}    ${rc}=    Execute Command    rabbitmqctl cluster_status    return_rc=True    return_stdout=True
134     Log    ${output}
135     Should Not Be True    ${rc}
136
137 Copy RabbitMQ Cookie File
138     [Documentation]    Copy the rabbit cookie file to other servers to join the cluster
139     [Arguments]    ${os_node_cxn}    ${rabbit_user}    ${src_hostname}
140     Switch Connection    ${os_node_cxn}
141     SSHLibrary.Put File    /tmp/.erlang.cookie    /var/lib/rabbitmq/.erlang.cookie
142     ${output}    ${rc}=    Execute Command
143     ...    chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
144     ...    return_rc=True
145     ...    return_stdout=True
146     Log    ${output}
147     Should Not Be True    ${rc}
148     ${output}    ${rc}=    Execute Command
149     ...    chmod 400 /var/lib/rabbitmq/.erlang.cookie
150     ...    return_rc=True
151     ...    return_stdout=True
152     Log    ${output}
153     Should Not Be True    ${rc}
154     Enable Service    ${os_node_cxn}    rabbitmq-server
155     Start Service    ${os_node_cxn}    rabbitmq-server
156     ${output}    ${rc}=    Execute Command    rabbitmqctl stop_app    return_rc=True    return_stdout=True
157     Log    ${output}
158     Should Not Be True    ${rc}
159     ${output}    ${rc}=    Execute Command
160     ...    rabbitmqctl join_cluster --ram ${rabbit_user}@${src_hostname}
161     ...    return_rc=True
162     ...    return_stdout=True
163     Log    ${output}
164     Should Not Be True    ${rc}
165     ${output}    ${rc}=    Execute Command    rabbitmqctl start_app    return_rc=True    return_stdout=True
166     Log    ${output}
167     Should Not Be True    ${rc}
168     ${output}    ${rc}=    Execute Command    rabbitmqctl cluster_status    return_rc=True    return_stdout=True
169     Log    ${output}
170     Should Not Be True    ${rc}
171     Run Command    ${os_node_cxn}    sudo rabbitmqctl set_policy ha-all '^(?!amq\.).*' '{"ha-mode": "all"}'