blob: cf933cc317886847802cacb6bd8234495433fa9e [file] [log] [blame]
Dennis Dmitriev6f59add2016-10-18 13:45:27 +03001# Copyright 2016 Mirantis, Inc.
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may
4# not use this file except in compliance with the License. You may obtain
5# a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations
13# under the License.
14import copy
Dennis Dmitrieva982b2d2016-10-21 16:52:50 +030015import time
Dennis Dmitriev6f59add2016-10-18 13:45:27 +030016
17import pytest
18
Dennis Dmitriev6f59add2016-10-18 13:45:27 +030019from tcp_tests import settings
20from tcp_tests.helpers import ext
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030021from tcp_tests import logger
22
23LOG = logger.logger
Dennis Dmitriev6f59add2016-10-18 13:45:27 +030024
25
26@pytest.mark.deploy
27class TestTCPInstaller(object):
28 """Test class for testing TCP deployment"""
29
Dennis Dmitriev4be178c2016-10-25 13:17:46 +030030 #salt_cmd = 'salt -l debug ' # For debug output
31 #salt_call_cmd = 'salt-call -l debug ' # For debug output
Dennis Dmitriev21d0ff02016-10-25 13:45:17 +030032 salt_cmd = 'salt --state-output=mixed --state-verbose=False ' # For cause only output
33 salt_call_cmd = 'salt-call --state-output=mixed --state-verbose=False ' # For cause only output
Dennis Dmitriev4be178c2016-10-25 13:17:46 +030034 #salt_cmd = 'salt --state-output=terse --state-verbose=False ' # For reduced output
35 #salt_call_cmd = 'salt-call --state-output=terse --state-verbose=False ' # For reduced output
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030036
37
Dennis Dmitriev4be178c2016-10-25 13:17:46 +030038 steps_mk22_lab_advanced = [
39 {
40 'description': "Run 'linux' formula on cfg01",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030041 'cmd': salt_cmd + "'cfg01*' state.sls linux",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +030042 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030043 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +030044 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030045 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +030046 {
47 'description': "Run 'openssh' formula on cfg01",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +030048 'cmd': (salt_cmd + "'cfg01*' state.sls openssh;"
49 "sed -i 's/PasswordAuthentication no/"
50 "PasswordAuthentication yes/' "
51 "/etc/ssh/sshd_config && service ssh restart"),
52 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +030053 'retry': {'count': 3, 'delay': 5},
54 'skip_fail': False,
55 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +030056 {
57 'description': ("*Workaround* of the bug"
58 " https://mirantis.jira.com/browse/PROD-7962"),
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030059 'cmd': "echo ' StrictHostKeyChecking no' >> /root/.ssh/config",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +030060 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030061 'retry': {'count': 1, 'delay': 1},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +030062 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030063 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +030064 {
65 'description': "Run 'salt' formula on cfg01",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030066 'cmd': salt_cmd + "'cfg01*' state.sls salt",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +030067 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030068 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +030069 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030070 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +030071 {
Dennis Dmitriev7080d8d2016-10-26 13:43:37 +030072 'description': "Accept salt keys from all the nodes",
73 'cmd': "salt-key -A -y",
74 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
75 'retry': {'count': 1, 'delay': 5},
76 'skip_fail': False,
77 },
78 {
Dennis Dmitriev4be178c2016-10-25 13:17:46 +030079 'description': ("Generate inventory for all the nodes to the"
80 " /srv/salt/reclass/nodes/_generated"),
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030081 'cmd': salt_cmd + "'cfg01*' state.sls reclass.storage",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +030082 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030083 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +030084 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030085 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +030086 {
87 'description': "Refresh pillars on all minions",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030088 'cmd': salt_cmd + "'*' saltutil.refresh_pillar",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +030089 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030090 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +030091 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030092 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +030093 {
94 'description': "Configure ntp on controllers",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030095 'cmd': salt_cmd + "'ctl*' state.sls ntp",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +030096 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev7080d8d2016-10-26 13:43:37 +030097 'retry': {'count': 5, 'delay': 10},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +030098 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030099 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300100 {
101 'description': "Configure linux on controllers",
102 'cmd': salt_cmd + "'ctl*' state.sls linux",
103 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
104 'retry': {'count': 5, 'delay': 5},
105 'skip_fail': False,
106 },
107 {
108 'description': "Configure openssh on controllers",
109 'cmd': (salt_cmd + "'ctl*' state.sls openssh;"
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300110 + salt_cmd + "'ctl*' cmd.run "
111 "\"sed -i 's/PasswordAuthentication no/"
112 "PasswordAuthentication yes/' /etc/ssh/sshd_config && "
113 "service ssh restart\""),
114 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300115 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300116 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300117 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300118 {
119 'description': "Configure salt.minion on controllers",
120 'cmd': salt_cmd + "'ctl*' state.sls salt.minion",
121 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
122 'retry': {'count': 3, 'delay': 5},
123 'skip_fail': False,
124 },
125 {
126 'description': "Install keepalived on primary controller",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300127 'cmd': salt_cmd + "'ctl01*' state.sls keepalived",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300128 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300129 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300130 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300131 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300132 {
133 'description': "Show VIP on primary controller",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300134 'cmd': salt_cmd + "'ctl01*' cmd.run 'ip a'",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300135 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300136 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300137 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300138 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300139 {
140 'description': "Install keepalived on other controllers",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300141 'cmd': salt_cmd + "'ctl0[23].*' state.sls keepalived",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300142 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300143 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300144 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300145 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300146 {
147 'description': "Install glusterfs on all controllers",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300148 'cmd': salt_cmd + "'ctl*' state.sls glusterfs.server.service",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300149 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300150 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300151 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300152 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300153 {
154 'description': "Setup glusterfs on primary controller",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300155 'cmd': salt_call_cmd + "state.sls glusterfs.server.setup",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300156 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300157 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300158 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300159 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300160 {
161 'description': "Show glusterfs peer status",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300162 'cmd': "gluster peer status",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300163 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300164 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300165 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300166 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300167 {
168 'description': "Show glusterfs volume status",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300169 'cmd': "gluster volume status",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300170 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300171 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300172 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300173 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300174 {
175 'description': "Install RabbitMQ on all controllers",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300176 'cmd': salt_cmd + "'ctl*' state.sls rabbitmq",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300177 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300178 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300179 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300180 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300181 {
182 'description': ("*Workaround* Update salt-formula-galera on"
183 " config node to the latest version"),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300184 'cmd': "apt-get -y --force-yes install salt-formula-galera",
185 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300186 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300187 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300188 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300189 {
190 'description': "Install Galera on primary controller",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300191 'cmd': salt_call_cmd + "state.sls galera",
192 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300193 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300194 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300195 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300196 {
197 'description': "Install Galera on other controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300198 'cmd': salt_cmd + "'ctl0[23]*' state.sls galera",
199 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300200 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300201 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300202 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300203 {
204 'description': "Check Galera addresses",
205 'cmd': (salt_cmd + "'ctl01*' mysql.status |"
206 " grep -A1 'wsrep_incoming_addresses:'"),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300207 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300208 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300209 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300210 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300211 {
212 'description': "Install haproxy on all controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300213 'cmd': salt_cmd + "'ctl*' state.sls haproxy",
214 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300215 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300216 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300217 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300218 {
219 'description': "Check haproxy on all controllers with Galera port",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300220 'cmd': salt_cmd + "'ctl*' cmd.run 'netstat -tulnp | grep 3306'",
221 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300222 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300223 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300224 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300225 {
226 'description': "Install memcached and keystone on ctl01",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300227 'cmd': salt_call_cmd + "state.sls memcached,keystone",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300228 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300229 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300230 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300231 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300232 {
233 'description': "Install memcached and keystone on ctl02",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300234 'cmd': salt_call_cmd + "state.sls memcached,keystone",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300235 'node_name': 'ctl02.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300236 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300237 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300238 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300239 {
240 'description': "Install memcached and keystone on ctl03",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300241 'cmd': salt_call_cmd + "state.sls memcached,keystone",
242 'node_name': 'ctl03.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300243 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300244 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300245 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300246 {
247 'description': "Check keystone user-list",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300248 'cmd': "source ~/keystonerc; keystone user-list",
249 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300250 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300251 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300252 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300253 {
254 'description': "Check keystone tenant-list",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300255 'cmd': "source ~/keystonerc; keystone tenant-list",
256 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300257 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300258 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300259 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300260 {
261 'description': "Check keystone endpoint-list",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300262 'cmd': "source ~/keystonerc; keystone endpoint-list",
263 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300264 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300265 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300266 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300267 {
268 'description': "Install glance on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300269 'cmd': salt_cmd + "'ctl*' state.sls glance",
270 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300271 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300272 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300273 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300274 {
275 'description': "Install glusterfs on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300276 'cmd': salt_cmd + "'ctl*' state.sls glusterfs.client",
277 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300278 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300279 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300280 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300281 {
282 'description': "Check that glusterfs was added on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300283 'cmd': salt_cmd + "'ctl*' cmd.run 'df -h'",
284 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300285 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300286 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300287 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300288 {
289 'description': ("*Workaround* Re-run keystone formula on ctl01 to"
290 " create fernet keys"),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300291 'cmd': salt_call_cmd + "state.sls keystone",
292 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
293 'retry': {'count': 3, 'delay': 5},
294 'skip_fail': False,
295 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300296 {
297 'description': "Check glance on ctl01",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300298 'cmd': ("source ~/keystonerc;"
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300299 "wget http://download.cirros-cloud.net/0.3.4/"
300 "cirros-0.3.4-i386-disk.img;"
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300301 "glance image-create --name 'cirros-0.3.4'"
302 " --disk-format qcow2 --container-format bare"
303 " --progress --file /root/cirros-0.3.4-i386-disk.img;"
304 "glance image-list;"),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300305 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300306 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300307 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300308 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300309 {
310 'description': "Check keystone fernet keys on controllers",
311 'cmd': (salt_cmd + "'ctl*' cmd.run 'ls -la"
312 " /var/lib/keystone/fernet-keys' "),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300313 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300314 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300315 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300316 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300317 {
318 'description': "Install cinder on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300319 'cmd': salt_cmd + "'ctl*' cinder",
320 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300321 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300322 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300323 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300324 {
325 'description': "Install nova on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300326 'cmd': salt_cmd + "'ctl*' nova",
327 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300328 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300329 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300330 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300331 {
332 'description': "Check cinder status",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300333 'cmd': "source ~/keystonerc; cinder list",
334 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300335 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300336 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300337 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300338 {
339 'description': "Check nova services status",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300340 'cmd': "source ~/keystonerc; nova-manage service list",
341 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300342 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300343 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300344 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300345 {
346 'description': "Check nova status",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300347 'cmd': "source ~/keystonerc; nova list",
348 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300349 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300350 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300351 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300352 {
353 'description': "Install neutron on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300354 'cmd': salt_cmd + "'ctl*' state.sls neutron",
355 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300356 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300357 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300358 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300359 {
360 'description': "Create a neutron subnet",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300361 'cmd': ("source ~/keystonerc;"
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300362 "neutron net-create --router:external=true"
363 " --shared external;"
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300364 "neutron subnet-create external 10.177.0.0/24;"
365 "neutron floatingip-create;"),
366 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300367 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300368 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300369 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300370 {
371 'description': "Install contrail database on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300372 'cmd': salt_cmd + "'ctl*' state.sls opencontrail.database",
373 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
374 'retry': {'count': 3, 'delay': 5},
375 'skip_fail': False,
376 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300377 {
378 'description': "Check cassandra status on ctl01",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300379 'cmd': ("nodetool status;"
380 "nodetool compactionstats;"
381 "nodetool describecluster;"),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300382 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300383 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300384 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300385 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300386 ]
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300387
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300388
389 @pytest.mark.steps(steps_mk22_lab_advanced)
Dennis Dmitriev6f59add2016-10-18 13:45:27 +0300390 @pytest.mark.revert_snapshot(ext.SNAPSHOT.underlay)
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300391 # @pytest.mark.snapshot_needed
392 # @pytest.mark.fail_snapshot
393 def test_tcp_install_default(self, underlay, tcp_actions, steps, show_step):
Dennis Dmitriev6f59add2016-10-18 13:45:27 +0300394 """Test for deploying an tcp environment and check it
395
Dennis Dmitriev6f59add2016-10-18 13:45:27 +0300396 Scenario:
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300397 1. Prepare salt on hosts
398 2. Setup controller nodes
399 3. Setup compute nodes
Dennis Dmitriev6f59add2016-10-18 13:45:27 +0300400
Dennis Dmitriev75fce1b2016-10-18 15:04:28 +0300401 """
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300402 for n, step in enumerate(steps):
403 LOG.info(" ####################################################")
404 LOG.info(" *** [ STEP #{0} ] {1} ***"
405 .format(n+1, step['description']))
406
407 with underlay.remote(node_name=step['node_name']) as remote:
408 for x in range(step['retry']['count'], 0, -1):
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300409
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300410 result = remote.execute(step['cmd'], verbose=True)
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300411
412 # Workaround of exit code 0 from salt in case of failures
413 failed = 0
414 for s in result['stdout']:
415 if s.startswith("Failed:"):
416 failed += int(s.split("Failed:")[1])
417
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300418 if result.exit_code != 0:
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300419 time.sleep(step['retry']['delay'])
420 LOG.info(" === RETRY ({0}/{1}) ========================="
421 .format(x-1, step['retry']['count']))
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300422 elif failed != 0:
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300423 LOG.error(" === SALT returned exit code = 0 while "
424 "there are failed modules! ===")
425 LOG.info(" === RETRY ({0}/{1}) ======================="
426 .format(x-1, step['retry']['count']))
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300427 else:
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300428 # Workarounds for crashed services
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300429 tcp_actions.check_salt_service(
430 "salt-master",
431 "cfg01.mk22-lab-advanced.local",
432 "salt-call pillar.items") # Hardcoded for now
433 tcp_actions.check_salt_service(
434 "salt-minion",
435 "cfg01.mk22-lab-advanced.local",
436 "salt 'cfg01*' pillar.items") # Hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300437 break
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300438
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300439 if x == 1 and step['skip_fail'] == False:
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300440 # In the last retry iteration, raise an exception
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300441 raise Exception("Step '{0}' failed"
442 .format(step['description']))