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
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
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
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