def run(self): for input_data_dict in self.input_datas_list: ################################################# # switch-name middle bar exchanger # ################################################# input_data_dict['mgmt_swname'] = re.sub(r"_",r"-",input_data_dict['mgmt_swname']) requested_swname = input_data_dict['mgmt_swname'] requested_network = input_data_dict['mgmt_network'] ################################################# # Port Number extraction (only number string) # ################################################# Ethernet_pattern=re.compile("Ethernet",re.I) Dash_pattern=re.compile("/",re.I) requested_mgmt_portno = ['mgmt_portno_uptor','mgmt_portno_downtor'] for mgmt_portno in requested_mgmt_portno: Ethernet_number = re.split(Ethernet_pattern,input_data_dict[mgmt_portno])[-1] input_data_dict[mgmt_portno] = re.split(Dash_pattern,Ethernet_number)[-1] ################################################# # confirmation of mgmt swname is # ################################################# if not self.mgmt_swname_usage_confirm_from_database('ip_manager', 'switch_configuration_urls', requested_swname): input_data_dict['running_status']=u'error' input_data_dict['error_details']=u'%s network has been already used' % (requested_swname) continue ################################################# # get the ip address pool from network # ################################################# ip_address_pool = self.get_ipaddress_list_from_network(requested_network) if not ip_address_pool: input_data_dict['running_status']=u'error' input_data_dict['error_details']=u'%s network has error' % (requested_network) continue ################################################# # ip usage confirmation # ################################################# if not self.ip_address_usage_confirm_from_database('ip_manager', 'mgmt_network_ip_pools_for_cstack', ip_address_pool): input_data_dict['running_status']=u'error' input_data_dict['error_details']=u'%s network has been already used' % (requested_network) continue ################################################# # get the extra ip address to builder up # ################################################# extra_args={} extra_args['gateway_vip'] = ip_address_pool[-2] extra_args['gateway_r1'] = ip_address_pool[-3] extra_args['gateway_r2'] = ip_address_pool[-4] extra_args['mgmtsw_mip'] = ip_address_pool[-5] extra_args['upsrvsw_mip'] = ip_address_pool[-6] extra_args['dnsrvsw_mip'] = ip_address_pool[-7] ################################################# # shell commander and run the shell # ################################################# shell_arguments = self.linux_args % input_data_dict +" "+ self.extra_linux_args % extra_args shell_command = "%s %s" % (self.builder_class_name,shell_arguments) result_after_shell_execute = self.shell_command_exec(shell_command) if not self.success_pattern.search(result_after_shell_execute): input_data_dict['running_status']=u'error' if result_after_shell_execute: input_data_dict['error_details']=result_after_shell_execute else: input_data_dict['error_details']=u'%s command is failed' % (self.builder_class_name) continue ################################################# # database update processing # # switch_configuration_urls # # switch_network_usages # # mgmt_network_ip_pools_for_cstack # # mgmt_network_ip_pools_for_ostack # # class srv_network_ip_pools_for_cstack # # srv_network_ip_pools_for_ostack # ################################################# switch_configuration_urls(mgmt_swname=input_data_dict['mgmt_swname'], builder_name=self.builder_class_name, url=result_after_shell_execute).save() switch_network_usages(mgmt_swname=input_data_dict['mgmt_swname'], mgmt_network=requested_network).save() for index in range(len(ip_address_pool)): if index == 0: useby_value='network' elif index == len(ip_address_pool)-1: useby_value='broadcast' else: useby_value='' mgmt_network_ip_pools_for_cstack(allocated_ip_address=ip_address_pool[index], mgmt_swname=input_data_dict['mgmt_swname'], usedby=useby_value).save() input_data_dict['running_status']=u'success' input_data_dict['success_details']=u'%s is completed' % (input_data_dict['mgmt_swname']) return self.select_viewer_items(self.input_datas_list,self.selective_viewer)
def run(self): for input_data_dict in self.input_datas_list: ################################################# # switch-name middle bar exchanger # ################################################# input_data_dict['mgmt_swname'] = re.sub(r"_",r"-",input_data_dict['mgmt_swname']) requested_swname = input_data_dict['mgmt_swname'] requested_mgmt_ip_uptor = input_data_dict['mgmt_ip_uptor'] requested_mgmt_ip_downtor = input_data_dict['mgmt_ip_downtor'] requested_mgmt_gateway_vip = input_data_dict['mgmt_gateway_vip'] ################################################# # Port Number extraction (only number string) # ################################################# Ethernet_pattern=re.compile("Ethernet",re.I) Dash_pattern=re.compile("/",re.I) requested_mgmt_portno = ['mgmt_portno_uptor','mgmt_portno_downtor'] for mgmt_portno in requested_mgmt_portno: Ethernet_number = re.split(Ethernet_pattern,input_data_dict[mgmt_portno])[-1] input_data_dict[mgmt_portno] = re.split(Dash_pattern,Ethernet_number)[-1] ################################################# # confirmation of mgmt swname is # ################################################# if not self.mgmt_swname_usage_confirm_from_database('ip_manager', 'switch_configuration_urls', requested_swname): input_data_dict['running_status']=u'error' input_data_dict['error_details']=u'%s has been already used' % (requested_swname) continue ################################################# # confirmation for gateway ip address in # ################################################# ip_address_pool = self.get_ipaddress_list_from_network(requested_mgmt_ip_uptor) matched_gatewayip_pattern = re.compile(requested_mgmt_gateway_vip.split('/')[0]) gateway_status = False for ip_net in ip_address_pool: if matched_gatewayip_pattern.search(ip_net): gateway_status = True break if not gateway_status: input_data_dict['running_status']=u'error' input_data_dict['error_details']=u'%s is not belonged to %s' % (requested_gateway_ip, requested_mgmt_ipnet) continue ################################################# # shell commander and run the shell # ################################################# shell_arguments = self.linux_args % input_data_dict shell_command = "%s %s" % (self.builder_class_name,shell_arguments) result_after_shell_execute = self.shell_command_exec(shell_command) if not self.success_pattern.search(result_after_shell_execute): input_data_dict['running_status']=u'error' if result_after_shell_execute: input_data_dict['error_details']=result_after_shell_execute else: input_data_dict['error_details']=u'%s command is failed' % (self.builder_class_name) continue ################################################# # database update processing # # switch_configuration_urls # ################################################# switch_configuration_urls(mgmt_swname=input_data_dict['mgmt_swname'], builder_name=self.builder_class_name, url=result_after_shell_execute).save() ################################################ # return value # ################################################ input_data_dict['running_status']=u'success' input_data_dict['success_details']=u'%s is completed' % (input_data_dict['mgmt_swname']) return self.select_viewer_items(self.input_datas_list,self.selective_viewer)