Python part for osd-upgrade with graph

Change-Id: I7896e705fbb2911fe3446c59d25fd70c5d808c7a
This commit is contained in:
Dmitry Nikishov 2016-10-17 17:25:45 +03:00
parent 0dfe021b41
commit 064ed577d4
2 changed files with 51 additions and 5 deletions

View File

@ -20,10 +20,12 @@ import time
from cliff import command as cmd
from fuelclient.objects import environment as env_obj
from fuelclient.objects import release as rel_obj
from octane.handlers import backup_restore
from octane import magic_consts
from octane.util import apt
from octane.util import deployment as deploy
from octane.util import env
from octane.util import fuel_client
from octane.util import ssh
@ -183,6 +185,17 @@ def get_repos_for_upgrade(orig_env, seed_env):
return results
def add_upgrade_attrs_to_settings(env, repos, ceph_rel, hosts):
attrs = env.get_settings_data()
attrs['editable']['repo_setup']['upgrade_osd'] = {'value': repos,
'type': 'hidden'}
attrs['editable']['common']['ceph_upgrade_release'] = {'value': ceph_rel,
'type': 'hidden'}
attrs['editable']['common']['ceph_upgrade_hostnames'] = {'value': hosts,
'type': 'hidden'}
env.set_settings_data(attrs)
def upgrade_osd(orig_env_id, seed_env_id, user, password):
with fuel_client.set_auth_context(
backup_restore.NailgunCredentialsContext(user, password)):
@ -214,6 +227,26 @@ def upgrade_osd(orig_env_id, seed_env_id, user, password):
raise Exception(msg)
def upgrade_osd_with_graph(orig_env_id, seed_env_id):
orig_env = env_obj.Environment(orig_env_id)
seed_env = env_obj.Environment(seed_env_id)
seed_repos = get_repos_for_upgrade(orig_env, seed_env)
seed_rel = rel_obj.Release(seed_env.data['release_id'])
ceph_rel = magic_consts.CEPH_RELEASES.get(seed_rel.data['version'])
osd_nodes = list(env.get_nodes(orig_env, ["ceph-osd"]))
hostnames = [n.data['hostname'] for n in osd_nodes]
add_upgrade_attrs_to_settings(orig_env, seed_repos, ceph_rel, hostnames)
add_upgrade_attrs_to_settings(seed_env, seed_repos, ceph_rel, hostnames)
deploy.upload_graph(orig_env_id, 'orig')
deploy.upload_graph(seed_env_id, 'seed')
deploy.execute_graph_and_wait('upgrade-osd-pre', orig_env_id)
deploy.execute_graph_and_wait('upgrade-osd', seed_env_id)
deploy.execute_graph_and_wait('upgrade-osd-post', orig_env_id)
class UpgradeOSDCommand(cmd.Command):
"""Upgrade osd servers"""
@ -236,11 +269,20 @@ class UpgradeOSDCommand(cmd.Command):
dest="admin_password",
required=True,
help="Fuel admin password")
parser.add_argument(
'--with-graph', action='store_true',
help='EXPERIMENTAL: Use Fuel deployment graphs'
' instead of python-based commands.')
return parser
def take_action(self, parsed_args):
upgrade_osd(
parsed_args.orig_env_id,
parsed_args.seed_env_id,
'admin',
parsed_args.admin_password)
if parsed_args.with_graph:
upgrade_osd_with_graph(
parsed_args.orig_env_id,
parsed_args.seed_env_id)
else:
upgrade_osd(
parsed_args.orig_env_id,
parsed_args.seed_env_id,
'admin',
parsed_args.admin_password)

View File

@ -169,3 +169,7 @@ COMPUTE_PREUPGRADE_PACKAGES = {
ASTUTE_YAML = "/etc/fuel/astute.yaml"
CINDER_CONF = "/etc/cinder/cinder.conf"
CEPH_RELEASES = {'kilo-7.0': 'firefly',
'liberty-8.0': 'hammer',
'mitaka-9.0': 'hammer'}