Beispiel #1
0
    def set_status_error(self, job_input, error_info):

        # Get JOB Input Parameters
        operation_id = job_input['operation_id']
        if 'apl_table_rec_id' in job_input:
            apl_table_rec_id = job_input['apl_table_rec_id']

            # Get Error Information
            try:
                if hasattr(error_info, 'args'):
                    err_info = json.dumps(error_info.args)
                else:
                    err_info = error_info.__str__()
            except:
                err_info = 'An unexpected error has occurred'

            # Create Instance(DB Client)
            db_update = update.UpdateClient(self.job_config)

            # Get Endpoint(DB Client)
            db_endpoint_apl = self.get_db_endpoint(
                                        self.job_config.REST_URI_APL)

            params = {}
            params['task_status'] = 9
            params['update_id'] = operation_id
            params['err_info'] = err_info
            keys = [apl_table_rec_id]
            db_update.set_context(db_endpoint_apl, keys, params)
            db_update.execute()

        elif 'group_rec_id' in job_input:
            group_rec_id = job_input['group_rec_id']

            # Get Error Information
            try:
                if hasattr(error_info, 'args'):
                    err_info = json.dumps(error_info.args)
                else:
                    err_info = error_info.__str__()
            except:
                err_info = 'An unexpected error has occurred'

            # Create Instance(DB Client)
            db_update = update.UpdateClient(self.job_config)

            # Get Endpoint(DB Client)
            db_endpoint_dc_group = self.get_db_endpoint(
                                self.job_config.REST_URI_WIM_DC_CON_GROUP)

            params = {}
            params['task_status'] = 9
            params['update_id'] = operation_id
            params['err_info'] = err_info
            keys = [group_rec_id]
            db_update.set_context(db_endpoint_dc_group, keys, params)
            db_update.execute()
Beispiel #2
0
    def __withdraw_license(self, job_input, node_id):

        # Get JOB Input Parameters
        operation_id = job_input['data']['operation_id']

        # Get Endpoint(DB Client)
        db_endpoint_license = self.get_db_endpoint(
            self.job_config.REST_URI_LICENSE)

        # Create Instance(DB Client)
        db_list = list.ListClient(self.job_config)
        db_update = update.UpdateClient(self.job_config)

        # List NAL_LICENSE_MNG(DB Client)
        params = {}
        params['status'] = 2
        params['node_id'] = node_id
        params['delete_flg'] = 0
        db_list.set_context(db_endpoint_license, params)
        db_list.execute()
        license_list = db_list.get_return_param()

        # Update NAL_LICENSE_MNG(DB Client)
        for rec in license_list:
            keys = [rec['ID']]
            params = {}
            params['status'] = 3
            params['tenant_name'] = ''
            params['node_id'] = ''
            params['update_id'] = operation_id
            db_update.set_context(db_endpoint_license, keys, params)
            db_update.execute()
Beispiel #3
0
    def __update_db_apl(self,
                        job_input,
                        apl_table_rec_id,
                        msa_device_id='',
                        node_detail={},
                        act_or_sby=''):

        # Get JOB Input Parameters
        operation_id = job_input['operation_id']

        # Get Endpoint(DB Client)
        db_endpoint_apl = self.get_db_endpoint(self.job_config.REST_URI_APL)

        # Create Instance(DB Client)
        db_update = update.UpdateClient(self.job_config)

        # Update NAL_LICENSE_MNG(DB Client)
        keys = [apl_table_rec_id]
        params = {}
        params['update_id'] = operation_id
        if act_or_sby == 'act':
            params['master_MSA_device_id'] = msa_device_id
            params['device_detail_master'] = json.dumps(node_detail)
        elif act_or_sby == 'sby':
            params['slave_MSA_device_id'] = msa_device_id
            params['device_detail_slave'] = json.dumps(node_detail)
        else:
            params['MSA_device_id'] = msa_device_id
            params['node_detail'] = json.dumps(node_detail)

        db_update.set_context(db_endpoint_apl, keys, params)
        db_update.execute()
Beispiel #4
0
    def __update_db_setup_result(self,
                                 job_input, act_sby, db_info, setup_result):

        device_detail_col = self.APL_DEVICE_DETAIL_COL[act_sby]

        # Get JOB Input Parameters
        operation_id = job_input['operation_id']

        # Get Endpoint(DB Client)
        db_endpoint_apl = self.get_db_endpoint(self.job_config.REST_URI_APL)
        db_endpoint_port = self.get_db_endpoint(self.job_config.REST_URI_PORT)

        # Create Instance(DB Client)
        db_update = update.UpdateClient(self.job_config)

        # Update NAL_APL_MNG(DB Client)
        keys = [db_info['apl']['rec_id']]
        params = {}
        params['update_id'] = operation_id
        params['default_gateway'] = setup_result['default_gateway']
        params[device_detail_col] = setup_result['node_detail']
        db_update.set_context(db_endpoint_apl, keys, params)
        db_update.execute()

        # Update NAL_PORT_MNG(DB Client)
        keys = [db_info['port']['rec_id']]
        params = {}
        params['update_id'] = operation_id
        params['msa_info'] = setup_result['msa_info']
        db_update.set_context(db_endpoint_port, keys, params)
        db_update.execute()
Beispiel #5
0
    def __withdraw_global_ip(self, operation_id, global_ip):

        # Get Endpoint(DB Client)
        db_endpoint_global_ip = self.get_db_endpoint(
            self.job_config.REST_URI_GLOBAL_IP)

        # Create Instance(DB Client)
        db_list = list.ListClient(self.job_config)
        db_update = update.UpdateClient(self.job_config)

        # List NAL_GLOBAL_IP_MNG(DB Client)
        params = {}
        params['status'] = 101
        params['delete_flg'] = 0
        params['global_ip'] = global_ip
        db_list.set_context(db_endpoint_global_ip, params)
        db_list.execute()
        global_ip_list = db_list.get_return_param()

        if len(global_ip_list) == 0:
            raise SystemError('global_ip is already deleted.')

        # Update NAL_GLOBAL_IP_MNG(DB Client)
        keys = [global_ip_list[0]['ID']]
        params = {}
        params['status'] = 103
        params['tenant_name'] = ''
        params['node_id'] = ''
        params['update_id'] = operation_id
        db_update.set_context(db_endpoint_global_ip, keys, params)
        db_update.execute()
Beispiel #6
0
    def device_setup_create_vthunder(self, job_input):

        function_name = inspect.currentframe().f_code.co_name

        # Output Log(Job Input)
        self.output_log_job_params(self.LOG_TYPE_INPUT,
                                         __name__, function_name, job_input)

        # Get JOB Input Parameters
        pod_id = job_input['pod_id']
        apl_type = job_input['apl_type']
        nf_type = job_input['type']
        device_type = job_input['device_type']

        # Get DeviceID
        apl_data = self.__get_db_apl(job_input)
        msa_device_id = apl_data['MSA_device_id']

        # Get MSA Config
        msa_config_for_common = self.get_msa_config_for_common(pod_id)
        device_name = self.device_type_to_name(apl_type, nf_type, device_type)
        msa_config_for_device = \
            self.get_msa_config_for_device(pod_id, device_name)

        # Setup System Common Setting
        self.__setup_system_common_vthunder(job_input,
                                             pod_id,
                                             msa_device_id,
                                             msa_config_for_common,
                                             msa_config_for_device)

        # Setup Tenant VLAN Setting
        self.__setup_tenant_vlan_vthunder(job_input,
                                          pod_id,
                                          msa_device_id,
                                          msa_config_for_common,
                                          msa_config_for_device)

        # Get Endpoint(DB Client)
        db_endpoint = self.get_db_endpoint(self.job_config.REST_URI_APL)

        # Create Instance(DB Client)
        db_update = update.UpdateClient(self.job_config)

        # Update NAL_LICENSE_MNG(DB Client)
        keys = [job_input['apl_table_rec_id']]
        params = {}
        params['update_id'] = job_input['operation_id']
        params['default_gateway'] = job_input['fw_ip_address']
        db_update.set_context(db_endpoint, keys, params)
        db_update.execute()

        # Set JOB Output Parameters
        job_output = {}

        # Output Log(Job Output)
        self.output_log_job_params(self.LOG_TYPE_OUTPUT,
                                         __name__, function_name, job_output)

        return job_output
Beispiel #7
0
    def __update_db_apl(self, job_input, node_detail_update):

        # Get JOB Input Parameters
        operation_id = job_input['operation_id']
        node_id = job_input['node_id']

        # Get Endpoint(DB Client)
        db_endpoint = self.get_db_endpoint(self.job_config.REST_URI_APL)

        # Create Instance(DB Client)
        db_list = list.ListClient(self.job_config)
        db_update = update.UpdateClient(self.job_config)

        # List NAL_VNF_MNG(DB Client)
        params = {}
        params['delete_flg'] = 0
        params['node_id'] = node_id
        db_list.set_context(db_endpoint, params)
        db_list.execute()
        apl_list = db_list.get_return_param()

        node_detail_dict = json.loads(apl_list[0]['node_detail'])
        node_detail_dict.update(node_detail_update)

        # Update NAL_LICENSE_MNG(DB Client)
        keys = [apl_list[0]['ID']]
        params = {}
        params['update_id'] = operation_id
        params['node_detail'] = json.dumps(node_detail_dict)
        db_update.set_context(db_endpoint, keys, params)
        db_update.execute()
Beispiel #8
0
    def __update_db_server_task_status_end(self, job_input):

        # Get JOB Input Parameters
        operation_id = job_input['operation_id']
        apl_table_rec_id = job_input['apl_table_rec_id']
        license_key = job_input.get('license_key', '')
        apl_type = job_input['apl_type']

        # Create Instance(DB Client)
        db_update = update.UpdateClient(self.job_config)

        # Get Endpoint(DB Client)
        db_endpoint_apl = self.get_db_endpoint(self.job_config.REST_URI_APL)

        if license_key == '' and \
                str(apl_type) == str(self.job_config.APL_TYPE_VR):
            params = {}
            params['task_status'] = 2
            params['update_id'] = operation_id
            keys = [apl_table_rec_id]
            db_update.set_context(db_endpoint_apl, keys, params)
            db_update.execute()
        else:
            params = {}
            params['task_status'] = 1
            params['update_id'] = operation_id
            keys = [apl_table_rec_id]
            db_update.set_context(db_endpoint_apl, keys, params)
            db_update.execute()
Beispiel #9
0
    def __update_db_port(self, job_input, port_id, msa_info):

        # Get JOB Input Parameters
        operation_id = job_input['operation_id']
        nal_tenant_id = job_input['nal_tenant_id']

        # Get Endpoint(DB Client)
        db_endpoint = self.get_db_endpoint(self.job_config.REST_URI_PORT)

        # Create Instance(DB Client)
        db_list = list.ListClient(self.job_config)
        db_update = update.UpdateClient(self.job_config)

        # List NAL_VNF_MNG(DB Client)
        params = {}
        params['delete_flg'] = 0
        params['tenant_id'] = nal_tenant_id
        params['port_id'] = port_id
        db_list.set_context(db_endpoint, params)
        db_list.execute()
        port_list = db_list.get_return_param()

        # Update NAL_LICENSE_MNG(DB Client)
        keys = [port_list[0]['ID']]
        params = {}
        params['update_id'] = operation_id
        params['msa_info'] = json.dumps(msa_info)
        db_update.set_context(db_endpoint, keys, params)
        db_update.execute()
Beispiel #10
0
    def update_db_license_status(self, device_type, status):

        # Create Instance(DB Client)
        db_list = list.ListClient(config.JobConfig())
        db_update = update.UpdateClient(config.JobConfig())

        # Get Endpoint(DB Client)
        db_endpoint_license = \
            base.JobAutoBase().get_db_endpoint(
                config.JobConfig().REST_URI_LICENSE)

        # Update NAL_LICENSE_MNG
        params = {}
        params['create_id'] = 'test_nw_automation_user_001'
        params['type'] = 2
        params['device_type'] = device_type

        db_list.set_context(db_endpoint_license, params)
        db_list.execute()
        update_license_list = db_list.get_return_param()

        for update_license in update_license_list:
            keys = [update_license['ID']]
            params = {}
            params['status'] = status
            db_update.set_context(db_endpoint_license, keys, params)
            db_update.execute()
Beispiel #11
0
    def __get_device_endpoint_info(self, job_input):
        # Get JOB Input Parameters
        tenant_name = job_input['tenant_name']
        pod_id = job_input['pod_id']
        operation_id = job_input['operation_id']
        dc_id = job_input.get('dc_id', 'system')

        # Get Endpoint(DB Client)
        db_endpoint_tenant = self.get_db_endpoint(
            self.job_config.REST_URI_TENANT)

        # Create Instance(DB Client)
        db_list_instance = list.ListClient(self.job_config)
        db_update_instance = update.UpdateClient(self.job_config)

        # Get Endpoint(OpenStack:VIM)
        endpoint_config = self.nal_endpoint_config[dc_id]['vim'][pod_id]
        admin_tenant_id = endpoint_config['admin_tenant_id']
        admin_tenant_name = endpoint_config['admin_tenant_name']

        # List NAL_TENANT_MNG(DB Client)
        params = {}
        params['tenant_name'] = tenant_name
        params['delete_flg'] = 0
        db_list_instance.set_context(db_endpoint_tenant, params)
        db_list_instance.execute()
        nal_tenant_list = db_list_instance.get_return_param()

        if len(nal_tenant_list) == 0:
            raise SystemError('tenant not exists.')

        rec_id = nal_tenant_list[0]['ID']
        tenant_info = json.loads(nal_tenant_list[0]['tenant_info'])

        tenant_info_wk = {}
        tenant_info_wk['pod_id'] = pod_id
        tenant_info_wk['id'] = admin_tenant_id
        tenant_info_wk['name'] = admin_tenant_name
        tenant_info_wk['msa_customer_name'] = ''
        tenant_info_wk['msa_customer_id'] = 0
        tenant_info.append(tenant_info_wk)

        # Update NAL_VNF_MNG(DB Client):Set DeleteFlg On
        params = {}
        params['update_id'] = operation_id
        params['tenant_info'] = json.dumps(tenant_info)
        keys = [rec_id]
        db_update_instance.set_context(db_endpoint_tenant, keys, params)
        db_update_instance.execute()

        job_output = {
            'nal_tenant_id': admin_tenant_id,
            'nal_tenant_name': admin_tenant_name,
        }

        return job_output
Beispiel #12
0
    def get_or_create_pod_tenant(self, job_input):

        function_name = inspect.currentframe().f_code.co_name

        # Output Log(Job Input)
        self.output_log_job_params(self.LOG_TYPE_INPUT, __name__,
                                   function_name, job_input)

        # Get JOB Input Parameters
        operation_id = job_input['operation_id']
        apl_table_rec_id = job_input.get('apl_table_rec_id', '')
        hard_type = job_input.get('type', '')

        vim_iaas_with_flg = self.get_vim_iaas_with_flg(job_input)

        # Get Tenant(NAL)
        os_tenant_info = self.__get_pod_tenant(job_input)

        if len(os_tenant_info['nal_tenant_id']) == 0:
            if vim_iaas_with_flg == 0:
                # Set TenantInfo(NAL)/Create Tenant(NAL)
                os_tenant_info = self.__create_pod_tenant(job_input)
            else:
                os_tenant_info = self.__get_device_endpoint_info(job_input)
        else:
            pass

        if hard_type in ['1', '2']:
            # Create Instance(DB Client)
            db_update_instance = update.UpdateClient(self.job_config)

            # Get Endpoint(DB Client)
            db_endpoint_apl = self.get_db_endpoint(
                self.job_config.REST_URI_APL)

            # Update NAL_APL_MNG(DB Client) For Set PodID
            keys = [apl_table_rec_id]
            params = {}
            params['update_id'] = operation_id
            params['tenant_id'] = os_tenant_info['nal_tenant_id']

            db_update_instance.set_context(db_endpoint_apl, keys, params)
            db_update_instance.execute()

        # Get JOB Output Parameters
        job_output = {
            'nal_tenant_id': os_tenant_info['nal_tenant_id'],
            'nal_tenant_name': os_tenant_info['nal_tenant_name'],
        }

        # Output Log(Job Output)
        self.output_log_job_params(self.LOG_TYPE_OUTPUT, __name__,
                                   function_name, job_output)

        return job_output
Beispiel #13
0
    def _update_db_port(self, update_params, port_rec_id):

        # Create Instance(DB Client)
        db_update = update.UpdateClient(self.job_config)

        # Get Endpoint(DB Client)
        db_endpoint_port = self.get_db_endpoint(self.job_config.REST_URI_PORT)

        keys = [port_rec_id]
        db_update.set_context(db_endpoint_port, keys, update_params)
        db_update.execute()
Beispiel #14
0
    def __get_apl_info(self, tenant_name, apl_table_rec_id):

        # Get Endpoint(DB Client)
        db_endpoint_apl = self.get_db_endpoint(self.job_config.REST_URI_APL)

        # Create Instance(DB Client)
        db_list = list.ListClient(self.job_config)
        db_update = update.UpdateClient(self.job_config)

        # List NAL_APL_MNG(DB Client)
        params = {}
        params['tenant_name'] = tenant_name
        params['ID'] = apl_table_rec_id
        params['delete_flg'] = 0
        db_list.set_context(db_endpoint_apl, params)
        db_list.execute()
        vnf_list = db_list.get_return_param()

        if len(vnf_list) == 0:
            raise SystemError('server not exists.')

        # Update NAL_APL_MNG(DB Client)
        params = {}
        params['task_status'] = 0
        keys = [vnf_list[0]['ID']]
        db_update.set_context(db_endpoint_apl, keys, params)
        db_update.execute()

        vnf_output = {
            'apl_table_rec_id':
            vnf_list[0]['ID'],
            'msa_device_id':
            vnf_list[0]['MSA_device_id'],
            'pod_id':
            vnf_list[0]['pod_id'],
            'apl_type':
            vnf_list[0]['apl_type'],
            'type':
            vnf_list[0]['type'],
            'device_type':
            vnf_list[0]['device_type'],
            'nal_tenant_id':
            vnf_list[0]['tenant_id'],
            'node_id':
            vnf_list[0]['node_id'],
            'redundant_configuration_flg':
            vnf_list[0]['redundant_configuration_flg']
        }

        return vnf_output
Beispiel #15
0
    def __delete_db_port_logical(self, operation_id, port_key_id):

        # Create Instance(DB Client)
        db_update = update.UpdateClient(self.job_config)

        # Get Endpoint(DB Client)
        db_endpoint_port = self.get_db_endpoint(self.job_config.REST_URI_PORT)

        params = {}
        params['delete_flg'] = 1
        params['update_id'] = operation_id
        keys = [port_key_id]
        db_update.set_context(db_endpoint_port, keys, params)
        db_update.execute()
Beispiel #16
0
    def virtual_rt_finalize_setting_update(self, job_input):

        function_name = inspect.currentframe().f_code.co_name

        # Output Log(Job Input)
        self.output_log_job_params(self.LOG_TYPE_INPUT, __name__,
                                   function_name, job_input)

        # Get JOB Input Parameters
        operation_id = job_input['data']['operation_id']
        virtual_apl_list = job_input['data']['virtual_apl_list']

        # Get Endpoint(DB Client)
        db_endpoint_apl = self.get_db_endpoint(self.job_config.REST_URI_APL)

        # Create Instance(DB Client)
        db_update_instance = update.UpdateClient(self.job_config)

        for apl_data in virtual_apl_list:

            # Update NAL_APL_MNG(DB Client)
            params = {}
            params['update_id'] = operation_id
            params['node_detail'] = apl_data['node_detail']
            if 'dns_server_ip_address' in apl_data:
                params['dns_server_ip_address'] = \
                    apl_data['dns_server_ip_address']
            if 'ntp_server_ip_address' in apl_data:
                params['ntp_server_ip_address'] = \
                    apl_data['ntp_server_ip_address']
            if 'snmp_server_ip_address' in apl_data:
                params['snmp_server_ip_address'] = \
                    apl_data['snmp_server_ip_address']
            if 'syslog_server_ip_address' in apl_data:
                params['syslog_server_ip_address'] = \
                    apl_data['syslog_server_ip_address']
            keys = [apl_data['apl_rec_id']]
            db_update_instance.set_context(db_endpoint_apl, keys, params)
            db_update_instance.execute()

        # Output Log(Job Output)
        job_output = {}
        self.output_log_job_params(self.LOG_TYPE_OUTPUT, __name__,
                                   function_name, job_output)

        return job_output
Beispiel #17
0
    def __update_db_server_task_status_end_for_update(self, job_input):

        # Get JOB Input Parameters
        operation_id = job_input['operation_id']
        apl_table_rec_id = job_input['apl_table_rec_id']

        # Create Instance(DB Client)
        db_update = update.UpdateClient(self.job_config)

        # Get Endpoint(DB Client)
        db_endpoint_apl = self.get_db_endpoint(self.job_config.REST_URI_APL)

        params = {}
        params['task_status'] = 1
        params['update_id'] = operation_id
        keys = [apl_table_rec_id]
        db_update.set_context(db_endpoint_apl, keys, params)
        db_update.execute()
Beispiel #18
0
    def __assign_global_ip(self, tenant_name, operation_id):

        # Get Endpoint(DB Client)
        db_endpoint_global_ip = self.get_db_endpoint(
            self.job_config.REST_URI_GLOBAL_IP)

        # Create Instance(DB Client)
        db_list = list.ListClient(self.job_config)
        db_update = update.UpdateClient(self.job_config)

        # List NAL_GLOBAL_IP_MNG(DB Client)
        params = {}
        params['delete_flg'] = 0
        db_list.set_context(db_endpoint_global_ip, params)
        db_list.execute()
        global_ip_list = db_list.get_return_param()

        global_ip = ''
        for rec in global_ip_list:
            if str(rec['status']) == '0':
                key_id = rec['ID']
                global_ip = rec['global_ip']

        if len(global_ip) == 0:
            for rec in global_ip_list:
                if str(rec['status']) == '103' or \
                        str(rec['status']) == '203':
                    key_id = rec['ID']
                    global_ip = rec['global_ip']

        if len(global_ip) == 0:
            raise SystemError('global ip not found.')

        # Update NAL_GLOBAL_IP_MNG(DB Client)
        keys = [key_id]
        params = {}
        params['status'] = 101
        params['tenant_name'] = tenant_name
        params['update_id'] = operation_id
        db_update.set_context(db_endpoint_global_ip, keys, params)
        db_update.execute()

        return global_ip
Beispiel #19
0
    def finalize_dc_connect_vm(self, job_input):

        function_name = inspect.currentframe().f_code.co_name

        # Output Log(Job Input)
        self.output_log_job_params(self.LOG_TYPE_INPUT, __name__,
                                   function_name, job_input)

        # Get JOB Input Parameters
        virtual_apl_list = job_input['data']['virtual_apl_list']
        virtual_lan_list = job_input['data']['virtual_lan_list']
        apl_port_list = job_input['data']['apl_port_list']
        update_apl_port_list = job_input['data']['update_apl_port_list']
        license_list = job_input['data'].get('license_list', [])
        update_apl_wan_port_list = job_input['data'].get(
            'update_apl_wan_port_list', [])

        # Get Endpoint(DB Client)
        db_endpoint_apl = self.get_db_endpoint(self.job_config.REST_URI_APL)
        db_endpoint_vlan = self.get_db_endpoint(self.job_config.REST_URI_VLAN)
        db_endpoint_port = self.get_db_endpoint(self.job_config.REST_URI_PORT)
        db_endpoint_license = \
            self.get_db_endpoint(self.job_config.REST_URI_LICENSE)

        # Create Instance(DB Client)
        db_create_instance = create.CreateClient(self.job_config)
        db_update_instance = update.UpdateClient(self.job_config)

        # Create NAL_APL_MNG(DB Client)
        for virtual_apl_data in virtual_apl_list:
            params = {}
            params['create_id'] = virtual_apl_data['create_id']
            params['update_id'] = virtual_apl_data['update_id']
            params['delete_flg'] = virtual_apl_data['delete_flg']
            params['tenant_name'] = virtual_apl_data['tenant_name']
            params['apl_type'] = virtual_apl_data['apl_type']
            params['type'] = virtual_apl_data['type']
            params['device_type'] = virtual_apl_data['device_type']
            params['tenant_id'] = virtual_apl_data['tenant_id']
            params['pod_id'] = virtual_apl_data['pod_id']
            params['node_id'] = virtual_apl_data['node_id']
            params['node_name'] = virtual_apl_data['node_name']
            params['node_detail'] = virtual_apl_data['node_detail']
            params['server_id'] = virtual_apl_data['server_id']
            params['server_info'] = virtual_apl_data['server_info']
            params['MSA_device_id'] = virtual_apl_data['MSA_device_id']
            params['dns_server_ip_address'] = \
                virtual_apl_data.get('dns_server_ip_address', '')
            params['ntp_server_ip_address'] = \
                virtual_apl_data.get('ntp_server_ip_address', '')
            params['snmp_server_ip_address'] = \
                virtual_apl_data.get('snmp_server_ip_address', '')
            params['syslog_server_ip_address'] = \
                virtual_apl_data.get('syslog_server_ip_address', '')
            db_create_instance.set_context(db_endpoint_apl, params)
            db_create_instance.execute()

        # Create NAL_VIRTUAL_LAN_MNG(DB Client)
        for virtual_lan_data in virtual_lan_list:
            params = {}
            params['create_id'] = virtual_lan_data['create_id']
            params['update_id'] = virtual_lan_data['update_id']
            params['delete_flg'] = virtual_lan_data['delete_flg']
            params['tenant_name'] = virtual_lan_data['tenant_name']
            params['tenant_id'] = virtual_lan_data['tenant_id']
            params['network_id'] = virtual_lan_data['network_id']
            params['pod_id'] = virtual_lan_data['pod_id']
            params['vlan_id'] = virtual_lan_data['vlan_id']
            params['IaaS_network_type'] \
                                = virtual_lan_data['IaaS_network_type']
            params['IaaS_network_id'] \
                                = virtual_lan_data['IaaS_network_id']
            params['IaaS_segmentation_id'] \
                                = virtual_lan_data['IaaS_segmentation_id']
            params['rule_id'] = virtual_lan_data['rule_id']
            params['nal_vlan_info'] = virtual_lan_data['nal_vlan_info']
            db_create_instance.set_context(db_endpoint_vlan, params)
            db_create_instance.execute()

        # Create NAL_PORT_MNG(DB Client)
        for apl_port_data in apl_port_list:
            params = {}
            params['create_id'] = apl_port_data['create_id']
            params['update_id'] = apl_port_data['update_id']
            params['delete_flg'] = apl_port_data['delete_flg']
            params['tenant_name'] = apl_port_data['tenant_name']
            params['tenant_id'] = apl_port_data['tenant_id']
            params['apl_type'] = apl_port_data['apl_type']
            params['port_id'] = apl_port_data['port_id']
            params['IaaS_port_id'] = apl_port_data['IaaS_port_id']
            params['node_id'] = apl_port_data['node_id']
            params['network_id'] = apl_port_data['network_id']
            params['nic'] = apl_port_data['nic']
            params['ip_address'] = apl_port_data['ip_address']
            params['netmask'] = apl_port_data['netmask']
            params['ip_address_v6'] = apl_port_data.get('ip_address_v6', '')
            params['netmask_v6'] = apl_port_data.get('netmask_v6', '')
            params['port_info'] = apl_port_data['port_info']
            params['msa_info'] = apl_port_data['msa_info']
            params['network_type'] = apl_port_data['network_type']
            params['network_type_detail'] = apl_port_data[
                'network_type_detail']
            db_create_instance.set_context(db_endpoint_port, params)
            db_create_instance.execute()

        # Update NAL_PORT_MNG(DB Client)
        for apl_port_data in update_apl_port_list:
            params = {}
            params['update_id'] = apl_port_data['params']['update_id']
            params['node_id'] = apl_port_data['params']['node_id']
            params['nic'] = apl_port_data['params']['nic']
            params['msa_info'] = apl_port_data['params']['msa_info']
            keys = [apl_port_data['keys']['ID']]
            db_update_instance.set_context(db_endpoint_port, keys, params)
            db_update_instance.execute()

        for apl_port_data in update_apl_wan_port_list:
            params = {}
            params['update_id'] = apl_port_data['params']['update_id']
            params['msa_info'] = apl_port_data['params']['msa_info']

            if 'ip_address_v6' in apl_port_data['params']:
                params['ip_address_v6'] = apl_port_data['params'][
                    'ip_address_v6']
            if 'netmask_v6' in apl_port_data['params']:
                params['netmask_v6'] = apl_port_data['params']['netmask_v6']

            if 'port_info' in apl_port_data['params']:
                params['port_info'] = apl_port_data['params']['port_info']

            keys = [apl_port_data['keys']['ID']]
            db_update_instance.set_context(db_endpoint_port, keys, params)
            db_update_instance.execute()

        # Update NAL_LICENSE_MNG(DB Client)
        for (license_id, apl_info) in zip(license_list, virtual_apl_list):

            # Update NAL_LICENSE_MNG
            keys = [license_id]
            params = {}
            params['node_id'] = apl_info['node_id']
            db_update_instance.set_context(db_endpoint_license, keys, params)
            db_update_instance.execute()

        # Set JOB Output Parameters
        job_output = {}

        # Output Log(Job Output)
        self.output_log_job_params(self.LOG_TYPE_OUTPUT, __name__,
                                   function_name, job_output)

        return job_output
Beispiel #20
0
    def __assign_msa_network(self, tenant_name, pod_id, nal_tenant_id,
                             operation_id, job_input):

        IaaS_tenant_id = job_input['IaaS_tenant_id']

        vim_iaas_with_flg = self.get_vim_iaas_with_flg(job_input)

        # Get Endpoint(DB Client)
        db_endpoint_msa_vlan = self.get_db_endpoint(
            self.job_config.REST_URI_MSA_VLAN)

        # Get Endpoint(OpenStack:VIM)
        os_endpoint_vim = self.get_os_endpoint_vim(pod_id, '', nal_tenant_id)

        # Create Instance(OpenStack Client)
        osc_networks = networks.OscQuantumNetworks(self.job_config)
        os_subnets_instance = subnets.OscQuantumSubnets(self.job_config)
        os_ports_instance = ports.OscQuantumPorts(self.job_config)

        # Create Instance(DB Client)
        db_list = list.ListClient(self.job_config)
        db_update = update.UpdateClient(self.job_config)

        # List NAL_MSA_VLAN_MNG(DB Client)
        params = {}
        params['delete_flg'] = 0
        params['status'] = 0
        db_list.set_context(db_endpoint_msa_vlan, params)
        db_list.execute()
        msa_vlan_list = db_list.get_return_param()

        msa_network_info = {}
        if len(msa_vlan_list) != 0:

            rec = msa_vlan_list[0]

            # Update NAL_MSA_VLAN_MNG(DB Client)
            keys = [rec['ID']]
            params = {}
            params['update_id'] = operation_id
            params['pod_id'] = pod_id
            params['tenant_name'] = tenant_name
            params['status'] = 1
            params['tenant_id'] = nal_tenant_id
            db_update.set_context(db_endpoint_msa_vlan, keys, params)
            db_update.execute()

            cidr = rec['network_address'] + '/' + rec['netmask']

            if vim_iaas_with_flg == 0:
                # Create Network(OpenStack:VIM)
                network_name = 'MSA_for_' + nal_tenant_id
                physical_network_name = None
            else:
                # Create Network(OpenStack:VIM)
                network_name = 'MSA_for_' + IaaS_tenant_id
                physical_network_name = self.get_os_physical_network_name()

            os_cre_network_vim = osc_networks.create_network(
                os_endpoint_vim, network_name, True, False, rec['vlan_id'],
                physical_network_name)
            network_info = os_cre_network_vim['network']
            network_id = network_info['id']

            # Get Network Data(id)
            ret = self.utils.get_network_range_from_cidr(cidr)
            gatewy_ip = \
                socket.inet_ntoa(struct.pack('!L', ret['network'] + 1))

            os_cre_subnet_vim = os_subnets_instance.create_subnet(
                os_endpoint_vim, network_id, cidr, '', nal_tenant_id, '4',
                gatewy_ip)
            subnet_info = os_cre_subnet_vim['subnet']
            subnet_id = subnet_info['id']

            # Create Port(OpenStack:VIM)
            os_cre_port_vim = os_ports_instance.create_port(
                os_endpoint_vim, network_id)

            # Get Port Info
            port_info = os_cre_port_vim['port']
            port_id = port_info['id']
            ip_address = port_info['fixed_ips'][0]['ip_address']

            # MSA setup
            self.__setup_msa_network_vlan(pod_id, rec['vlan_id'], ip_address,
                                          rec['netmask'])

            # Update NAL_MSA_VLAN_MNG(DB Client)
            keys = [rec['ID']]
            params = {}
            params['update_id'] = operation_id
            params['msa_ip_address'] = ip_address
            params['network_id'] = network_id
            params['subnet_id'] = subnet_id
            params['port_id'] = port_id
            params['network_info'] = json.dumps(network_info)
            params['subnet_info'] = json.dumps(subnet_info)
            params['port_info'] = json.dumps(port_info)
            db_update.set_context(db_endpoint_msa_vlan, keys, params)
            db_update.execute()

            # List NAL_MSA_VLAN_MNG(DB Client)
            params = {}
            params['delete_flg'] = 0
            params['pod_id'] = pod_id
            params['tenant_name'] = tenant_name
            db_list.set_context(db_endpoint_msa_vlan, params)
            db_list.execute()
            msa_network_info = db_list.get_return_param()

        else:
            raise SystemError('vlan for MSA not Found.')

        return msa_network_info
Beispiel #21
0
    def __create_pod_tenant(self, job_input):

        # Get JOB Input Parameters
        tenant_name = job_input['tenant_name']
        pod_id = job_input['pod_id']
        iaas_tenant_name = job_input['IaaS_tenant_name']
        operation_id = job_input['operation_id']
        dc_id = job_input.get('dc_id', 'system')

        # Get Endpoint(DB Client)
        db_endpoint_tenant = self.get_db_endpoint(
            self.job_config.REST_URI_TENANT)

        # Create Instance(DB Client)
        db_list_instance = list.ListClient(self.job_config)
        db_update_instance = update.UpdateClient(self.job_config)

        # Get Endpoint(OpenStack:VIM)
        endpoint_config = self.nal_endpoint_config[dc_id]['vim'][pod_id]
        os_endpoint = self.get_os_endpoint_vim(
            pod_id, '', endpoint_config['admin_tenant_id'], dc_id)

        # Create Instance(OpenStack Client)
        osc_tenants = tenants.OscTenants(self.job_config)
        osc_roles = roles.OscRoles(self.job_config)

        # Create Tenant(OpenStack Client)
        os_tenant_res = osc_tenants.create_tenant(os_endpoint,
                                                  iaas_tenant_name)

        # Add Admin Role To Tenant Admin User(OpenStack Client)
        osc_roles.add_role_to_user(os_endpoint, endpoint_config['user_key'],
                                   os_tenant_res['project']['id'],
                                   endpoint_config['role_id'])

        # List NAL_TENANT_MNG(DB Client)
        params = {}
        params['tenant_name'] = tenant_name
        params['delete_flg'] = 0
        db_list_instance.set_context(db_endpoint_tenant, params)
        db_list_instance.execute()
        nal_tenant_list = db_list_instance.get_return_param()

        if len(nal_tenant_list) == 0:
            raise SystemError('tenant not exists.')

        rec_id = nal_tenant_list[0]['ID']
        tenant_info = json.loads(nal_tenant_list[0]['tenant_info'])

        tenant_info_wk = os_tenant_res['project']
        tenant_info_wk['pod_id'] = pod_id
        tenant_info_wk['msa_customer_name'] = ''
        tenant_info_wk['msa_customer_id'] = 0

        tenant_info.append(tenant_info_wk)

        # Update NAL_VNF_MNG(DB Client):Set DeleteFlg On
        params = {}
        params['update_id'] = operation_id
        params['tenant_info'] = json.dumps(tenant_info)
        keys = [rec_id]
        db_update_instance.set_context(db_endpoint_tenant, keys, params)
        db_update_instance.execute()

        job_output = {
            'nal_tenant_id': os_tenant_res['project']['id'],
            'nal_tenant_name': os_tenant_res['project']['name'],
        }

        return job_output
Beispiel #22
0
    def main_create_vlb(self, job_input):

        # tenant_id_convert
        job_output = method.JobAutoMethod().tenant_id_convert(job_input)

        # Assertion
        self.assertEqual(len(job_output), 1)
        self.assertEqual(job_output['tenant_name'],
                         JOB_INPUT_CREATE['IaaS_tenant_id'])

        # initialize_create_vnf
        job_input.update(job_output)
        job_output = method.JobAutoMethod().initialize_create_vnf(job_input)

        # Assertion
        self.assertEqual(len(job_output), 1)
        self.assertTrue('apl_table_rec_id' in job_output)

        # routing_pod
        job_input.update(job_output)
        job_output = method.JobAutoMethod().routing_pod(job_input)

        # Assertion
        self.assertEqual(len(job_output), 1)
        self.assertEqual(job_output['pod_id'], 'pod_unit_test1')

        # get_or_create_pod_tenant
        job_input.update(job_output)
        job_output = method.JobAutoMethod().get_or_create_pod_tenant(job_input)

        # Assertion
        self.assertEqual(len(job_output), 2)
        self.assertTrue('nal_tenant_id' in job_output)
        self.assertEqual(job_output['nal_tenant_name'],
                         JOB_INPUT_CREATE['IaaS_tenant_name'])
        nal_tenant_id = job_output['nal_tenant_id']

        db_list = list.ListClient(config.JobConfig())
        db_update = update.UpdateClient(config.JobConfig())

        # List NAL_PORT_MNG(DB Client)
        db_endpoint_port = base.JobAutoBase().get_db_endpoint(
            config.JobConfig().REST_URI_PORT)
        params = {}
        params['delete_flg'] = 0
        db_list.set_context(db_endpoint_port, params)
        db_list.execute()
        port_list = db_list.get_return_param()

        # Update NAL_PORT_MNG(DB Client)

        for port_res in port_list:
            keys = [port_res['ID']]
            params = {}
            params['tenant_id'] = nal_tenant_id
            db_update.set_context(db_endpoint_port, keys, params)
            db_update.execute()

        # List NAL_VLAN_MNG(DB Client)
        db_endpoint_vlan = base.JobAutoBase().get_db_endpoint(
            config.JobConfig().REST_URI_VLAN)
        params = {}
        params['delete_flg'] = 0
        db_list.set_context(db_endpoint_vlan, params)
        db_list.execute()
        vlan_list = db_list.get_return_param()

        # Update NAL_VLAN_MNG(DB Client)
        for vlan_res in vlan_list:
            keys = [vlan_res['ID']]
            params = {}
            params['tenant_id'] = nal_tenant_id
            db_update.set_context(db_endpoint_vlan, keys, params)
            db_update.execute()

        # hostname_check
        job_input.update(job_output)
        job_output = method.JobAutoMethod().hostname_check(job_input)

        # Assertion
        self.assertEqual(job_output, {})

        # virtual_msa_port_create
        job_input.update(job_output)
        job_output = method.JobAutoMethod().virtual_msa_port_create(job_input)

        # Assertion
        self.assertEqual(len(job_output), 2)
        self.assertTrue('port_id1' in job_output)
        self.assertTrue('device_ip_address' in job_output)

        # virtual_lb_tenant_vlan_port_create
        job_input.update(job_output)
        job_output = method.JobAutoMethod().\
            virtual_lb_tenant_vlan_port_create(job_input)

        # Assertion
        self.assertEqual(len(job_output), 1)
        self.assertTrue('port_id4' in job_output)

        # virtual_server_create
        job_input.update(job_output)
        job_output = method.JobAutoMethod()\
            .virtual_server_create(job_input)

        # Assertion
        self.assertEqual(len(job_output), 2)
        self.assertTrue('server_id' in job_output)
        self.assertTrue('node_id' in job_output)

        if job_input['device_type'] in ('1', ):
            # license_assign
            job_input.update(job_output)
            job_output = method.JobAutoMethod().license_assign(job_input)

            # Assertion
            self.assertEqual(len(job_output), 1)
            self.assertEqual(job_output['license_key'], 'test_license_001')

        elif job_input['device_type'] in ('2', ):
            # license_assign_bigip_ve
            job_input.update(job_output)
            job_output = \
                method.JobAutoMethod().license_assign_bigip_ve(job_input)

            # Assertion
            self.assertEqual(len(job_output), 1)
            self.assertEqual(job_output['license_key'], 'test_license_001')

        elif job_input['device_type'] in ('3', ):
            # zerotouch_vthunder
            job_input.update(job_output)
            job_output = \
                method.JobAutoMethod().zerotouch_vthunder(job_input)

            # Assertion
            self.assertEqual(len(job_output), 1)
            self.assertEqual(job_output['license_key'], '')

        # msa_customer_create
        job_input.update(job_output)
        job_output = method.JobAutoMethod().msa_customer_create(job_input)

        # Assertion
        self.assertEqual(len(job_output), 1)
        self.assertTrue('msa_customer_id' in job_output)

        # msa_setup_create
        job_input.update(job_output)
        job_output = method.JobAutoMethod().msa_setup_create(job_input)

        # Assertion
        self.assertEqual(len(job_output), 0)
        self.assertEqual(job_output, {})

        if job_input['device_type'] in ('1', ):
            # device_setup_create_for_intersec_lb
            job_input.update(job_output)
            job_output = method.JobAutoMethod()\
                .device_setup_create_for_intersec_lb(job_input)

            # Assertion
            self.assertEqual(len(job_output), 0)
            self.assertEqual(job_output, {})

        elif job_input['device_type'] in ('2', ):
            # device_setup_create_for_bigip_ve
            job_input.update(job_output)
            job_output = method.JobAutoMethod()\
                .device_setup_create_for_bigip_ve(job_input)

            # Assertion
            self.assertEqual(len(job_output), 0)
            self.assertEqual(job_output, {})

        elif job_input['device_type'] in ('3', ):
            # device_setup_create_for_vthunder
            job_input.update(job_output)
            job_output = method.JobAutoMethod()\
                .device_setup_create_for_vthunder(job_input)

            # Assertion
            self.assertEqual(len(job_output), 0)
            self.assertEqual(job_output, {})

        elif job_input['device_type'] in ('4', ):
            # device_setup_create_for_vthunder411
            job_input.update(job_output)
            job_output = method.JobAutoMethod()\
                .device_setup_create_for_vthunder411(job_input)

            # Assertion
            self.assertEqual(len(job_output), 0)
            self.assertEqual(job_output, {})

        # terminate_create_vnf
        job_input.update(job_output)
        job_output = method.JobAutoMethod().terminate_create_vnf(job_input)

        # Assertion
        self.assertEqual(len(job_output), 2)
        self.assertEqual(job_output['result']['status'], 0)
        self.assertEqual(job_output['result']['error-code'], '')
        self.assertEqual(job_output['result']['message'], '')
        self.assertEqual(job_output['data'], {})

        job_input.update(job_output)
        return job_input
Beispiel #23
0
    def exec_through_vthunder411(self, iaas_network_type='VXLAN'):

        device_type = '4'

        # Create input data
        job_input = copy.deepcopy(JOB_INPUT_CREATE)
        job_input['IaaS_network_type'] = iaas_network_type
        job_input['device_type'] = device_type
        job_input['host_name'] = 'host_name_vthunder'
        job_input['fw_ip_address'] = '10.58.10.1'
        job_input['admin_id'] = 'admin_id'
        job_input['admin_pw'] = 'admin_pw'

        create_output = self.main_create_vlb(job_input)

        # Get node_id from create process
        node_id = create_output['node_id']
        apl_table_rec_id = create_output['apl_table_rec_id']
        port_id4 = create_output['port_id4']

        # Create Instance(DB Client)
        db_list = list.ListClient(config.JobConfig())
        db_update = update.UpdateClient(config.JobConfig())

        # Get Endpoint(DB Client)
        db_endpoint_license = \
            base.JobAutoBase().get_db_endpoint(
                config.JobConfig().REST_URI_LICENSE)

        # List NAL_LICENSE_MNG(DB Client)
        params = {}
        params['status'] = 0
        params['type'] = 2
        params['device_type'] = device_type
        params['delete_flg'] = 0
        db_list.set_context(db_endpoint_license, params)
        db_list.execute()
        license_list = db_list.get_return_param()

        # Update NAL_LICENSE_MNG(DB Client)
        if len(license_list) > 0:
            keys = [license_list[0]['ID']]
            params = {}
            params['tenant_name'] = JOB_INPUT_CREATE['IaaS_tenant_id']
            params['node_id'] = node_id
            db_update.set_context(db_endpoint_license, keys, params)
            db_update.execute()

        # Create input data
        job_input = copy.deepcopy(JOB_INPUT_LICENSE)
        job_input['device_type'] = device_type
        job_input['node_id'] = node_id

        self.main_license_assign_vlb(job_input)

        # Create input data
        job_input = copy.deepcopy(JOB_INPUT_ADD_IPV6)
        job_input['device_type'] = device_type
        job_input['node_id'] = node_id
        job_input['port_id'] = port_id4
        job_input['fw_ip_v6_address'] = '2001:db5::1'

        self.main_add_ipv6_vlb(job_input)

        # Create input data
        job_input = copy.deepcopy(JOB_INPUT_DELETE)
        job_input['device_type'] = device_type
        job_input['node_id'] = node_id
        job_input['apl_table_rec_id'] = apl_table_rec_id

        self.main_delete_vlb(job_input)
Beispiel #24
0
    def finalize_dc_disconnect_vm(self, job_input):

        function_name = inspect.currentframe().f_code.co_name

        # Output Log(Job Input)
        self.output_log_job_params(self.LOG_TYPE_INPUT, __name__,
                                   function_name, job_input)

        # Get JOB Input Parameters
        logical_delete_apl_list = job_input['data']['logical_delete_apl_list']
        logical_delete_apl_port_list \
                        = job_input['data']['logical_delete_apl_port_list']
        logical_delete_vlan_list \
                        = job_input['data']['logical_delete_vlan_list']

        # Get Endpoint(DB Client)
        db_endpoint_apl = self.get_db_endpoint(self.job_config.REST_URI_APL)
        db_endpoint_vlan = self.get_db_endpoint(self.job_config.REST_URI_VLAN)
        db_endpoint_port = self.get_db_endpoint(self.job_config.REST_URI_PORT)

        # Create Instance(DB Client)
        db_list_instance = list.ListClient(self.job_config)
        db_update_instance = update.UpdateClient(self.job_config)

        # Update NAL_APL_MNG(DB Client)
        for apl_data in logical_delete_apl_list:

            params = {}
            params['delete_flg'] = apl_data['search']['delete_flg']
            params['tenant_id'] = apl_data['search']['tenant_id']
            params['apl_type'] = apl_data['search']['apl_type']
            params['type'] = apl_data['search']['type']
            params['device_type'] = apl_data['search']['device_type']
            params['node_id'] = apl_data['search']['node_id']
            db_list_instance.set_context(db_endpoint_apl, params)
            db_list_instance.execute()
            apl_list = db_list_instance.get_return_param()

            params = {}
            params['update_id'] = apl_data['params']['update_id']
            params['delete_flg'] = apl_data['params']['delete_flg']
            keys = [apl_list[0]['ID']]
            db_update_instance.set_context(db_endpoint_apl, keys, params)
            db_update_instance.execute()

        # Update NAL_PORT_MNG(DB Client)
        for port_data in logical_delete_apl_port_list:

            params = {}
            params['delete_flg'] = port_data['search']['delete_flg']
            params['tenant_id'] = port_data['search']['tenant_id']
            params['apl_type'] = port_data['search']['apl_type']
            params['port_id'] = port_data['search']['port_id']
            db_list_instance.set_context(db_endpoint_port, params)
            db_list_instance.execute()
            port_list = db_list_instance.get_return_param()

            params = {}
            params['update_id'] = port_data['params']['update_id']
            params['delete_flg'] = port_data['params']['delete_flg']
            keys = [port_list[0]['ID']]
            db_update_instance.set_context(db_endpoint_port, keys, params)
            db_update_instance.execute()

        # Update NAL_VIRTUAL_LAN_MNG(DB Client)
        for vlan_data in logical_delete_vlan_list:

            params = {}
            params['delete_flg'] = vlan_data['search']['delete_flg']
            params['tenant_id'] = vlan_data['search']['tenant_id']
            params['network_id'] = vlan_data['search']['network_id']
            db_list_instance.set_context(db_endpoint_vlan, params)
            db_list_instance.execute()
            vlan_list = db_list_instance.get_return_param()

            params = {}
            params['update_id'] = vlan_data['params']['update_id']
            params['delete_flg'] = vlan_data['params']['delete_flg']
            keys = [vlan_list[0]['ID']]
            db_update_instance.set_context(db_endpoint_vlan, keys, params)
            db_update_instance.execute()

        # Set JOB Output Parameters
        job_output = {}

        # Output Log(Job Output)
        self.output_log_job_params(self.LOG_TYPE_OUTPUT, __name__,
                                   function_name, job_output)

        return job_output
Beispiel #25
0
    def virtual_rt_finalize_bandwidth(self, job_input):

        function_name = inspect.currentframe().f_code.co_name

        # Output Log(Job Input)
        self.output_log_job_params(self.LOG_TYPE_INPUT, __name__,
                                   function_name, job_input)

        # Get JOB Input Parameters
        operation_id = job_input['data']['operation_id']
        tenant_name = job_input['data']['tenant_name']
        bandwidth = job_input['data']['bandwidth']
        virtual_apl_list = job_input['data']['virtual_apl_list']
        license_list = job_input['data']['license_list']

        # Get Endpoint(DB Client)
        db_endpoint_apl = self.get_db_endpoint(self.job_config.REST_URI_APL)
        db_endpoint_license = self.get_db_endpoint(
            self.job_config.REST_URI_LICENSE)

        # Create Instance(DB Client)
        db_list_instance = list.ListClient(self.job_config)
        db_update_instance = update.UpdateClient(self.job_config)

        for (license_id, apl_data) in zip(license_list, virtual_apl_list):

            # Update NAL_APL_MNG(DB Client)
            params = {}
            params['update_id'] = operation_id
            params['node_detail'] = apl_data['node_detail']
            keys = [apl_data['apl_rec_id']]
            db_update_instance.set_context(db_endpoint_apl, keys, params)
            db_update_instance.execute()

            # List NAL_LICENSE_MNG(DB Client)
            params = {}
            params['node_id'] = apl_data['node_id']
            params['tenant_name'] = tenant_name
            params['status'] = '2'
            params['delete_flg'] = 0
            db_list_instance.set_context(db_endpoint_license, params)
            db_list_instance.execute()
            license_list = db_list_instance.get_return_param()

            # Update NAL_LICENSE_MNG(DB Client)
            keys = [license_list[0]['ID']]
            params = {}
            params['update_id'] = operation_id
            params['node_id'] = ''
            params['tenant_name'] = ''
            params['status'] = '3'
            db_update_instance.set_context(db_endpoint_license, keys, params)
            db_update_instance.execute()

            # Update NAL_LICENSE_MNG(DB Client)
            keys = [license_id]
            params = {}
            params['update_id'] = operation_id
            params['node_id'] = apl_data['node_id']
            db_update_instance.set_context(db_endpoint_license, keys, params)
            db_update_instance.execute()

        # Output Log(Job Output)
        job_output = {}
        self.output_log_job_params(self.LOG_TYPE_OUTPUT, __name__,
                                   function_name, job_output)

        return job_output
Beispiel #26
0
from job.conf import config
from job.lib.db import update

end_point = 'http://localhost:80/index.py/pnfs'
ids = [62]
params = {
    #           'delete_flg': 0,
    #           'type': 1,
    #           'device_type': 2,
    'status': 4,
    #           'device_id': 'dev0001',
    #           'redundant_configuration_flg': 1,
    #           'device_name_master': 'master001',
    #           'actsby_flag_master': 'act001',
    #           'device_detail_master': 'detail001',
    #           'master_ip_address': '10.0.0.1'
}

client = update.UpdateClient(config.JobConfig())
client.set_context(end_point, ids, params)
client.execute()
result = client.get_return_param()

print(type(result))
print(result)
Beispiel #27
0
    def __delete_vlan(self, job_input, target_network_list):

        # Get JOB Input Parameters
        nal_tenant_id = job_input['data']['nal_tenant_id']
        operation_id = job_input['data']['operation_id']
        pod_id = job_input['data']['pod_id']
        dc_id = job_input['data'].get('dc_id', 'system')
        job_cleaning_mode = job_input['data'].get('job_cleaning_mode', '0')

        # Get MSA Info(network_id)
        msa_network_id = job_input['data']['msa_network_id']

        # Get Network Info
        pub_network_info = self.get_os_network_info(
            pod_id, nal_tenant_id, self.job_config.NW_NAME_PUB, '', dc_id)

        ext_network_info = self.get_os_network_info(
            pod_id, nal_tenant_id, self.job_config.NW_NAME_EXT, '', dc_id)

        network_id_list = [
            msa_network_id, pub_network_info['network_id'],
            ext_network_info['network_id']
        ]

        if job_input['data']['group_type'] in [
                str(self.job_config.GROUP_TYPE_CSRV_TUNNEL_ESP),
                str(self.job_config.GROUP_TYPE_CSRV_TUNNEL_AH),
        ]:

            idc_network_info = self.get_os_network_info(
                pod_id, nal_tenant_id, self.job_config.NW_NAME_IDC, '', dc_id)
            network_id_list.append(idc_network_info['network_id'])

        # Get Endpoint(OpenStack:VIM)
        os_endpoint_vim = self.get_os_endpoint_vim(pod_id, '', nal_tenant_id,
                                                   dc_id)

        # Get Endpoint(DB Client)
        db_endpoint_vlan = self.get_db_endpoint(self.job_config.REST_URI_VLAN)
        db_endpoint_port = self.get_db_endpoint(self.job_config.REST_URI_PORT)

        # Create Instance(OpenStack Client)
        osc_networks = networks.OscQuantumNetworks(self.job_config)

        # Create Instance(VXLAN-GW)
        vxlangw_instance = vxlangw.VxlanGwClient(self.job_config)

        # Create Instance(DB Client)
        db_list_instance = list.ListClient(self.job_config)
        db_update_instance = update.UpdateClient(self.job_config)

        # List NAL_VIRTUAL_LAN_MNG(DB)
        params = {}
        params['delete_flg'] = 0
        params['pod_id'] = pod_id
        params['nal_tenant_id'] = nal_tenant_id
        db_list_instance.set_context(db_endpoint_vlan, params)
        db_list_instance.execute()
        vlan_list = db_list_instance.get_return_param()

        for vlan_res in vlan_list:

            vlan_rec_id = vlan_res['ID']
            vlan_network_id = vlan_res['network_id']
            iaas_network_type = vlan_res['IaaS_network_type']
            rule_id = vlan_res['rule_id']

            if vlan_network_id in network_id_list:
                continue

            if vlan_network_id not in target_network_list:
                continue

            # List NAL_PORT_MNG(DB)
            params = {}
            params['delete_flg'] = 0
            params['pod_id'] = pod_id
            params['nal_tenant_id'] = nal_tenant_id
            params['network_id'] = vlan_network_id
            db_list_instance.set_context(db_endpoint_port, params)
            db_list_instance.execute()
            port_list = db_list_instance.get_return_param()

            if len(port_list) == 0:

                try:
                    # Delete Network(OpenStack:VIM)
                    osc_networks.delete_network(os_endpoint_vim,
                                                vlan_network_id)
                except:
                    if job_cleaning_mode == '1':
                        self.output_log_fatal(__name__, traceback.format_exc())
                    else:
                        raise

                # Delete VXLAN-GW Rule
                if iaas_network_type.upper() == self.job_config.NW_TYPE_VXLAN:
                    params = [rule_id, self.job_config.PROV_TIMEOUT]
                    try:
                        vxlangw_instance.delete_vxlan_gw(params)
                    except:
                        if job_cleaning_mode == '1':
                            self.output_log_fatal(__name__,
                                                  traceback.format_exc())
                        else:
                            raise

                # Update NAL_VIRTUAL_LAN_MNG(DB)
                params = {}
                params['update_id'] = operation_id
                params['delete_flg'] = 1
                keys = [vlan_rec_id]
                db_update_instance.set_context(db_endpoint_vlan, keys, params)
                db_update_instance.execute()
Beispiel #28
0
    def __activation(self, job_input):

        # Get JOB Input Parameters
        operation_id = job_input['operation_id']
        tenant_name = job_input['tenant_name']
        pod_id = job_input['pod_id']
        node_id = job_input['node_id']
        apl_type = job_input['apl_type']
        nf_type = job_input['type']
        device_type = job_input['device_type']

        vim_iaas_with_flg = self.get_vim_iaas_with_flg(job_input)

        # Get Endpoint(DB Client)
        db_endpoint_license = self.get_db_endpoint(
            self.job_config.REST_URI_LICENSE)
        db_endpoint_msa_vlan = \
            self.get_db_endpoint(self.job_config.REST_URI_MSA_VLAN)

        # Create Instance(DB Client)
        db_list = list.ListClient(self.job_config)
        db_update = update.UpdateClient(self.job_config)

        # Create Instance(Script Client)
        license_instance = licenseauth.LicenseAuthClient(self.job_config)

        # Get Vim Endpoint
        vim_endpoint_data = self.nal_endpoint_config['system']['vim'][pod_id]

        if vim_iaas_with_flg == 0:
            server_login_password = vim_endpoint_data[
                'openstack_controller_node_server_login_password']
            nal_private_key_path = ''
        else:
            server_login_password = ''
            nal_private_key_path = self.get_nal_private_key_path()

        # Get MSA Config
        device_name = self.device_type_to_name(apl_type, nf_type, device_type)
        msa_config_for_device = \
            self.get_msa_config_for_device(pod_id, device_name)

        # Get MSA VLAN Data
        params = {}
        params['delete_flg'] = 0
        params['tenant_name'] = tenant_name
        params['pod_id'] = pod_id
        db_list.set_context(db_endpoint_msa_vlan, params)
        db_list.execute()
        msa_vlan_list = db_list.get_return_param()

        # List NAL_LICENSE_MNG(DB Client)
        params = {}
        params['status'] = 0
        params['tenant_name'] = tenant_name
        params['node_id'] = node_id
        params['delete_flg'] = 0
        db_list.set_context(db_endpoint_license, params)
        db_list.execute()
        license_list = db_list.get_return_param()

        if len(license_list) == 0:
            raise SystemError('license not found.')
        else:
            for rec in license_list:

                # activetion(LicenseClient)
                params = [
                    vim_endpoint_data['openstack_controller_node_ip_address'],
                    vim_endpoint_data[
                        'openstack_controller_node_server_login_id'],
                    server_login_password, nal_private_key_path,
                    vim_endpoint_data['openstack_keystone_ip_address'],
                    vim_endpoint_data['user_id'],
                    vim_endpoint_data['user_password'], node_id,
                    msa_config_for_device['user_id'],
                    msa_config_for_device['admin_password'],
                    msa_vlan_list[0]['msa_ip_address'], rec['license'],
                    vim_endpoint_data['admin_tenant_name'],
                    vim_endpoint_data['region_id']
                ]

                passwords = [
                    vim_endpoint_data[
                        'openstack_controller_node_server_login_password'],
                    vim_endpoint_data['user_password'],
                    msa_config_for_device['admin_password'],
                ]

                # Execute LicenseClient
                if device_name == 'paloalto_vm':
                    license_instance.paloalto_authentication(params, passwords)
                else:
                    license_instance.a10_vthunder_authentication(
                        params, passwords)

                # Update NAL_LICENSE_MNG(DB Client)
                keys = [rec['ID']]
                params = {}
                params['update_id'] = operation_id
                params['status'] = 2
                params['tenant_name'] = tenant_name
                params['node_id'] = node_id
                db_update.set_context(db_endpoint_license, keys, params)
                db_update.execute()
Beispiel #29
0
    def _assign_license(self, job_input):

        license_key = ''

        # Get JOB Input Parameters
        operation_id = job_input['operation_id']
        tenant_name = job_input['tenant_name']
        hard_type = job_input['type']
        device_type = job_input['device_type']
        node_id = job_input.get('node_id', '')
        apl_type = job_input['apl_type']
        nf_type = job_input['type']
        dc_id = job_input.get('dc_id', 'system')

        type_detail = job_input.get('license_type_detail', '')

        # Get Config(Device Name)
        device_name = self.device_type_to_name(apl_type, nf_type, device_type,
                                               dc_id)

        # Get Endpoint(DB Client)
        db_endpoint_license = self.get_db_endpoint(
            self.job_config.REST_URI_LICENSE)

        # Create Instance(DB Client)
        db_list = list.ListClient(self.job_config)
        db_update = update.UpdateClient(self.job_config)

        # List NAL_LICENSE_MNG(DB Client)
        params = {}
        params['status'] = 0
        params['type'] = hard_type
        params['device_type'] = device_type
        params['delete_flg'] = 0

        if len(type_detail) > 0:
            params['type_detail'] = type_detail

        db_list.set_context(db_endpoint_license, params)
        db_list.execute()
        license_list1 = db_list.get_return_param()

        if len(license_list1) > 0:

            # Update NAL_LICENSE_MNG(DB Client)
            keys = [license_list1[0]['ID']]
            params = {}
            params['status'] = 2
            params['tenant_name'] = tenant_name
            params['update_id'] = operation_id
            params['node_id'] = node_id
            db_update.set_context(db_endpoint_license, keys, params)
            db_update.execute()

            license_key = license_list1[0]['license']
            license_id = license_list1[0]['ID']

        else:

            if device_name not in [
                    self.DEVICE_NAME_FORTIGATE_VM,
                    self.DEVICE_NAME_FORTIGATE_VM_541,
                    self.DEVICE_NAME_INTERSEC_SG,
                    self.DEVICE_NAME_INTERSEC_LB,
                    self.DEVICE_NAME_CSR1000V,
            ]:
                raise SystemError('license not found.')

            # List NAL_LICENSE_MNG(DB Client)
            params = {}
            params['status'] = 3
            params['type'] = hard_type
            params['device_type'] = device_type
            params['delete_flg'] = 0

            if len(type_detail) > 0:
                params['type_detail'] = type_detail

            db_list.set_context(db_endpoint_license, params)
            db_list.execute()
            license_list2 = db_list.get_return_param()

            if len(license_list2) == 0:
                raise SystemError('license not found.')

            check_date = (datetime.datetime.now()\
                                - datetime.timedelta(hours=4))\
                                .strftime('%Y-%m-%d %H:%M:%S')

            fortgate_vm_license_found = False

            for idx in range(len(license_list2)):

                if device_name in [
                        self.DEVICE_NAME_FORTIGATE_VM,
                        self.DEVICE_NAME_FORTIGATE_VM_541,
                ]:

                    if check_date > license_list2[idx]['update_date']:
                        fortgate_vm_license_found = True
                    else:
                        continue

                # Update NAL_LICENSE_MNG(DB Client)
                params = {}
                params['status'] = 2
                params['tenant_name'] = tenant_name
                params['update_id'] = operation_id
                params['node_id'] = node_id
                keys = [license_list2[idx]['ID']]
                db_update.set_context(db_endpoint_license, keys, params)
                db_update.execute()

                license_key = license_list2[idx]['license']
                license_id = license_list2[idx]['ID']
                break

            if device_name in [
                    self.DEVICE_NAME_FORTIGATE_VM,
                    self.DEVICE_NAME_FORTIGATE_VM_541,
            ] and fortgate_vm_license_found == False:

                raise SystemError('license not found.')

        if device_name == self.DEVICE_NAME_CSR1000V:
            return license_id
        else:
            return license_key
Beispiel #30
0
    def __add_port_tenant_ipv6(self, job_input, network_id, vlan_id):

        output = {}

        # Get JOB Input Parameters
        operation_id = job_input['operation_id']
        iaas_region_id = job_input['IaaS_region_id']
        iaas_tenant_id = job_input['IaaS_tenant_id']
        iaas_network_id = job_input['IaaS_network_id']
        iaas_subnet_id = job_input['IaaS_subnet_id']
        iaas_subnet_id_v6 = job_input['IaaS_subnet_id_v6']
        pod_id = job_input['pod_id']
        nal_tenant_id = job_input['nal_tenant_id']
        vrrp_address = job_input['vrrp_address']
        ce1_address = job_input['ce1_address']
        ce2_address = job_input['ce2_address']

        vim_iaas_with_flg = self.get_vim_iaas_with_flg(job_input)

        # Get Endpoint(OpenStack:VIM)
        os_endpoint_vim = self.get_os_endpoint_vim(pod_id, '', nal_tenant_id)

        if vim_iaas_with_flg == 0:
            iaas_token_tenant = iaas_tenant_id
        else:
            iaas_token_tenant = nal_tenant_id

        # Get Endpoint(OpenStack:IaaS)
        os_endpoint_iaas = self.get_os_endpoint_iaas(iaas_region_id, '',
                                                     iaas_token_tenant)

        # Get Endpoint(DB Client)
        db_endpoint_port = self.get_db_endpoint(self.job_config.REST_URI_PORT)

        # Create Instance(OpenStack Client)
        os_subnets_instance = subnets.OscQuantumSubnets(self.job_config)
        os_ports_instance = ports.OscQuantumPorts(self.job_config)

        # Create Instance(DB Client)
        db_list_instance = list.ListClient(self.job_config)
        db_update_instance = update.UpdateClient(self.job_config)

        # Get Subnet(OpenStack:IaaS)
        iaas_subnet_res = os_subnets_instance.get_subnet(
            os_endpoint_iaas, iaas_subnet_id_v6)

        iaas_cidr_wk = self.utils.get_cidr_compressed(
            iaas_subnet_res['subnet']['cidr'])
        iaas_cidr = iaas_cidr_wk['cidr']
        subnet_ip_v6 = iaas_cidr_wk['ip']
        netmask_v6 = iaas_cidr_wk['netmask']

        # List NAL_PORT_MNG(DB)
        params = {}
        params['IaaS_tenant_id'] = iaas_tenant_id
        params['IaaS_network_id'] = iaas_network_id
        params['IaaS_subnet_id'] = iaas_subnet_id
        params['delete_flg'] = 0
        db_list_instance.set_context(db_endpoint_port, params)
        db_list_instance.execute()
        port_list_v4 = db_list_instance.get_return_param()

        for port_res in port_list_v4:

            if port_res['ip_address'] == vrrp_address:
                port_vrrp = port_res

            if port_res['ip_address'] == ce1_address:
                port_ce1 = port_res

            if port_res['ip_address'] == ce2_address:
                port_ce2 = port_res

        # Add IPv6 Tenant LAN(CE1,CE2)
        for router_name, port_ce in {
                self.job_config.VM_ROUTER_NODE_NAME1: port_ce1,
                self.job_config.VM_ROUTER_NODE_NAME2: port_ce2,
        }.items():
            port_id_vim = port_ce['port_id']
            port_id_iaas = port_ce['IaaS_port_id']
            if vim_iaas_with_flg == 0:
                # Get Port(OpenStack:IaaS)
                iaas_port_res = os_ports_instance.get_port(
                    os_endpoint_iaas, port_id_iaas)

                fixed_ips_iaas = iaas_port_res['port']['fixed_ips']
                fixed_ips_iaas.append({'subnet_id': iaas_subnet_id_v6})

                # Update Port(OpenStack:IaaS)
                os_upd_port_iaas = os_ports_instance.update_port(
                    os_endpoint_iaas, port_id_iaas, None, None, fixed_ips_iaas)

                fixed_ips_iaas = os_upd_port_iaas['port']['fixed_ips']

                for fixed_ip in fixed_ips_iaas:
                    if fixed_ip['subnet_id'] == iaas_subnet_id_v6:
                        ip_address_v6 = self.utils.get_ipaddress_compressed(
                            fixed_ip['ip_address'])
                        break

                # List Subnets(OpenStack:VIM)
                subnet_list = os_subnets_instance.list_subnets(os_endpoint_vim)

                subnet_exists_flg = False
                subnet_id = ''
                for rec in subnet_list['subnets']:

                    vim_cidr = self.utils.get_cidr_compressed(rec['cidr'])

                    if rec['network_id'] == network_id \
                                            and vim_cidr['cidr'] == iaas_cidr:
                        subnet_exists_flg = True
                        subnet_id = rec['id']
                        break

                if subnet_exists_flg == False:
                    # Create Subnet(OpenStack:VIM)
                    os_subnet_cre_vim = os_subnets_instance.create_subnet(
                        os_endpoint_vim, network_id, iaas_cidr, '',
                        nal_tenant_id, self.utils.IP_VER_V6)
                    subnet_id = os_subnet_cre_vim['subnet']['id']

                # Get Port(OpenStack:VIM)
                os_port_res_vim = os_ports_instance.get_port(
                    os_endpoint_vim, port_id_vim)

                fixed_ips_vim = os_port_res_vim['port']['fixed_ips']
                fixed_ips_vim.append({
                    'subnet_id': subnet_id,
                    'ip_address': ip_address_v6
                })

                # Update Port(OpenStack:VIM)
                os_port_upd_vim = os_ports_instance.update_port(
                    os_endpoint_vim, port_id_vim, None, None, fixed_ips_vim)

            else:
                # Get Port(OpenStack:VIM)
                vim_port_res = os_ports_instance.get_port(
                    os_endpoint_vim, port_id_vim)

                fixed_ips_vim = vim_port_res['port']['fixed_ips']
                fixed_ips_vim.append({'subnet_id': iaas_subnet_id_v6})

                # Update Port(OpenStack:IaaS)
                os_port_upd_vim = os_ports_instance.update_port(
                    os_endpoint_vim, port_id_vim, None, None, fixed_ips_vim)

                fixed_ips_vim = os_port_upd_vim['port']['fixed_ips']

                for fixed_ip in fixed_ips_vim:
                    if fixed_ip['subnet_id'] == iaas_subnet_id_v6:
                        ip_address_v6 = self.utils.get_ipaddress_compressed(
                            fixed_ip['ip_address'])
                        break

            # Update NAL_PORT_MNG(DB Client)
            keys = [port_ce['ID']]
            params = {}
            params['update_id'] = operation_id
            params['IaaS_subnet_id_v6'] = iaas_subnet_id_v6
            params['ip_address_v6'] = ip_address_v6
            params['netmask_v6'] = netmask_v6
            params['port_info'] = json.dumps(os_port_upd_vim['port'])
            db_update_instance.set_context(db_endpoint_port, keys, params)
            db_update_instance.execute()

            # Set Output Parameters
            output[router_name] = {}
            output[router_name]['network_id'] = port_ce['network_id']
            output[router_name]['port_id'] = port_id_vim
            output[router_name]['ip_address'] = ip_address_v6
            output[router_name]['netmask'] = netmask_v6
            output[router_name]['rec_id'] = port_ce['ID']
            output[router_name]['subnet_ip_address'] = subnet_ip_v6
            output[router_name]['IaaS_subnet_id'] = iaas_subnet_id_v6
            output[router_name]['vlan_id'] = vlan_id
            output[router_name]['nic'] = port_ce['nic']

        if vim_iaas_with_flg == 0:
            vrrp_address = 'fe80::f' + format(int(vlan_id), 'x')
        else:
            if int(vlan_id) <= 65535:
                vrrp_address = 'fe80::' + format(int(vlan_id), 'x')
            else:
                end_address = format(int(vlan_id), 'x')[-4:]
                second_address = format(int(vlan_id), 'x')[:-4]
                vrrp_address = 'fe80::' + second_address + ':' + end_address

        # Set Output Parameters(vrrp)
        output['vrrp'] = {}
        output['vrrp']['network_id'] = port_vrrp['network_id']
        output['vrrp']['port_id'] = port_vrrp['port_id']
        output['vrrp']['ip_address'] = self.utils.get_ipaddress_compressed(
            vrrp_address)
        output['vrrp']['netmask'] = ''
        output['vrrp']['rec_id'] = port_vrrp['ID']
        output['vrrp']['subnet_ip_address'] = ''
        output['vrrp']['IaaS_subnet_id'] = ''
        output['vrrp']['vlan_id'] = vlan_id

        return output