예제 #1
0
    def undo(self, workflow_dict):
        LOG.info("Running undo...")
        try:

            script = build_stop_database_script()
            script = build_context_script({}, script)
            for target_instance in workflow_dict['target_instances']:
                target_host = target_instance.hostname
                target_cs_host_attr = CS_HostAttr.objects.get(host=target_host)
                output = {}
                exec_remote_command(server=target_host.address,
                                    username=target_cs_host_attr.vm_user,
                                    password=target_cs_host_attr.vm_password,
                                    command=script,
                                    output=output)
                LOG.info(output)

            try:
                if 'region_migration_dir_infra_name' in workflow_dict:
                    shutil.rmtree(workflow_dict['region_migration_dir_infra_name'])
            except Exception:
                pass

            return True
        except Exception:
            traceback = full_stack()

            workflow_dict['exceptions']['error_codes'].append(DBAAS_0020)
            workflow_dict['exceptions']['traceback'].append(traceback)

            return False
예제 #2
0
    def change_instance_binaries(self, instance, connect_string, run_authschemaupgrade):
        script = test_bash_script_error()
        script += util.build_cp_mongodb_binary_file()
        script += util.build_stop_database_script(clean_data=False)
        script += util.build_change_release_alias_script()
        script += util.build_start_database_script(wait_time=30)
        script += util.build_change_limits_script()
        script += util.build_remove_reprecated_index_counter_metrics()

        if run_authschemaupgrade:
            script += util.build_authschemaupgrade_script()

        context_dict = {
            'SOURCE_PATH': '/mnt/software/db/mongodb',
            'TARGET_PATH': '/usr/local/',
            'MONGODB_RELEASE_FILE': 'mongodb-linux-x86_64-3.0.8.tgz',
            'MONGODB_RELEASE_FOLDER': 'mongodb-linux-x86_64-3.0.8',
            'CONNECT_STRING': connect_string,
        }

        script = build_context_script(context_dict, script)
        output = {}

        host = instance.hostname
        cs_host_attr = CS_HostAttr.objects.get(host=host)

        return_code = exec_remote_command(server=host.address,
                                          username=cs_host_attr.vm_user,
                                          password=cs_host_attr.vm_password,
                                          command=script,
                                          output=output)
        LOG.info(output)
        if return_code != 0:
            raise Exception(str(output))
    def change_instance_binaries(self, instance):

        script = test_bash_script_error()
        script += build_change_mongodb_conf_file_script()
        script += build_stop_database_script(clean_data=False)
        script += build_clean_data_data_script()
        script += build_start_database_script()
        script += build_wait_admin_be_created_script()
        script += td_agent_script(option='restart')

        context_dict = {}

        script = build_context_script(context_dict, script)
        output = {}

        host = instance.hostname
        cs_host_attr = CS_HostAttr.objects.get(host=host)

        return_code = exec_remote_command(server=host.address,
                                          username=cs_host_attr.vm_user,
                                          password=cs_host_attr.vm_password,
                                          command=script,
                                          output=output)
        LOG.info(output)
        if return_code != 0:
            raise Exception(str(output))
    def do(self, workflow_dict):
        try:

            instances = workflow_dict['instances']
            databaseinfra = workflow_dict['databaseinfra']

            connect_string = util.build_mongodb_connect_string(instances=instances,
                                                               databaseinfra=databaseinfra)

            script = test_bash_script_error()
            script += util.build_cp_mongodb_binary_file()
            script += util.build_stop_database_script(clean_data=False)
            script += util.build_change_release_alias_script()
            script += util.build_start_database_script()
            script += util.build_authschemaupgrade_script()
            script += util.build_change_limits_script()
            script += util.build_change_in_serverstatus_file_script()
            script += util.build_reinstal_mongo_gen_script()
            script += util.build_remove_reprecated_index_counter_metrics()

            context_dict = {
                'SOURCE_PATH': '/mnt/software/db/mongodb',
                'TARGET_PATH': '/usr/local/',
                'MONGODB_RELEASE_FILE': 'mongodb-linux-x86_64-3.0.8.tgz',
                'MONGODB_RELEASE_FOLDER': 'mongodb-linux-x86_64-3.0.8',
                'CONNECT_STRING': connect_string,
            }

            script = build_context_script(context_dict, script)
            output = {}

            host = instances[0].hostname
            cs_host_attr = CS_HostAttr.objects.get(host=host)

            return_code = exec_remote_command(server=host.address,
                                              username=cs_host_attr.vm_user,
                                              password=cs_host_attr.vm_password,
                                              command=script,
                                              output=output)
            LOG.info(output)
            if return_code != 0:
                raise Exception(str(output))

            return True

        except Exception:
            traceback = full_stack()

            workflow_dict['exceptions']['error_codes'].append(DBAAS_0023)
            workflow_dict['exceptions']['traceback'].append(traceback)

            return False
예제 #5
0
    def do(self, workflow_dict):
        try:

            instances = workflow_dict['instances']
            databaseinfra = workflow_dict['databaseinfra']

            connect_string = util.build_mongodb_connect_string(
                instances=instances, databaseinfra=databaseinfra)

            script = test_bash_script_error()
            script += util.build_cp_mongodb_binary_file()
            script += util.build_stop_database_script(clean_data=False)
            script += util.build_change_release_alias_script()
            script += util.build_start_database_script()
            script += util.build_authschemaupgrade_script()
            script += util.build_addrole_mongo3_script()
            script += util.build_change_limits_script()

            context_dict = {
                'SOURCE_PATH': '/mnt/software/db/mongodb',
                'TARGET_PATH': '/usr/local/',
                'MONGODB_RELEASE_FILE': 'mongodb-linux-x86_64-3.0.12.tgz',
                'MONGODB_RELEASE_FOLDER': 'mongodb-linux-x86_64-3.0.12',
                'CONNECT_STRING': connect_string,
            }

            script = build_context_script(context_dict, script)
            output = {}

            host = instances[0].hostname
            cs_host_attr = CS_HostAttr.objects.get(host=host)

            return_code = exec_remote_command(
                server=host.address,
                username=cs_host_attr.vm_user,
                password=cs_host_attr.vm_password,
                command=script,
                output=output)
            LOG.info(output)
            if return_code != 0:
                raise Exception(str(output))

            return True

        except Exception:
            traceback = full_stack()

            workflow_dict['exceptions']['error_codes'].append(DBAAS_0023)
            workflow_dict['exceptions']['traceback'].append(traceback)

            return False
    def do(self, workflow_dict):
        try:

            instances = workflow_dict['instances']

            script = test_bash_script_error()
            script += build_change_mongodb_conf_file_script()
            script += build_stop_database_script(clean_data=False)
            script += build_clean_data_data_script()
            script += build_start_database_script()
            script += build_mongorestore_database_script()
            script += build_enable_authentication_single_instance_script()
            script += build_restart_database_script()
            script += td_agent_script(option='restart')

            context_dict = {}

            script = build_context_script(context_dict, script)
            output = {}

            host = instances[0].hostname
            cs_host_attr = CS_HostAttr.objects.get(host=host)

            return_code = exec_remote_command(
                server=host.address,
                username=cs_host_attr.vm_user,
                password=cs_host_attr.vm_password,
                command=script,
                output=output)
            LOG.info(output)
            if return_code != 0:
                raise Exception(str(output))

            return True

        except Exception:
            traceback = full_stack()

            workflow_dict['exceptions']['error_codes'].append(DBAAS_0023)
            workflow_dict['exceptions']['traceback'].append(traceback)

            return False