def __attach_nics(self, entity): # Attach NICs to VM, if specified: vnic_profiles_service = self._connection.system_service().vnic_profiles_service() nics_service = self._service.service(entity.id).nics_service() for nic in self._module.params['nics']: if search_by_name(nics_service, nic.get('name')) is None: if not self._module.check_mode: nics_service.add( otypes.Nic( name=nic.get('name'), interface=otypes.NicInterface( nic.get('interface', 'virtio') ), vnic_profile=otypes.VnicProfile( id=search_by_name( vnic_profiles_service, nic.get('profile_name'), ).id ) if nic.get('profile_name') else None, mac=otypes.Mac( address=nic.get('mac_address') ) if nic.get('mac_address') else None, ) ) self.changed = True
def create(self, name, vnic_profile, interface=VnicInterfaceType.VIRTIO, mac_addr=None): """ :type name: string :type vnic_profile: netlib.VnicProfile :type interface: netlib.VnicInterfaceType :type mac_addr: string """ sdk_type = types.Nic(name=name, interface=interface, vnic_profile=vnic_profile.get_sdk_type()) if mac_addr is not None: sdk_type.mac = types.Mac(address=mac_addr) try: self._create_sdk_entity(sdk_type) except EntityCreationError as err: message = err.args[0] if 'MAC Address' in message and 'in use' in message: raise MacAddrInUseError(message) elif 'Not enough MAC addresses' in message: raise MacPoolIsInFullCapacityError(message) raise
def build_entity(self): return otypes.Nic( name=self._module.params.get('name'), interface=otypes.NicInterface(self._module.params.get('interface')) if self._module.params.get('interface') else None, vnic_profile=otypes.VnicProfile(id=self.vnic_id, ) if self.vnic_id else None, mac=otypes.Mac(address=self._module.params.get('mac_address')) if self._module.params.get('mac_address') else None, )
def __attach_nics(self, entity): # Attach NICs to instance type, if specified: nics_service = self._service.service(entity.id).nics_service() for nic in self.param('nics'): if search_by_name(nics_service, nic.get('name')) is None: if not self._module.check_mode: nics_service.add( otypes.Nic( name=nic.get('name'), interface=otypes.NicInterface( nic.get('interface', 'virtio')), vnic_profile=otypes.VnicProfile( id=self.__get_vnic_profile_id(nic), ) if nic.get('profile_name') else None, mac=otypes.Mac(address=nic.get('mac_address')) if nic.get('mac_address') else None, )) self.changed = True
def mac_change(kvm_vnic): # Initiate oVirt SDK Connection try: connection = ovirt_connection() connection.authenticate() except: print("Failed to connect to oVirt engine!") exit(1) # Get the reference to the "vms" service: try: vms_service = connection.system_service().vms_service() except: print("Unable to establish OLVM system connection") exit(1) for i in range(len(kvm_vnic)): if "kvm" in kvm_vnic[i]['display_name']: try: # Find the virtual machine: vm = vms_service.list( search="name={}".format(kvm_vnic[i]['display_name']))[0] # Locate the service that manages the virtual machine: vm_service = vms_service.vm_service(vm.id) # Locate the service that manages the NICS devices of the VM: nics_service = vm_service.nics_service() # Get the first found NIC: nic = nics_service.list()[0] # Locate the service that manages the NIC device found in previous step nic_service = nics_service.nic_service(nic.id) # Update the NIC MAC address nic_service.update(nic=types.Nic( mac=types.Mac(address=kvm_vnic[i]['mac_address']), ), ) print("VM " + kvm_vnic[i]['display_name'] + " NIC MAC address was changed to: " + kvm_vnic[i]['mac_address']) except: print("Unable to change MAC address to " + kvm_vnic[i]['mac_address'] + " for VM " + kvm_vnic[i]['display_name']) connection.close()
def add_vm_network( self, vm: types.Vm, name: str, profile_name: str, mac: str, interface_type: types.NicInterface = types.NicInterface.VIRTIO ) -> types.Nic: profiles_service = self._connection.system_service( ).vnic_profiles_service() profile = find_one_in_list_by_name(profiles_service.list(), profile_name) nics_service = self._connection.system_service().vms_service( ).vm_service(vm.id).nics_service() return nics_service.add( types.Nic( name=name, mac=types.Mac(address=mac), interface=interface_type, vnic_profile=types.VnicProfile(id=profile.id, ), ))
def add_nic(api): NIC_NAME = 'eth0' # Locate the vnic profiles service and use it to find the ovirmgmt # network's profile id: profiles_service = api.system_service().vnic_profiles_service() profile_id = next((profile.id for profile in profiles_service.list() if profile.name == MANAGEMENT_NETWORK), None) # Empty profile id would cause fail in later tests (e.g. add_filter): nt.assert_is_not_none(profile_id) # Locate the virtual machines service and use it to find the virtual # machine: vms_service = api.system_service().vms_service() vm = vms_service.list(search='name=%s' % VM0_NAME)[0] # Locate the service that manages the network interface cards of the # virtual machine: nics_service = vms_service.vm_service(vm.id).nics_service() # Use the "add" method of the network interface cards service to add the # new network interface card: nics_service.add( types.Nic( name=NIC_NAME, interface=types.NicInterface.VIRTIO, vnic_profile=types.VnicProfile(id=profile_id), ), ) vm = vms_service.list(search='name=%s' % VM2_NAME)[0] nics_service = vms_service.vm_service(vm.id).nics_service() nics_service.add( types.Nic( name=NIC_NAME, interface=types.NicInterface.E1000, mac=types.Mac(address=UNICAST_MAC_OUTSIDE_POOL), vnic_profile=types.VnicProfile(id=profile_id), ), )