def attach_interface(self, instance, vif): if not self._check_hotplug_available(instance): raise exception.InterfaceAttachFailed(instance_uuid=instance.uuid) LOG.debug('Attaching vif: %s', vif['id'], instance=instance) self._vmutils.create_nic(instance.name, vif['id'], vif['address']) self._vif_driver.plug(instance, vif)
def _check_hotplug_is_available(self, instance): if (self._get_vm_state( instance.name) == constants.HYPERV_VM_STATE_DISABLED): return False if not self._hostutils.check_min_windows_version(6, 4): LOG.error( _LE("This version of Windows does not support vNIC " "hot plugging.")) raise exception.InterfaceAttachFailed(instance_uuid=instance.uuid) if (self._vmutils.get_vm_gen(instance.name) == constants.VM_GEN_1): LOG.error(_LE("Cannot hot plug vNIC to a first generation " "VM.")) raise exception.InterfaceAttachFailed(instance_uuid=instance.uuid) return True
def _attach_interface_physical(self, instance, image_meta, vif): icli = client_wrapper.IronicClientWrapper() try: node = icli.call("node.get", instance['node']) except ironic.exc.NotFound: return None ports = icli.call("node.list_ports", node.uuid) try: for p in ports: port = icli.call("port.get", p.uuid) if port.extra.get('type', None) == 'pxe': continue port_id = unicode(vif['id']) patch = [{ 'op': 'add', 'path': '/extra/vif_port_id', 'value': port_id }] icli.call("port.update", p.uuid, patch) break except Exception as e: LOG.error( _("Error plugging vif: %s, instance is %s, " "Traceback is %s") % (e, instance['uuid'], traceback.format_exc())) self._detach_interface_physical(instance, vif) raise exception.InterfaceAttachFailed( instance_uuid=instance['uuid'])
def _attach_interface_virtual(self, instance, image_meta, vif): node = self._transfer_instance_to_node(instance) host_id = node.extra.get('cps_id') kwargs = {"instance": instance, "image_meta": image_meta, "vif": vif} try: self.ironicAgent.attach_interface(host_id, kwargs) except Exception as e: LOG.error( _("Error plugging vif: %s, instance is %s, " "Traceback is %s") % (e, instance['uuid'], traceback.format_exc())) self._detach_interface_virtual(instance, vif) raise exception.InterfaceAttachFailed( instance_uuid=instance['uuid'])
def attach_interface(self, context, instance, image_meta, vif): if vif['id'] in self._interfaces: raise exception.InterfaceAttachFailed(instance_uuid=instance.uuid) self._interfaces[vif['id']] = vif
def attach_interface(self, instance, image_meta, vif): if vif['id'] in self._interfaces: raise exception.InterfaceAttachFailed('duplicate') self._interfaces[vif['id']] = vif
def attach_interface(self, instance, image_meta, network_info): for (network, mapping) in network_info: if mapping['vif_uuid'] in self._interfaces: raise exception.InterfaceAttachFailed('duplicate') self._interfaces[mapping['vif_uuid']] = mapping
def attach_interface(self, instance, image_meta, network_info): for vif in [network_info]: if vif['id'] in self._interfaces: raise exception.InterfaceAttachFailed('duplicate') self._interfaces[vif['id']] = vif
def attach_interface(self, instance, image_meta, vif): LOG.debug("AWS: Attaching interface", instance=instance) if vif['id'] in self._interfaces: raise exception.InterfaceAttachFailed('duplicate') self._interfaces[vif['id']] = vif
def attach_interface(self, instance, image_meta, vif): LOG.debug("******* ATTTACH INTERFACE *******") if vif['id'] in self._interfaces: raise exception.InterfaceAttachFailed('duplicate') self._interfaces[vif['id']] = vif