def _get_vm_network_data(instance: NovaServer, api: OSApi, mgmt_net_id) -> List[VmDetailsNetworkInterface]: network_interfaces = [] for interface in instance.interface_list(): net_dict = api.get_network_dict(id=interface.net_id) net_name = net_dict["name"] private_ip = get_private_ip(instance, net_name) is_primary_and_predefined = mgmt_net_id == interface.net_id public_ip = get_floating_ip(instance) network_data = [ VmDetailsProperty("IP", private_ip), VmDetailsProperty("MAC Address", interface.mac_addr), VmDetailsProperty("VLAN Name", net_name, hidden=True), ] if public_ip: network_data.append(VmDetailsProperty("Floating IP", public_ip)) current_interface = VmDetailsNetworkInterface( interfaceId=interface.mac_addr, networkId=net_dict["provider:segmentation_id"], isPrimary=is_primary_and_predefined, isPredefined=is_primary_and_predefined, networkData=network_data, privateIpAddress=private_ip, publicIpAddress=public_ip, ) network_interfaces.append(current_interface) return sorted(network_interfaces, key=lambda x: x.networkId)
def get_port_id_for_net_name(self, instance: NovaServer, net_name: str) -> str: for interface in instance.interface_list(): if self.get_network_name(interface.net_id) == net_name: return interface.port_id