def upgrade_ceph_with_graph(orig_id, seed_id): """Upgrade ceph using deployment graphs""" deploy.upload_graphs(orig_id, seed_id) deploy.execute_graph_and_wait('upgrade-ceph', orig_id) deploy.execute_graph_and_wait('upgrade-ceph', seed_id)
def preupgrade_compute_with_graph(release_id, node_ids): nodes = [objects.node.Node(node_id) for node_id in node_ids] release = objects.Release(release_id) check_sanity(nodes, release) master_ip = helpers.get_astute_dict()["ADMIN_NETWORK"]['ipaddress'] repos = get_repos(release, master_ip) packages = get_package_list(release) env_id = nodes[0].env.id env = objects.environment.Environment(env_id) # Add following data to cluster attributes: # - new repositories # - list of packages to be updated add_upgrade_attrs_to_settings(env, repos, packages) deploy.upload_graph(env_id, "orig") deploy.execute_graph_and_wait('preupgrade-compute', env_id, node_ids)
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)
def upgrade_db_with_graph(orig_id, seed_id): """Upgrade db using deployment graphs.""" orig_env = environment_obj.Environment(orig_id) seed_env = environment_obj.Environment(seed_id) add_upgrade_attrs_to_settings(orig_env, seed_env) # Upload all graphs deploy.upload_graphs(orig_id, seed_id) # If any failure try to rollback ONLY original environment. try: deploy.execute_graph_and_wait("upgrade-db", orig_id) deploy.execute_graph_and_wait("upgrade-db", seed_id) except Exception: cluster_graphs = deploy.get_cluster_graph_names(orig_id) if "upgrade-db-rollback" in cluster_graphs: LOG.info("Trying to rollback 'upgrade-db' on the " "orig environment '%s'.", orig_id) deploy.execute_graph_and_wait("upgrade-db-rollback", orig_id) raise
def execute_graph(): deployment.execute_graph_and_wait(graph_name, env_id, attempts=attempts)
def upgrade_control_plane_with_graph(orig_id, seed_id): """Switch controlplane using deployment graphs""" orig_env = environment_obj.Environment(orig_id) seed_env = environment_obj.Environment(seed_id) add_upgrade_attrs_to_settings(orig_env, seed_env) deploy.upload_graphs(orig_id, seed_id) try: # Start openstack services on the seed controller deploy.execute_graph_and_wait('switch-control-1', seed_id) # Kill pacemaker on the original controllers deploy.execute_graph_and_wait('switch-control-1', orig_id) # Cut off the original controller from network roles = ['primary-controller', 'controller'] for node, info in env_util.iter_deployment_info(orig_env, roles): network.delete_patch_ports(node, info) # Restore transformations for the seed environment seed_env.delete_facts("deployment") # Connect the seed controller to a physical network deploy.execute_graph_and_wait('switch-control-2', seed_id) # Decommission the orig controllers by stopping OpenStack services deploy.execute_graph_and_wait('switch-control-2', orig_id) except Exception: LOG.info('Trying to rollback switch-control phase') # Cut off the seed controller from networks roles = ['primary-controller', 'controller'] for info in seed_env.get_default_facts('deployment'): if set(info['roles']) & set(roles): network.delete_patch_ports(node_obj.Node(info['uid']), info) # Restore network connectivity for the original controller # Recreate cluster deploy.execute_graph_and_wait('switch-control-rollback', orig_id) # Stop openstack services on the seed controller deploy.execute_graph_and_wait('switch-control-rollback', seed_id) raise