From 0b68e1807717933c74189c5a59e3380c3ee7c765 Mon Sep 17 00:00:00 2001 From: Zhou Ya Date: Fri, 2 Sep 2016 15:40:57 +0800 Subject: [PATCH] avoid error raised by ironic physical_node not exist read data from daisy db Change-Id: I63b5d63bcd369f3145383df46aa240bea5858082 Signed-off-by: Zhou Ya --- code/daisy/daisy/api/v1/hosts.py | 3 +++ code/daisy/daisy/common/utils.py | 17 ----------------- code/daisy/daisy/common/vcpu_pin.py | 17 ++++++++++++----- 3 files changed, 15 insertions(+), 22 deletions(-) diff --git a/code/daisy/daisy/api/v1/hosts.py b/code/daisy/daisy/api/v1/hosts.py index 3d20edb3..9f2dd6e0 100755 --- a/code/daisy/daisy/api/v1/hosts.py +++ b/code/daisy/daisy/api/v1/hosts.py @@ -34,6 +34,7 @@ from daisy.common import exception from daisy.common import property_utils from daisy.common import utils from daisy.common import wsgi +from daisy.common import vcpu_pin from daisy import i18n from daisy import notifier import daisy.registry.client.v1.api as registry @@ -630,6 +631,8 @@ class Controller(controller.BaseController): self.check_discover_state_with_hwm(req, host_meta) else: self.check_discover_state_with_no_hwm(req, host_meta) + host_vcpu_pin = vcpu_pin.allocate_cpus(host_meta) + host_meta.update(host_vcpu_pin) if 'role' in host_meta and 'CONTROLLER_HA' in host_meta['role']: host_cluster_name = host_meta['cluster'] params = {'filters': {u'name': host_cluster_name}} diff --git a/code/daisy/daisy/common/utils.py b/code/daisy/daisy/common/utils.py index 82163aba..91eed163 100755 --- a/code/daisy/daisy/common/utils.py +++ b/code/daisy/daisy/common/utils.py @@ -885,23 +885,6 @@ def is_ip_in_ranges(ip, ip_ranges): return False -def get_host_hw_info(host_interface): - host_hw_config = {} - ironicclient = get_ironicclient() - if host_interface: - min_mac = get_host_min_mac(host_interface) - try: - host_obj = ironicclient.physical_node.get(min_mac) - host_hw_config = dict([(f, getattr(host_obj, f, '')) - for f in ['system', 'memory', 'cpu', - 'disks', 'interfaces', - 'pci', 'devices']]) - except Exception: - LOG.exception(_LE("Unable to find ironic data %s") - % Exception) - return host_hw_config - - def get_dvs_interfaces(host_interfaces): dvs_interfaces = [] if not isinstance(host_interfaces, list): diff --git a/code/daisy/daisy/common/vcpu_pin.py b/code/daisy/daisy/common/vcpu_pin.py index 381218c9..9e65077b 100755 --- a/code/daisy/daisy/common/vcpu_pin.py +++ b/code/daisy/daisy/common/vcpu_pin.py @@ -304,10 +304,12 @@ def allocate_clc_cpus(host_detail): return pci_cpu_sets host_interfaces = host_detail.get('interfaces') - if host_interfaces: - host_hw_info = utils.get_host_hw_info(host_interfaces) - else: - return pci_cpu_sets + host_hw_info = {'system': '', 'memory': '', + 'cpu': '', 'disk': '', 'interfaces': '', + 'pci': '', 'devices': ''} + host_obj = host_detail + for f in host_hw_info: + host_hw_info[f] = host_obj.get(f) host_id = host_detail.get('id') clc_pci = utils.get_clc_pci_info(host_hw_info['pci'].values()) @@ -342,7 +344,12 @@ def allocate_dvs_cpus(host_detail): return dvs_cpu_sets host_id = host_detail.get('id') - host_hw_info = utils.get_host_hw_info(host_interfaces) + host_hw_info = {'system': '', 'memory': '', + 'cpu': '', 'disk': '', 'interfaces': '', + 'pci': '', 'devices': ''} + host_obj = host_detail + for f in host_hw_info: + host_hw_info[f] = host_obj.get(f) numa_cpus = utils.get_numa_node_cpus(host_hw_info.get('cpu', {})) if not numa_cpus or not numa_cpus['numa_node0']: msg = "No NUMA CPU found from of host '%s'" % host_id