Ejemplo n.º 1
0
def vm_networks(aDict):
 """Function docstring for vm_networks TBD

 Args:
  - token (required)
  - vm (required)

 Output:
 """
 ret = {'result':'OK','vm':None,'interfaces':[]}
 with DB() as db:
  db.do("node, service_port, service_url FROM openstack_tokens LEFT JOIN openstack_services ON openstack_tokens.id = openstack_services.id WHERE openstack_tokens.token = '%s' AND service = 'contrail'"%(aDict['token']))
  data = db.get_row()
 controller = Device(data['node'],aDict['token'])
 vm = controller.call(data['service_port'],data['service_url'] + "virtual-machine/%s"%aDict['vm'])['data']['virtual-machine']
 ret['vm'] = vm['name']
 for vmir in vm['virtual_machine_interface_back_refs']:
  vmi = controller.href(vmir['href'])['data']['virtual-machine-interface']
  ip  = controller.href(vmi['instance_ip_back_refs'][0]['href'])['data']['instance-ip']
  network = vmi['virtual_network_refs'][0]['to']
  network.reverse()
  record = {'mac_address':vmi['virtual_machine_interface_mac_addresses']['mac_address'][0],'routing-instance':vmi['routing_instance_refs'][0]['to'][3],'network_uuid':vmi['virtual_network_refs'][0]['uuid'],'network_fqdn':".".join(network),'ip_address':ip['instance_ip_address']}
  if vmi.get('floating_ip_back_refs'):
   fip = controller.href(vmi['floating_ip_back_refs'][0]['href'])['data']['floating-ip']
   record.update({'floating_ip_address':fip['floating_ip_address'],'floating_ip_name':fip['fq_name'][2],'floating_ip_uuid':fip['uuid']})
  ret['interfaces'].append(record)
 return ret
Ejemplo n.º 2
0
def contrail_floating_ips(aDict):
 """Function docstring for contrail_floating_ips TBD

 Args:
  - token (required)
  - virtual_network (required)

 Output:
 """
 ret = {'virtual-network':aDict['virtual_network'],'ip_addresses':[]}
 with DB() as db:
  db.do("SELECT node, service_port, service_url FROM openstack_tokens LEFT JOIN openstack_services ON openstack_tokens.id = openstack_services.id WHERE openstack_tokens.token = '%s' AND service = 'contrail'"%(aDict['token']))
  data = db.get_row()
 controller = Device(data['node'],aDict['token'])
 vn = controller.call(data['service_port'],data['service_url'] + "virtual-network/%s"%aDict['virtual_network'])['data']['virtual-network']
 for fipool in vn.get('floating_ip_pools',[]):
  pool = controller.call(data['service_port'],data['service_url'] +"floating-ip-pool/%s"%(fipool['uuid']) )['data']['floating-ip-pool']
  for fips in pool['floating_ips']:
   fip = controller.call(data['service_port'],data['service_url'] + "floating-ip/%s"%(fips['uuid']))['data']['floating-ip']
   record = {'pool_uuid':pool['uuid'],'pool_name':pool['name'],'ip_address':fip['floating_ip_address'],'uuid':fip['uuid'],'vm_ip_address':fip.get('floating_ip_fixed_ip_address')}
   if fip.get('floating_ip_fixed_ip_address'):
    vmi = controller.href(fip['virtual_machine_interface_refs'][0]['href'])['data']['virtual-machine-interface']
    record.update({'vm_interface':vmi['virtual_machine_refs'][0]['to'][0],'vm_network_uuid':vmi['virtual_network_refs'][0]['uuid'],'vm_network_name':vmi['virtual_network_refs'][0]['to'][2]})
   ret['ip_addresses'].append(record)
 return ret
Ejemplo n.º 3
0
def contrail_vm_interfaces(aDict):
 """Function docstring for contrail_vm_interfaces TBD

 Args:
  - token (required)
  - vm (required)

 Output:
 """
 ret = {'vm':aDict['vm'],'interfaces':[]}
 with DB() as db:
  db.do("SELECT node, service_port, service_url FROM openstack_tokens LEFT JOIN openstack_services ON openstack_tokens.id = openstack_services.id WHERE openstack_tokens.token = '%s' AND service = 'contrail'"%(aDict['token']))
  data = db.get_row()
 controller = Device(data['node'],aDict['token'])
 vmis = controller.call(data['service_port'],data['service_url'] + "virtual-machine/%s"%aDict['vm'])['data']['virtual-machine']['virtual_machine_interface_back_refs']
 for vmi in vmis:
  vmi = controller.href(vmi['href'])['data']['virtual-machine-interface']
  iip = controller.href(vmi['instance_ip_back_refs'][0]['href'])['data']['instance-ip']
  ret['interfaces'].append({'uuid':vmi['uuid'],'ip_address':iip['instance_ip_address'],'virtual_network':iip['virtual_network_refs'][0]['to'][2]})
 return ret
Ejemplo n.º 4
0
def contrail_interfaces(aDict):
 """Function docstring for contrail_interfaces TBD

 Args:
  - token (required)
  - virtual_network (required)

 Output:
 """
 ret = {'virtual-network':aDict['virtual_network'],'ip_addresses':[]}
 with DB() as db:
  db.do("SELECT node, service_port, service_url FROM openstack_tokens LEFT JOIN openstack_services ON openstack_tokens.id = openstack_services.id WHERE openstack_tokens.token = '%s' AND service = 'contrail'"%(aDict['token']))
  data = db.get_row()
 controller = Device(data['node'],aDict['token'])
 res = controller.call(data['service_port'],data['service_url'] + "virtual-network/%s"%aDict['virtual_network'])
 vn = res['data']['virtual-network']
 fqdn = vn['fq_name']
 fqdn.reverse()
 ret['fqdn'] = ".".join(fqdn)
 ret['name'] = vn['name']
 for ip in vn.get('instance_ip_back_refs',[]):
  iip = controller.href(ip['href'])['data']['instance-ip']
  vmi = controller.href(iip['virtual_machine_interface_refs'][0]['href'])['data']['virtual-machine-interface']
  record = {'ip_address':iip['instance_ip_address'],'mac_address':vmi['virtual_machine_interface_mac_addresses']['mac_address'][0]}
  if vmi.get('virtual_machine_refs'):
   record['vm_uuid'] = vmi['virtual_machine_refs'][0]['uuid']
  if vmi.get('virtual_machine_interface_bindings'):
   host = vmi['virtual_machine_interface_bindings']['key_value_pair']
   for kvp in host:
    if kvp['key'] == 'host_id':
     record['vm_binding'] = kvp['value']
     break
  if vmi.get('logical_interface_back_refs'):
   li = vmi['logical_interface_back_refs'][0]
   record['logical_interface'] = li['to'][1] + "-" + li['to'][3]
   record['logical_interface_uuid'] = li['uuid']
  if vmi.get('virtual_machine_interface_device_owner'):
   record['vm_interface_owner'] = vmi['virtual_machine_interface_device_owner']
  ret['ip_addresses'].append(record)
 return ret