Example #1
0
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)
Example #3
0
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)
Example #4
0
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