예제 #1
0
    def _get_vm_network_data(self, vm, reserved_networks, ip_regex,
                             wait_for_ip, logger):
        network_interfaces = []

        if wait_for_ip == 'True':
            primary_ip = self._get_primary_ip(vm, ip_regex, logger)
        else:
            primary_ip = None

        net_devices = [
            d for d in vm.config.hardware.device
            if isinstance(d, vim.vm.device.VirtualEthernetCard)
        ]

        for device in net_devices:
            network = VNicService.get_network_by_device(
                vm, device, self.pyvmomi_service, logger)
            vlan_id = self._convert_vlan_id_to_str(
                VNicService.get_network_vlan_id(network))
            private_ip = self._get_ip_by_device(vm, device)

            if vlan_id and (network.name.startswith('QS_')
                            or network.name in reserved_networks):
                is_primary = private_ip and primary_ip == private_ip
                is_predefined = network.name in reserved_networks

                network_data = [
                    VmDetailsProperty(key='IP', value=private_ip),
                    VmDetailsProperty(key='MAC Address',
                                      value=device.macAddress),
                    VmDetailsProperty(key='Network Adapter',
                                      value=device.deviceInfo.label),
                    VmDetailsProperty(key='Port Group Name',
                                      value=network.name)
                ]

                current_interface = VmDetailsNetworkInterface(
                    interfaceId=device.macAddress,
                    networkId=vlan_id,
                    isPrimary=is_primary,
                    isPredefined=is_predefined,
                    networkData=network_data,
                    privateIpAddress=private_ip)
                network_interfaces.append(current_interface)

        return network_interfaces