blob: c813f56dae86934a9b5cbf1a015f2881d391e130 [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 {
72 'description': ("Generate inventory for all the nodes to the"
73 " /srv/salt/reclass/nodes/_generated"),
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030074 'cmd': salt_cmd + "'cfg01*' state.sls reclass.storage",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +030075 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030076 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +030077 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030078 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +030079 {
80 'description': "Refresh pillars on all minions",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030081 'cmd': salt_cmd + "'*' saltutil.refresh_pillar",
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': "Configure ntp on controllers",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +030088 'cmd': salt_cmd + "'ctl*' state.sls ntp",
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 linux on controllers",
95 'cmd': salt_cmd + "'ctl*' state.sls linux",
96 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
97 'retry': {'count': 5, 'delay': 5},
98 'skip_fail': False,
99 },
100 {
101 'description': "Configure openssh on controllers",
102 'cmd': (salt_cmd + "'ctl*' state.sls openssh;"
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300103 + salt_cmd + "'ctl*' cmd.run "
104 "\"sed -i 's/PasswordAuthentication no/"
105 "PasswordAuthentication yes/' /etc/ssh/sshd_config && "
106 "service ssh restart\""),
107 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300108 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300109 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300110 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300111 {
112 'description': "Configure salt.minion on controllers",
113 'cmd': salt_cmd + "'ctl*' state.sls salt.minion",
114 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
115 'retry': {'count': 3, 'delay': 5},
116 'skip_fail': False,
117 },
118 {
119 'description': "Install keepalived on primary controller",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300120 'cmd': salt_cmd + "'ctl01*' state.sls keepalived",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300121 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300122 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300123 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300124 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300125 {
126 'description': "Show VIP on primary controller",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300127 'cmd': salt_cmd + "'ctl01*' cmd.run 'ip a'",
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': "Install keepalived on other controllers",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300134 'cmd': salt_cmd + "'ctl0[23].*' state.sls keepalived",
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 glusterfs on all controllers",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300141 'cmd': salt_cmd + "'ctl*' state.sls glusterfs.server.service",
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': "Setup glusterfs on primary controller",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300148 'cmd': salt_call_cmd + "state.sls glusterfs.server.setup",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300149 'node_name': 'ctl01.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': "Show glusterfs peer status",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300155 'cmd': "gluster peer status",
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 volume status",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300162 'cmd': "gluster volume 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': "Install RabbitMQ on all controllers",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300169 'cmd': salt_cmd + "'ctl*' state.sls rabbitmq",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300170 'node_name': 'cfg01.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': ("*Workaround* Update salt-formula-galera on"
176 " config node to the latest version"),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300177 'cmd': "apt-get -y --force-yes install salt-formula-galera",
178 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300179 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300180 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300181 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300182 {
183 'description': "Install Galera on primary controller",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300184 'cmd': salt_call_cmd + "state.sls galera",
185 'node_name': 'ctl01.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 other controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300191 'cmd': salt_cmd + "'ctl0[23]*' state.sls galera",
192 'node_name': 'cfg01.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': "Check Galera addresses",
198 'cmd': (salt_cmd + "'ctl01*' mysql.status |"
199 " grep -A1 'wsrep_incoming_addresses:'"),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300200 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300201 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300202 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300203 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300204 {
205 'description': "Install haproxy on all controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300206 'cmd': salt_cmd + "'ctl*' state.sls haproxy",
207 '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': "Check haproxy on all controllers with Galera port",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300213 'cmd': salt_cmd + "'ctl*' cmd.run 'netstat -tulnp | grep 3306'",
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': "Install memcached and keystone on ctl01",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300220 'cmd': salt_call_cmd + "state.sls memcached,keystone",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300221 'node_name': 'ctl01.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 ctl02",
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': 'ctl02.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 ctl03",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300234 'cmd': salt_call_cmd + "state.sls memcached,keystone",
235 'node_name': 'ctl03.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': "Check keystone user-list",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300241 'cmd': "source ~/keystonerc; keystone user-list",
242 'node_name': 'ctl01.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 tenant-list",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300248 'cmd': "source ~/keystonerc; keystone tenant-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 endpoint-list",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300255 'cmd': "source ~/keystonerc; keystone endpoint-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': "Install glance on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300262 'cmd': salt_cmd + "'ctl*' state.sls glance",
263 'node_name': 'cfg01.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 glusterfs on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300269 'cmd': salt_cmd + "'ctl*' state.sls glusterfs.client",
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': "Check that glusterfs was added on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300276 'cmd': salt_cmd + "'ctl*' cmd.run 'df -h'",
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': ("*Workaround* Re-run keystone formula on ctl01 to"
283 " create fernet keys"),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300284 'cmd': salt_call_cmd + "state.sls keystone",
285 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
286 'retry': {'count': 3, 'delay': 5},
287 'skip_fail': False,
288 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300289 {
290 'description': "Check glance on ctl01",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300291 'cmd': ("source ~/keystonerc;"
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300292 "wget http://download.cirros-cloud.net/0.3.4/"
293 "cirros-0.3.4-i386-disk.img;"
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300294 "glance image-create --name 'cirros-0.3.4'"
295 " --disk-format qcow2 --container-format bare"
296 " --progress --file /root/cirros-0.3.4-i386-disk.img;"
297 "glance image-list;"),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300298 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300299 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300300 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300301 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300302 {
303 'description': "Check keystone fernet keys on controllers",
304 'cmd': (salt_cmd + "'ctl*' cmd.run 'ls -la"
305 " /var/lib/keystone/fernet-keys' "),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300306 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300307 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300308 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300309 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300310 {
311 'description': "Install cinder on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300312 'cmd': salt_cmd + "'ctl*' cinder",
313 '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 nova on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300319 'cmd': salt_cmd + "'ctl*' nova",
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': "Check cinder status",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300326 'cmd': "source ~/keystonerc; cinder list",
327 'node_name': 'ctl01.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 nova services status",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300333 'cmd': "source ~/keystonerc; nova-manage service 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 status",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300340 'cmd': "source ~/keystonerc; nova 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': "Install neutron on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300347 'cmd': salt_cmd + "'ctl*' state.sls neutron",
348 'node_name': 'cfg01.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': "Create a neutron subnet",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300354 'cmd': ("source ~/keystonerc;"
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300355 "neutron net-create --router:external=true"
356 " --shared external;"
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300357 "neutron subnet-create external 10.177.0.0/24;"
358 "neutron floatingip-create;"),
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': "Install contrail database on controllers",
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300365 'cmd': salt_cmd + "'ctl*' state.sls opencontrail.database",
366 'node_name': 'cfg01.mk22-lab-advanced.local', # hardcoded for now
367 'retry': {'count': 3, 'delay': 5},
368 'skip_fail': False,
369 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300370 {
371 'description': "Check cassandra status on ctl01",
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300372 'cmd': ("nodetool status;"
373 "nodetool compactionstats;"
374 "nodetool describecluster;"),
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300375 'node_name': 'ctl01.mk22-lab-advanced.local', # hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300376 'retry': {'count': 3, 'delay': 5},
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300377 'skip_fail': False,
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300378 },
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300379 ]
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300380
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300381
382 @pytest.mark.steps(steps_mk22_lab_advanced)
Dennis Dmitriev6f59add2016-10-18 13:45:27 +0300383 @pytest.mark.revert_snapshot(ext.SNAPSHOT.underlay)
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300384 # @pytest.mark.snapshot_needed
385 # @pytest.mark.fail_snapshot
386 def test_tcp_install_default(self, underlay, tcp_actions, steps, show_step):
Dennis Dmitriev6f59add2016-10-18 13:45:27 +0300387 """Test for deploying an tcp environment and check it
388
Dennis Dmitriev6f59add2016-10-18 13:45:27 +0300389 Scenario:
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300390 1. Prepare salt on hosts
391 2. Setup controller nodes
392 3. Setup compute nodes
Dennis Dmitriev6f59add2016-10-18 13:45:27 +0300393
Dennis Dmitriev75fce1b2016-10-18 15:04:28 +0300394 """
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300395 for n, step in enumerate(steps):
396 LOG.info(" ####################################################")
397 LOG.info(" *** [ STEP #{0} ] {1} ***"
398 .format(n+1, step['description']))
399
400 with underlay.remote(node_name=step['node_name']) as remote:
401 for x in range(step['retry']['count'], 0, -1):
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300402
403 time.sleep(5)
404
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300405 result = remote.execute(step['cmd'], verbose=True)
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300406
407 # Workaround of exit code 0 from salt in case of failures
408 failed = 0
409 for s in result['stdout']:
410 if s.startswith("Failed:"):
411 failed += int(s.split("Failed:")[1])
412
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300413 if result.exit_code != 0:
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300414 time.sleep(step['retry']['delay'])
415 LOG.info(" === RETRY ({0}/{1}) ========================="
416 .format(x-1, step['retry']['count']))
Dennis Dmitriev0ebe9f32016-10-25 11:01:44 +0300417 elif failed != 0:
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300418 LOG.error(" === SALT returned exit code = 0 while "
419 "there are failed modules! ===")
420 LOG.info(" === RETRY ({0}/{1}) ======================="
421 .format(x-1, step['retry']['count']))
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300422 else:
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300423 # Workarounds for crashed services
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300424 tcp_actions.check_salt_service(
425 "salt-master",
426 "cfg01.mk22-lab-advanced.local",
427 "salt-call pillar.items") # Hardcoded for now
428 tcp_actions.check_salt_service(
429 "salt-minion",
430 "cfg01.mk22-lab-advanced.local",
431 "salt 'cfg01*' pillar.items") # Hardcoded for now
Dennis Dmitriev474e3f72016-10-21 16:46:09 +0300432 break
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300433
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300434 if x == 1 and step['skip_fail'] == False:
Dennis Dmitriev423a7ff2016-10-21 18:31:36 +0300435 # In the last retry iteration, raise an exception
Dennis Dmitriev4be178c2016-10-25 13:17:46 +0300436 raise Exception("Step '{0}' failed"
437 .format(step['description']))