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)