blob: 685d3e98942e6c9410dda1451ed5eb45bc0c6758 [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 Dmitriev3bf410e2016-10-26 20:22:04 +030041 'cmd': salt_call_cmd + "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 Dmitriev3bf410e2016-10-26 20:22:04 +030048 'cmd': (salt_call_cmd + "state.sls openssh;"
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +030049 "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 Dmitriev3bf410e2016-10-26 20:22:04 +030066 'cmd': salt_call_cmd + " 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 Dmitriev3bf410e2016-10-26 20:22:04 +030069 'skip_fail': True,
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 Dmitriev3bf410e2016-10-26 20:22:04 +030081 'cmd': salt_call_cmd + "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 {
Dennis Dmitriev3bf410e2016-10-26 20:22:04 +030094 'description': ("*Workaround* for the bug"
95 " https://mirantis.jira.com/browse/PROD-8025"),
96 'cmd': (salt_cmd + "'*' cmd.run 'apt-get update &&"
97 " apt-get -y upgrade'"),
98 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
99 'retry': {'count': 3, 'delay': 5},
100 'skip_fail': False,
101 },
102 {
103 'description': ("*Workaround* for the bug"
104 " https://mirantis.jira.com/browse/PROD-8021"),
105 'cmd': (salt_cmd + "'*' cmd.run 'apt-get -y install"
106 " linux-image-extra-$(uname -r)'"),
107 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
108 'retry': {'count': 3, 'delay': 5},
109 'skip_fail': False,
110 },
111 {
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300112 'description': "Configure ntp on controllers",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300113 'cmd': salt_cmd + "'ctl*' state.sls ntp",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300114 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev7080d8d2016-10-26 13:43:37 +0300115 'retry': {'count': 5, 'delay': 10},
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 linux on controllers",
120 'cmd': salt_cmd + "'ctl*' state.sls linux",
121 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
122 'retry': {'count': 5, 'delay': 5},
123 'skip_fail': False,
124 },
125 {
126 'description': "Configure openssh on controllers",
127 'cmd': (salt_cmd + "'ctl*' state.sls openssh;"
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300128 + salt_cmd + "'ctl*' cmd.run "
129 "\"sed -i 's/PasswordAuthentication no/"
130 "PasswordAuthentication yes/' /etc/ssh/sshd_config && "
131 "service ssh restart\""),
132 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300133 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300134 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300135 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300136 {
137 'description': "Configure salt.minion on controllers",
138 'cmd': salt_cmd + "'ctl*' state.sls salt.minion",
139 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
140 'retry': {'count': 3, 'delay': 5},
141 'skip_fail': False,
142 },
143 {
144 'description': "Install keepalived on primary controller",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300145 'cmd': salt_cmd + "'ctl01*' state.sls keepalived",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300146 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300147 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300148 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300149 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300150 {
151 'description': "Show VIP on primary controller",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300152 'cmd': salt_cmd + "'ctl01*' cmd.run 'ip a'",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300153 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300154 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300155 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300156 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300157 {
158 'description': "Install keepalived on other controllers",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300159 'cmd': salt_cmd + "'ctl0[23].*' state.sls keepalived",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300160 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300161 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300162 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300163 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300164 {
165 'description': "Install glusterfs on all controllers",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300166 'cmd': salt_cmd + "'ctl*' state.sls glusterfs.server.service",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300167 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300168 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300169 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300170 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300171 {
172 'description': "Setup glusterfs on primary controller",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300173 'cmd': salt_call_cmd + "state.sls glusterfs.server.setup",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300174 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300175 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300176 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300177 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300178 {
179 'description': "Show glusterfs peer status",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300180 'cmd': "gluster peer status",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300181 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300182 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300183 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300184 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300185 {
186 'description': "Show glusterfs volume status",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300187 'cmd': "gluster volume status",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300188 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300189 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300190 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300191 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300192 {
193 'description': "Install RabbitMQ on all controllers",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300194 'cmd': salt_cmd + "'ctl*' state.sls rabbitmq",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300195 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300196 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300197 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300198 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300199 {
200 'description': ("*Workaround* Update salt-formula-galera on"
201 " config node to the latest version"),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300202 'cmd': "apt-get -y --force-yes install salt-formula-galera",
203 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300204 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300205 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300206 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300207 {
208 'description': "Install Galera on primary controller",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300209 'cmd': salt_call_cmd + "state.sls galera",
210 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300211 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300212 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300213 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300214 {
215 'description': "Install Galera on other controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300216 'cmd': salt_cmd + "'ctl0[23]*' state.sls galera",
217 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300218 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300219 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300220 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300221 {
222 'description': "Check Galera addresses",
223 'cmd': (salt_cmd + "'ctl01*' mysql.status |"
224 " grep -A1 'wsrep_incoming_addresses:'"),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300225 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300226 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300227 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300228 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300229 {
230 'description': "Install haproxy on all controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300231 'cmd': salt_cmd + "'ctl*' state.sls haproxy",
232 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300233 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300234 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300235 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300236 {
237 'description': "Check haproxy on all controllers with Galera port",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300238 'cmd': salt_cmd + "'ctl*' cmd.run 'netstat -tulnp | grep 3306'",
239 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300240 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300241 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300242 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300243 {
244 'description': "Install memcached and keystone on ctl01",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300245 'cmd': salt_call_cmd + "state.sls memcached,keystone",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300246 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300247 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300248 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300249 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300250 {
251 'description': "Install memcached and keystone on ctl02",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300252 'cmd': salt_call_cmd + "state.sls memcached,keystone",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300253 'node_name': 'ctl02.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300254 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300255 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300256 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300257 {
258 'description': "Install memcached and keystone on ctl03",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300259 'cmd': salt_call_cmd + "state.sls memcached,keystone",
260 'node_name': 'ctl03.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300261 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300262 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300263 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300264 {
Dennis Dmitriev3bf410e2016-10-26 20:22:04 +0300265 'description': "Configure keystone client access from cfg01 node",
266 'cmd': salt_call_cmd + "state.sls keystone.client",
267 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
268 'retry': {'count': 3, 'delay': 5},
269 'skip_fail': False,
270 },
271 {
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300272 'description': "Check keystone user-list",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300273 'cmd': "source ~/keystonerc; keystone user-list",
274 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300275 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300276 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300277 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300278 {
279 'description': "Check keystone tenant-list",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300280 'cmd': "source ~/keystonerc; keystone tenant-list",
281 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300282 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300283 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300284 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300285 {
286 'description': "Check keystone endpoint-list",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300287 'cmd': "source ~/keystonerc; keystone endpoint-list",
288 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300289 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300290 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300291 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300292 {
293 'description': "Install glance on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300294 'cmd': salt_cmd + "'ctl*' state.sls glance",
295 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300296 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300297 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300298 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300299 {
300 'description': "Install glusterfs on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300301 'cmd': salt_cmd + "'ctl*' state.sls glusterfs.client",
302 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300303 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300304 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300305 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300306 {
307 'description': "Check that glusterfs was added on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300308 'cmd': salt_cmd + "'ctl*' cmd.run 'df -h'",
309 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300310 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300311 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300312 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300313 {
314 'description': ("*Workaround* Re-run keystone formula on ctl01 to"
315 " create fernet keys"),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300316 'cmd': salt_call_cmd + "state.sls keystone",
317 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
318 'retry': {'count': 3, 'delay': 5},
319 'skip_fail': False,
320 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300321 {
322 'description': "Check glance on ctl01",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300323 'cmd': ("source ~/keystonerc;"
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300324 "wget http://download.cirros-cloud.net/0.3.4/"
325 "cirros-0.3.4-i386-disk.img;"
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300326 "glance image-create --name 'cirros-0.3.4'"
327 " --disk-format qcow2 --container-format bare"
328 " --progress --file /root/cirros-0.3.4-i386-disk.img;"
329 "glance image-list;"),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300330 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300331 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300332 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300333 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300334 {
335 'description': "Check keystone fernet keys on controllers",
336 'cmd': (salt_cmd + "'ctl*' cmd.run 'ls -la"
337 " /var/lib/keystone/fernet-keys' "),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300338 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300339 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300340 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300341 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300342 {
343 'description': "Install cinder on controllers",
Dennis Dmitriev3bf410e2016-10-26 20:22:04 +0300344 'cmd': salt_cmd + "'ctl*' state.sls cinder",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300345 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300346 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300347 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300348 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300349 {
350 'description': "Install nova on controllers",
Dennis Dmitriev3bf410e2016-10-26 20:22:04 +0300351 'cmd': salt_cmd + "'ctl*' state.sls nova",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300352 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300353 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300354 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300355 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300356 {
357 'description': "Check cinder status",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300358 'cmd': "source ~/keystonerc; cinder list",
359 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300360 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300361 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300362 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300363 {
364 'description': "Check nova services status",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300365 'cmd': "source ~/keystonerc; nova-manage service list",
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': "Check nova status",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300372 'cmd': "source ~/keystonerc; nova list",
373 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300374 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300375 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300376 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300377 {
378 'description': "Install neutron on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300379 'cmd': salt_cmd + "'ctl*' state.sls neutron",
380 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300381 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300382 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300383 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300384 {
385 'description': "Create a neutron subnet",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300386 'cmd': ("source ~/keystonerc;"
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300387 "neutron net-create --router:external=true"
388 " --shared external;"
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300389 "neutron subnet-create external 10.177.0.0/24;"
390 "neutron floatingip-create;"),
391 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300392 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300393 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300394 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300395 {
396 'description': "Install contrail database on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300397 'cmd': salt_cmd + "'ctl*' state.sls opencontrail.database",
398 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
399 'retry': {'count': 3, 'delay': 5},
400 'skip_fail': False,
401 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300402 {
403 'description': "Check cassandra status on ctl01",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300404 'cmd': ("nodetool status;"
405 "nodetool compactionstats;"
406 "nodetool describecluster;"),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300407 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300408 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300409 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300410 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300411 ]
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300412
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300413
414 @pytest.mark.steps(steps_mk22_lab_advanced)
Dennis Dmitriev6f59add2016-10-18 13:45:27 +0300415 @pytest.mark.revert_snapshot(ext.SNAPSHOT.underlay)
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300416 # @pytest.mark.snapshot_needed
417 # @pytest.mark.fail_snapshot
418 def test_tcp_install_default(self, underlay, tcp_actions, steps, show_step):
Dennis Dmitriev6f59add2016-10-18 13:45:27 +0300419 """Test for deploying an tcp environment and check it
420
Dennis Dmitriev6f59add2016-10-18 13:45:27 +0300421 Scenario:
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300422 1. Prepare salt on hosts
423 2. Setup controller nodes
424 3. Setup compute nodes
Dennis Dmitriev6f59add2016-10-18 13:45:27 +0300425
Dennis Dmitriev75fce1b2016-10-18 15:04:28 +0300426 """
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300427 for n, step in enumerate(steps):
428 LOG.info(" ####################################################")
429 LOG.info(" *** [ STEP #{0} ] {1} ***"
430 .format(n+1, step['description']))
431
432 with underlay.remote(node_name=step['node_name']) as remote:
433 for x in range(step['retry']['count'], 0, -1):
Dennis Dmitriev3bf410e2016-10-26 20:22:04 +0300434 time.sleep(3)
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300435 result = remote.execute(step['cmd'], verbose=True)
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300436
437 # Workaround of exit code 0 from salt in case of failures
438 failed = 0
439 for s in result['stdout']:
440 if s.startswith("Failed:"):
441 failed += int(s.split("Failed:")[1])
442
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300443 if result.exit_code != 0:
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300444 time.sleep(step['retry']['delay'])
445 LOG.info(" === RETRY ({0}/{1}) ========================="
446 .format(x-1, step['retry']['count']))
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300447 elif failed != 0:
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300448 LOG.error(" === SALT returned exit code = 0 while "
449 "there are failed modules! ===")
450 LOG.info(" === RETRY ({0}/{1}) ======================="
451 .format(x-1, step['retry']['count']))
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300452 else:
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300453 # Workarounds for crashed services
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300454 tcp_actions.check_salt_service(
455 "salt-master",
456 "cfg01.mk22-lab-advanced.local",
Dennis Dmitriev3bf410e2016-10-26 20:22:04 +0300457 "salt-call pillar.items",
458 'active (running)') # Hardcoded for now
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300459 tcp_actions.check_salt_service(
460 "salt-minion",
461 "cfg01.mk22-lab-advanced.local",
Dennis Dmitriev3bf410e2016-10-26 20:22:04 +0300462 "salt 'cfg01*' pillar.items",
463 "active (running)") # Hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300464 break
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300465
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300466 if x == 1 and step['skip_fail'] == False:
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300467 # In the last retry iteration, raise an exception
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300468 raise Exception("Step '{0}' failed"
469 .format(step['description']))