def cleanup_environment(env_id): env = objects.Environment(env_id) nodes = env.get_all_nodes() for node in nodes: node_util.remove_compute_upgrade_levels(node) controller = env_util.get_one_controller(env) sftp = ssh.sftp(controller) admin_pass = env_util.get_admin_password(env, controller) script_filename = 'clean_env.py' with ssh.tempdir(controller) as tempdir: script_src_filename = os.path.join(magic_consts.CWD, "helpers", script_filename) script_dst_filename = os.path.join(tempdir, script_filename) sftp.put(script_src_filename, script_dst_filename) command = [ 'sh', '-c', '. /root/openrc; export OS_PASSWORD={0}; python {1}'.format( admin_pass, script_dst_filename), ] with ssh.popen(command, node=controller, stdin=ssh.PIPE) as proc: roles = ["controller", "compute"] for node in env_util.get_nodes(env, roles): data = "{0}\n{1}\n".format(node.data['fqdn'].split('.')[0], node.data['fqdn']) proc.stdin.write(data)
def cleanup_environment(env_id): env = objects.Environment(env_id) controller = env_util.get_one_controller(env) sftp = ssh.sftp(controller) admin_pass = env_util.get_admin_password(env, controller) script_filename = 'clean_env.py' with ssh.tempdir(controller) as tempdir: script_src_filename = os.path.join( magic_consts.CWD, "helpers", script_filename) script_dst_filename = os.path.join(tempdir, script_filename) sftp.put(script_src_filename, script_dst_filename) command = [ 'sh', '-c', '. /root/openrc; export OS_PASSWORD={0}; python {1}' .format(admin_pass, script_dst_filename), ] with ssh.popen(command, node=controller, stdin=ssh.PIPE) as proc: roles = ["controller", "compute"] for node in env_util.get_nodes(env, roles): data = "{0}\n{1}\n".format(node.data['fqdn'].split('.')[0], node.data['fqdn']) proc.stdin.write(data)
def upgrade_osd(orig_env_id, seed_env_id, user, password): with fuel_client.set_auth_context( backup_restore.NailgunCredentialsContext(user, password)): orig_env = env_obj.Environment(orig_env_id) nodes = list(env.get_nodes(orig_env, ["ceph-osd"])) seed_env = env_obj.Environment(seed_env_id) preference_priority = get_repo_highest_priority(orig_env) seed_repos = get_repos_for_upgrade(orig_env, seed_env) if not nodes: LOG.info("Nothing to upgrade") return controller = env.get_one_controller(seed_env) if is_same_versions_on_mon_and_osd(controller): LOG.warn("MONs and OSDs have the same version, nothing to upgrade.") return hostnames = [n.data['hostname'] for n in nodes] with applied_repos(nodes, preference_priority + 1, seed_repos): call_node = nodes[0] ssh.call(["ceph", "osd", "set", "noout"], node=call_node) ssh.call(['ceph-deploy', 'install', '--release', 'hammer'] + hostnames, node=call_node) for node in nodes: ssh.call(["restart", "ceph-osd-all"], node=node) ssh.call(["ceph", "osd", "unset", "noout"], node=call_node) waiting_until_ceph_up(controller) if not is_same_versions_on_mon_and_osd(controller): msg = "OSDs not upgraded up to MONs version, please fix the problem" LOG.error(msg) raise Exception(msg)
def cleanup_environment(env_id): env = objects.Environment(env_id) controller = env_util.get_one_controller(env) nodes = env_util.get_nodes(env, ['controller', 'compute']) for node in nodes: node_util.remove_compute_upgrade_levels(node) node_util.restart_nova_services(node) clean_services_for_node(controller, node)
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 cleanup_environment(env_id): env = objects.Environment(env_id) controller = env_util.get_one_controller(env) sftp = ssh.sftp(controller) script_filename = 'clean_env.py' script_dst_filename = '/tmp/{0}'.format(script_filename) sftp.put( os.path.join(magic_consts.CWD, "helpers/{0}".format(script_filename)), script_dst_filename, ) command = ['sh', '-c', '. /root/openrc; export OS_PASSWORD=admin; python ' + script_dst_filename] with ssh.popen(command, node=controller, stdin=ssh.PIPE) as proc: roles = ["controller", "compute"] for node in env_util.get_nodes(env, roles): proc.stdin.write(node.data['fqdn']+"\n") ssh.call(['rm', '-f', script_dst_filename], node=controller)