The nova.virt.ironic.driver Module

A driver wrapping the Ironic API, such that Nova may provision bare metal resources.

class IronicDriver(virtapi, read_only=False)

Bases: nova.virt.driver.ComputeDriver

Hypervisor driver for Ironic - bare metal provisioning.

capabilities = {'has_imagecache': False, 'supports_migrate_to_same_host': False, 'supports_recreate': False}
deallocate_networks_on_reschedule(instance)

Does the driver want networks deallocated on reschedule?

Parameters:instance – the instance object.
Returns:Boolean value. If True deallocate networks on reschedule.
destroy(context, instance, network_info, block_device_info=None, destroy_disks=True, migrate_data=None)

Destroy the specified instance, if it can be found.

Parameters:
  • context – The security context.
  • instance – The instance object.
  • network_info – Instance network information.
  • block_device_info – Instance block device information. Ignored by this driver.
  • destroy_disks – Indicates if disks should be destroyed. Ignored by this driver.
  • migrate_data – implementation specific params. Ignored by this driver.
ensure_filtering_rules_for_instance(instance, network_info)

Set up filtering rules.

Parameters:
  • instance – The instance object.
  • network_info – Instance network information.
get_available_nodes(refresh=False)

Returns the UUIDs of all nodes in the Ironic inventory.

Parameters:refresh – Boolean value; If True run update first. Ignored by this driver.
Returns:a list of UUIDs
get_available_resource(nodename)

Retrieve resource information.

This method is called when nova-compute launches, and as part of a periodic task that records the results in the DB.

Parameters:nodename – the UUID of the node.
Returns:a dictionary describing resources.
get_info(instance)

Get the current state and resource usage for this instance.

If the instance is not found this method returns (a dictionary with) NOSTATE and all resources == 0.

Parameters:instance – the instance object.
Returns:a InstanceInfo object
init_host(host)

Initialize anything that is necessary for the driver to function.

Parameters:host – the hostname of the compute host.
instance_exists(instance)

Checks the existence of an instance.

Checks the existence of an instance. This is an override of the base method for efficiency.

Parameters:instance – The instance object.
Returns:True if the instance exists. False if not.
list_instance_uuids()

Return the UUIDs of all the instances provisioned.

Returns:a list of instance UUIDs.
list_instances()

Return the names of all the instances provisioned.

Returns:a list of instance names.
macs_for_instance(instance)

List the MAC addresses of an instance.

List of MAC addresses for the node which this instance is associated with.

Parameters:instance – the instance object.
Returns:None, or a set of MAC ids (e.g. set([‘12:34:56:78:90:ab’])). None means ‘no constraints’, a set means ‘these and only these MAC addresses’.
network_binding_host_id(context, instance)

Get host ID to associate with network ports.

This defines the binding:host_id parameter to the port-create calls for Neutron. If using a flat network, use the default behavior and allow the port to bind immediately. If using separate networks for the control plane and tenants, return None here to indicate that the port should not yet be bound; Ironic will make a port-update call to Neutron later to tell Neutron to bind the port.

Parameters:
  • context – request context
  • instance – nova.objects.instance.Instance that the network ports will be associated with
Returns:

a string representing the host ID

node_is_available(nodename)

Confirms a Nova hypervisor node exists in the Ironic inventory.

Parameters:nodename – The UUID of the node.
Returns:True if the node exists, False if not.
plug_vifs(instance, network_info)

Plug VIFs into networks.

Parameters:
  • instance – The instance object.
  • network_info – Instance network information.
power_off(instance, timeout=0, retry_interval=0)

Power off the specified instance.

NOTE: Ironic does not support soft-off, so this method ignores
timeout and retry_interval parameters.
NOTE: Unlike the libvirt driver, this method does not delete
and recreate the instance; it preserves local state.
Parameters:
  • instance – The instance object.
  • timeout – time to wait for node to shutdown. Ignored by this driver.
  • retry_interval – How often to signal node while waiting for it to shutdown. Ignored by this driver.
power_on(context, instance, network_info, block_device_info=None)

Power on the specified instance.

NOTE: Unlike the libvirt driver, this method does not delete
and recreate the instance; it preserves local state.
Parameters:
  • context – The security context.
  • instance – The instance object.
  • network_info – Instance network information. Ignored by this driver.
  • block_device_info – Instance block device information. Ignored by this driver.
reboot(context, instance, network_info, reboot_type, block_device_info=None, bad_volumes_callback=None)

Reboot the specified instance.

NOTE: Ironic does not support soft-off, so this method
always performs a hard-reboot.
NOTE: Unlike the libvirt driver, this method does not delete
and recreate the instance; it preserves local state.
Parameters:
  • context – The security context.
  • instance – The instance object.
  • network_info – Instance network information. Ignored by this driver.
  • reboot_type – Either a HARD or SOFT reboot. Ignored by this driver.
  • block_device_info – Info pertaining to attached volumes. Ignored by this driver.
  • bad_volumes_callback – Function to handle any bad volumes encountered. Ignored by this driver.
rebuild(context, instance, image_meta, injected_files, admin_password, bdms, detach_block_devices, attach_block_devices, network_info=None, recreate=False, block_device_info=None, preserve_ephemeral=False)

Rebuild/redeploy an instance.

This version of rebuild() allows for supporting the option to preserve the ephemeral partition. We cannot call spawn() from here because it will attempt to set the instance_uuid value again, which is not allowed by the Ironic API. It also requires the instance to not have an ‘active’ provision state, but we cannot safely change that. Given that, we implement only the portions of spawn() we need within rebuild().

Parameters:
  • context – The security context.
  • instance – The instance object.
  • image_meta – Image object returned by nova.image.glance that defines the image from which to boot this instance. Ignored by this driver.
  • injected_files – User files to inject into instance. Ignored by this driver.
  • admin_password – Administrator password to set in instance. Ignored by this driver.
  • bdms – block-device-mappings to use for rebuild. Ignored by this driver.
  • detach_block_devices – function to detach block devices. See nova.compute.manager.ComputeManager:_rebuild_default_impl for usage. Ignored by this driver.
  • attach_block_devices – function to attach block devices. See nova.compute.manager.ComputeManager:_rebuild_default_impl for usage. Ignored by this driver.
  • network_info – Instance network information. Ignored by this driver.
  • recreate – Boolean value; if True the instance is recreated on a new hypervisor - all the cleanup of old state is skipped. Ignored by this driver.
  • block_device_info – Instance block device information. Ignored by this driver.
  • preserve_ephemeral – Boolean value; if True the ephemeral must be preserved on rebuild.
refresh_instance_security_rules(instance)

Refresh security group rules from data store.

Gets called when an instance gets added to or removed from the security group the instance is a member of or if the group gains or loses a rule.

Parameters:instance – The instance object.
refresh_security_group_rules(security_group_id)

Refresh security group rules from data store.

Invoked when security group rules are updated.

Parameters:security_group_id – The security group id.
spawn(context, instance, image_meta, injected_files, admin_password, network_info=None, block_device_info=None)

Deploy an instance.

Parameters:
  • context – The security context.
  • instance – The instance object.
  • image_meta – Image dict returned by nova.image.glance that defines the image from which to boot this instance.
  • injected_files – User files to inject into instance.
  • admin_password – Administrator password to set in instance.
  • network_info – Instance network information.
  • block_device_info – Instance block device information. Ignored by this driver.
unfilter_instance(instance, network_info)

Stop filtering instance.

Parameters:
  • instance – The instance object.
  • network_info – Instance network information.
unplug_vifs(instance, network_info)

Unplug VIFs from networks.

Parameters:
  • instance – The instance object.
  • network_info – Instance network information.
map_power_state(state)

Previous topic

The nova.virt.ironic.client_wrapper Module

Next topic

The nova.virt.ironic.ironic_states Module

Project Source

This Page