Пример #1
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
Пример #2
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
Пример #3
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
Пример #4
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