Follow-up to inspection patch 096830414b
				
					
				
			Change-Id: I7ec05e501ec40802efa14cabe14752972919c7a9
This commit is contained in:
		
				
					committed by
					
						
						Lucas Alvares Gomes
					
				
			
			
				
	
			
			
			
						parent
						
							f683a783af
						
					
				
				
					commit
					e3e6000524
				
			@@ -66,8 +66,8 @@ initiating in-band cleaning tasks or deploying an image to the node.
 | 
				
			|||||||
Inspection
 | 
					Inspection
 | 
				
			||||||
~~~~~~~~~~
 | 
					~~~~~~~~~~
 | 
				
			||||||
IPA can conduct hardware inspection on start up and post data to the `Ironic
 | 
					IPA can conduct hardware inspection on start up and post data to the `Ironic
 | 
				
			||||||
Inspector`_. Edit your default PXE/iPXE configuration or kernel command
 | 
					Inspector`_. Edit your default PXE/iPXE configuration or IPA options
 | 
				
			||||||
options baked in the image, and set ``ipa-inspection-callback-url`` to the
 | 
					baked in the image, and set ``ipa-inspection-callback-url`` to the
 | 
				
			||||||
full endpoint of Ironic Inspector, for example::
 | 
					full endpoint of Ironic Inspector, for example::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ipa-inspection-callback-url=http://IP:5050/v1/continue
 | 
					    ipa-inspection-callback-url=http://IP:5050/v1/continue
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,6 +15,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import logging
 | 
					import logging
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import netaddr
 | 
				
			||||||
from oslo_concurrency import processutils
 | 
					from oslo_concurrency import processutils
 | 
				
			||||||
from oslo_config import cfg
 | 
					from oslo_config import cfg
 | 
				
			||||||
from oslo_utils import excutils
 | 
					from oslo_utils import excutils
 | 
				
			||||||
@@ -151,6 +152,10 @@ def discover_network_properties(inventory, data, failures):
 | 
				
			|||||||
    """Discover network and BMC related properties.
 | 
					    """Discover network and BMC related properties.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Populates 'boot_interface', 'ipmi_address' and 'interfaces' keys.
 | 
					    Populates 'boot_interface', 'ipmi_address' and 'interfaces' keys.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    :param inventory: hardware inventory from a hardware manager
 | 
				
			||||||
 | 
					    :param data: mutable data that we'll send to inspector
 | 
				
			||||||
 | 
					    :param failures: AccumulatedFailures object
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    # Both boot interface and IPMI address might not be present,
 | 
					    # Both boot interface and IPMI address might not be present,
 | 
				
			||||||
    # we don't count it as failure
 | 
					    # we don't count it as failure
 | 
				
			||||||
@@ -161,7 +166,9 @@ def discover_network_properties(inventory, data, failures):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    data.setdefault('interfaces', {})
 | 
					    data.setdefault('interfaces', {})
 | 
				
			||||||
    for iface in inventory['interfaces']:
 | 
					    for iface in inventory['interfaces']:
 | 
				
			||||||
        if iface.name == 'lo' or iface.ipv4_address == '127.0.0.1':
 | 
					        is_loopback = (iface.ipv4_address and
 | 
				
			||||||
 | 
					                       netaddr.IPAddress(iface.ipv4_address).is_loopback())
 | 
				
			||||||
 | 
					        if iface.name == 'lo' or is_loopback:
 | 
				
			||||||
            LOG.debug('ignoring local network interface %s', iface.name)
 | 
					            LOG.debug('ignoring local network interface %s', iface.name)
 | 
				
			||||||
            continue
 | 
					            continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -184,6 +191,13 @@ def discover_network_properties(inventory, data, failures):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def discover_scheduling_properties(inventory, data):
 | 
					def discover_scheduling_properties(inventory, data):
 | 
				
			||||||
 | 
					    """Discover properties required for nova scheduler.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    This logic should eventually move to inspector itself.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    :param inventory: hardware inventory from a hardware manager
 | 
				
			||||||
 | 
					    :param data: mutable data that we'll send to inspector
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
    data['cpus'] = inventory['cpu'].count
 | 
					    data['cpus'] = inventory['cpu'].count
 | 
				
			||||||
    data['cpu_arch'] = inventory['cpu'].architecture
 | 
					    data['cpu_arch'] = inventory['cpu'].architecture
 | 
				
			||||||
    data['memory_mb'] = inventory['memory'].physical_mb
 | 
					    data['memory_mb'] = inventory['memory'].physical_mb
 | 
				
			||||||
@@ -209,6 +223,16 @@ def discover_scheduling_properties(inventory, data):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def collect_default(data, failures):
 | 
					def collect_default(data, failures):
 | 
				
			||||||
 | 
					    """The default inspection collector.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    This is the only collector that is called by default. It is designed to be
 | 
				
			||||||
 | 
					    both backward and future compatible:
 | 
				
			||||||
 | 
					        1. it collects exactly the same data as the old bash-based ramdisk
 | 
				
			||||||
 | 
					        2. it also posts the whole inventory which we'll eventually use.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    :param data: mutable data that we'll send to inspector
 | 
				
			||||||
 | 
					    :param failures: AccumulatedFailures object
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
    inventory = hardware.dispatch_to_managers('list_hardware_info')
 | 
					    inventory = hardware.dispatch_to_managers('list_hardware_info')
 | 
				
			||||||
    # These 2 calls are required for backward compatibility and should be
 | 
					    # These 2 calls are required for backward compatibility and should be
 | 
				
			||||||
    # dropped after inspector is ready (probably in Mitaka cycle).
 | 
					    # dropped after inspector is ready (probably in Mitaka cycle).
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -261,7 +261,10 @@ class TestDiscoverNetworkProperties(BaseDiscoverTest):
 | 
				
			|||||||
        self.inventory['interfaces'] = [
 | 
					        self.inventory['interfaces'] = [
 | 
				
			||||||
            hardware.NetworkInterface(name='lo',
 | 
					            hardware.NetworkInterface(name='lo',
 | 
				
			||||||
                                      mac_addr='aa:bb:cc:dd:ee:ff',
 | 
					                                      mac_addr='aa:bb:cc:dd:ee:ff',
 | 
				
			||||||
                                      ipv4_address='127.0.0.1')
 | 
					                                      ipv4_address='127.0.0.1'),
 | 
				
			||||||
 | 
					            hardware.NetworkInterface(name='local-2',
 | 
				
			||||||
 | 
					                                      mac_addr='aa:bb:cc:dd:ee:ff',
 | 
				
			||||||
 | 
					                                      ipv4_address='127.0.1.42'),
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        inspector.discover_network_properties(self.inventory, self.data,
 | 
					        inspector.discover_network_properties(self.inventory, self.data,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,7 @@ pbr<2.0,>=1.6
 | 
				
			|||||||
Babel>=1.3
 | 
					Babel>=1.3
 | 
				
			||||||
eventlet>=0.17.4
 | 
					eventlet>=0.17.4
 | 
				
			||||||
iso8601>=0.1.9
 | 
					iso8601>=0.1.9
 | 
				
			||||||
 | 
					netaddr>=0.7.12,!=0.7.16
 | 
				
			||||||
netifaces>=0.10.4
 | 
					netifaces>=0.10.4
 | 
				
			||||||
oslo.config>=2.3.0 # Apache-2.0
 | 
					oslo.config>=2.3.0 # Apache-2.0
 | 
				
			||||||
oslo.concurrency>=2.3.0 # Apache-2.0
 | 
					oslo.concurrency>=2.3.0 # Apache-2.0
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user