Call upgrade_release for cluster upgrade tests

Call upgrade_release for cluster upgrade tests:
 fuel2 release clone $ORIG_ID $RELEASE_ID -f value -c id

Change-Id: I0a010bdce97a754982de4cd734a32fb74ab15067
This commit is contained in:
Alexey Stepanov 2016-08-30 08:39:16 +03:00
parent abc20bf8cb
commit 72326563e7
3 changed files with 83 additions and 16 deletions

View File

@ -240,6 +240,15 @@ class NailgunClient(object):
return self._put(
url="/nodes/{}/disks".format(node_id), json=data).json()
@logwrap
def get_deployable_releases(self):
return sorted(
[
release for release
in self.get_releases() if release['is_deployable']],
key=lambda rel: rel['id']
)
@logwrap
def get_release_id(self, release_name=OPENSTACK_RELEASE):
for release in self.get_releases():

View File

@ -35,7 +35,8 @@ class TestOSupgrade(OSUpgradeBase):
Scenario:
1. Revert snapshot upgrade_ceph_ha_restore
2. Run "octane upgrade-env <orig_env_id>"
2. Run fuel2 release clone <orig_env_id>
3. Run "octane upgrade-env <orig_env_id> <RELEASE_ID>"
3. Ensure that new cluster was created with correct release
"""
@ -44,7 +45,23 @@ class TestOSupgrade(OSUpgradeBase):
self.env.revert_snapshot("upgrade_ceph_ha_restore")
self.install_octane()
self.upgrade_env_code()
release_id = self.upgrade_release(use_net_template=False)
logger.info(
'Releases available for deploy:\n'
'{}'.format(
''.join(
map(
lambda release: '\t{:<4}: {}\n'.format(
release["id"], release['name']),
self.fuel_web.client.get_deployable_releases()
)
)
)
)
logger.info('RELEASE ID for env upgrade: {}'.format(release_id))
self.upgrade_env_code(release_id=release_id)
self.env.make_snapshot("os_upgrade_env", is_make=True)

View File

@ -96,25 +96,66 @@ class OSUpgradeBase(DataDrivenUpgradeBase):
raise RuntimeError('old_cluster_name is not set')
return self.fuel_web.client.get_cluster_id(self.old_cluster_name)
def upgrade_env_code(self):
def upgrade_release(self, use_net_template=False):
self.show_step(self.next_step)
self.ssh_manager.check_call(
ip=self.env.get_admin_node_ip(),
command="octane upgrade-env {0}".format(self.orig_cluster_id),
error_info="'upgrade-env' command failed, inspect logs for details"
if not use_net_template:
return int(
self.ssh_manager.check_call(
ip=self.env.get_admin_node_ip(),
command='fuel2 release clone {0} {1} '
'-f value -c id'.format(
self.orig_cluster_id,
self.fuel_web.client.get_release_id()
),
error_info='RELEASE_ID clone failed'
).stdout_str
)
else:
raise NotImplementedError(
'Upgrade with network templates is not supported now')
def upgrade_env_code(self, release_id):
self.show_step(self.next_step)
seed_id = int(
self.ssh_manager.check_call(
ip=self.env.get_admin_node_ip(),
command="octane upgrade-env {0} {1}".format(
self.orig_cluster_id,
release_id
),
error_info="'upgrade-env' command failed, "
"inspect logs for details"
).stdout_str)
new_cluster_id = int(self.fuel_web.get_last_created_cluster())
assert_not_equal(
self.orig_cluster_id, seed_id,
"Cluster IDs are the same: old={} and new={}".format(
self.orig_cluster_id, seed_id))
assert_equal(
seed_id,
new_cluster_id,
"Cluster ID was changed, but it's not the last:"
" abnormal activity or configuration error presents!\n"
"\tSEED ID: {}\n"
"\tLAST ID: {}".format(seed_id, new_cluster_id)
)
new_cluster_id = self.fuel_web.get_last_created_cluster()
assert_not_equal(
self.orig_cluster_id, new_cluster_id,
"Cluster IDs are the same: {!r} and {!r}".format(
self.orig_cluster_id, new_cluster_id))
cluster_release_id = int(
self.fuel_web.get_cluster_release_id(seed_id)
)
self.show_step(self.next_step)
assert_equal(
self.fuel_web.get_cluster_release_id(new_cluster_id),
self.fuel_web.client.get_release_id(
release_name='Mitaka on Ubuntu 14.04'))
cluster_release_id,
release_id,
"Release ID {} is not equals to expected {}".format(
cluster_release_id,
release_id
)
)
def upgrade_first_controller_code(self, seed_cluster_id):
self.show_step(self.next_step)