from nova.openstack.common import context from nova.openstack.common.gettextutils import _ from nova.openstack.common import importutils from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova.openstack.common import timeutils LOG = logging.getLogger(__name__) notifier_opts = [ cfg.MultiStrOpt('notification_driver', default=[], deprecated_name='list_notifier_drivers', help='Driver or drivers to handle sending notifications'), cfg.StrOpt('default_notification_level', default='INFO', help='Default notification level for outgoing notifications'), cfg.StrOpt('default_publisher_id', default='$host', help='Default publisher_id for outgoing notifications'), ] CONF = cfg.CONF CONF.register_opts(notifier_opts) WARN = 'WARN' INFO = 'INFO' ERROR = 'ERROR' CRITICAL = 'CRITICAL' DEBUG = 'DEBUG'
from nova import exception from nova import flags from nova.openstack.common import cfg from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova import utils from nova.virt.disk import guestfs from nova.virt.disk import loop from nova.virt.disk import nbd from nova.virt import images LOG = logging.getLogger(__name__) disk_opts = [ cfg.StrOpt('injected_network_template', default='$pybasedir/nova/virt/interfaces.template', help='Template file for injected network'), cfg.ListOpt('img_handlers', default=['loop', 'nbd', 'guestfs'], help='Order of methods used to mount disk images'), # NOTE(yamahata): ListOpt won't work because the command may include a # comma. For example: # # mkfs.ext3 -O dir_index,extent -E stride=8,stripe-width=16 # --label %(fs_label)s %(target)s # # list arguments are comma separated and there is no way to # escape such commas. # cfg.MultiStrOpt(
from nova.openstack.common import cfg from nova.openstack.common import excutils from nova.openstack.common import importutils from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova.openstack.common.rpc import common as rpc_common from nova.openstack.common import uuidutils from nova import utils cell_messaging_opts = [ cfg.IntOpt('max_hop_count', default=10, help='Maximum number of hops for cells routing.'), cfg.StrOpt('scheduler', default='nova.cells.scheduler.CellsScheduler', help='Cells scheduler to use')] CONF = cfg.CONF CONF.import_opt('name', 'nova.cells.opts', group='cells') CONF.import_opt('call_timeout', 'nova.cells.opts', group='cells') CONF.register_opts(cell_messaging_opts, group='cells') LOG = logging.getLogger(__name__) # Separator used between cell names for the 'full cell name' and routing # path. _PATH_CELL_SEP = '!' def _reverse_path(path):
from copy import deepcopy import sys from cinderclient import exceptions as cinder_exception from cinderclient import service_catalog from cinderclient.v1 import client as cinder_client from nova.db import base from nova import exception from nova.openstack.common import cfg from nova.openstack.common import log as logging cinder_opts = [ cfg.StrOpt('cinder_catalog_info', default='volume:cinder:publicURL', help='Info to match when looking for cinder in the service ' 'catalog. Format is : separated values of the form: ' '<service_type>:<service_name>:<endpoint_type>'), cfg.StrOpt('cinder_endpoint_template', default=None, help='Override service catalog lookup with template for cinder ' 'endpoint e.g. http://localhost:8776/v1/%(project_id)s'), cfg.IntOpt('cinder_http_retries', default=3, help='Number of cinderclient retries on failed http calls'), ] CONF = cfg.CONF CONF.register_opts(cinder_opts) LOG = logging.getLogger(__name__)
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from nova import flags from nova import log as logging from nova.network.quantum import client as quantum_client from nova.openstack.common import cfg LOG = logging.getLogger(__name__) quantum_opts = [ cfg.StrOpt('quantum_connection_host', default='127.0.0.1', help='HOST for connecting to quantum'), cfg.StrOpt('quantum_connection_port', default='9696', help='PORT for connecting to quantum'), cfg.StrOpt('quantum_default_tenant_id', default="default", help='Default tenant id when creating quantum networks'), ] FLAGS = flags.FLAGS FLAGS.register_opts(quantum_opts) class QuantumClientConnection(object): """Abstracts connection to Quantum service into higher level
from nova.openstack.common import log as logging from nova.openstack.common import timeutils from nova import utils resource_tracker_opts = [ cfg.IntOpt('reserved_host_disk_mb', default=0, help='Amount of disk in MB to reserve for the host'), cfg.IntOpt('reserved_host_memory_mb', default=512, help='Amount of memory in MB to reserve for the host'), cfg.IntOpt('claim_timeout_seconds', default=600, help='How long, in seconds, before a resource claim times out'), cfg.StrOpt('compute_stats_class', default='nova.compute.stats.Stats', help='Class that will manage stats for the local compute host') ] FLAGS = flags.FLAGS FLAGS.register_opts(resource_tracker_opts) LOG = logging.getLogger(__name__) COMPUTE_RESOURCE_SEMAPHORE = "compute_resources" class Claim(object): """A declaration that a compute host operation will require free resources. This information will be used to help keep the local compute hosts's ComputeNode model in sync to aid the scheduler in making efficient / more
# under the License. from nova import context from nova import network from nova.network import linux_net from nova.openstack.common import cfg from nova.openstack.common import importutils from nova.openstack.common import lockutils from nova.openstack.common import log as logging from nova.virt import netutils LOG = logging.getLogger(__name__) firewall_opts = [ cfg.StrOpt('firewall_driver', default=None, help='Firewall driver ' '(defaults to hypervisor specific iptables driver)'), cfg.BoolOpt('allow_same_net_traffic', default=True, help='Whether to allow network traffic from same network'), ] CONF = cfg.CONF CONF.register_opts(firewall_opts) CONF.import_opt('use_ipv6', 'nova.netconf') def load_driver(default, *args, **kwargs): fw_class = importutils.import_class(CONF.firewall_driver or default) return fw_class(*args, **kwargs)
# vim: tabstop=4 shiftwidth=4 softtabstop=4 from nova import conductor from nova.db import base from nova import exception from nova.network import api as network_api from nova.network import model as network_model from nova.network import quantumv2 from nova.openstack.common import cfg from nova.openstack.common import excutils from nova.openstack.common import log as logging from nova.openstack.common import uuidutils quantum_opts = [ cfg.StrOpt('quantum_url', default='http://127.0.0.1:9696', help='URL for connecting to quantum'), cfg.IntOpt('quantum_url_timeout', default=30, help='timeout value for connecting to quantum in seconds'), cfg.StrOpt('quantum_admin_username', help='username for connecting to quantum in admin context'), cfg.StrOpt('quantum_admin_password', help='password for connecting to quantum in admin context', secret=True), cfg.StrOpt('quantum_admin_tenant_name', help='tenant name for connecting to quantum in admin context'), cfg.StrOpt('quantum_region_name', help='region name for connecting to quantum in admin context'), cfg.StrOpt('quantum_admin_auth_url', default='http://localhost:5000/v2.0',
from nova import db from nova import exception from nova import flags from nova import log as logging from nova.openstack.common import cfg from nova.virt import driver from nova.virt.xenapi import host from nova.virt.xenapi import pool from nova.virt.xenapi import vmops from nova.virt.xenapi import volumeops LOG = logging.getLogger(__name__) xenapi_opts = [ cfg.StrOpt('xenapi_connection_url', default=None, help='URL for connection to XenServer/Xen Cloud Platform. ' 'Required if connection_type=xenapi.'), cfg.StrOpt('xenapi_connection_username', default='root', help='Username for connection to XenServer/Xen Cloud Platform. ' 'Used only if connection_type=xenapi.'), cfg.StrOpt('xenapi_connection_password', default=None, help='Password for connection to XenServer/Xen Cloud Platform. ' 'Used only if connection_type=xenapi.'), cfg.IntOpt('xenapi_connection_concurrent', default=5, help='Maximum number of concurrent XenAPI connections. ' 'Used only if connection_type=xenapi.'), cfg.FloatOpt('xenapi_vhd_coalesce_poll_interval', default=5.0,
# License for the specific language governing permissions and limitations # under the License. """ A remote procedure call (rpc) abstraction. For some wrappers that add message versioning to rpc, see: rpc.dispatcher rpc.proxy """ from nova.openstack.common import cfg from nova.openstack.common import importutils rpc_opts = [ cfg.StrOpt('rpc_backend', default='%s.impl_kombu' % __package__, help="The messaging module to use, defaults to kombu."), cfg.IntOpt('rpc_thread_pool_size', default=64, help='Size of RPC thread pool'), cfg.IntOpt('rpc_conn_pool_size', default=30, help='Size of RPC connection pool'), cfg.IntOpt('rpc_response_timeout', default=60, help='Seconds to wait for a response from call or multicall'), cfg.IntOpt('rpc_cast_timeout', default=30, help='Seconds to wait before a cast expires (TTL). ' 'Only supported by impl_zmq.'), cfg.ListOpt('allowed_rpc_exception_modules',
""" from nova import exception from nova import flags from nova import log as logging from nova.openstack.common import cfg from nova.volume import driver from nova.volume import nexenta from nova.volume.nexenta import jsonrpc LOG = logging.getLogger("nova.volume.nexenta.volume") FLAGS = flags.FLAGS nexenta_opts = [ cfg.StrOpt('nexenta_host', default='', help='IP address of Nexenta SA'), cfg.IntOpt('nexenta_rest_port', default=2000, help='HTTP port to connect to Nexenta REST API server'), cfg.StrOpt('nexenta_rest_protocol', default='auto', help='Use http or https for REST connection (default auto)'), cfg.StrOpt('nexenta_user', default='admin', help='User name to connect to Nexenta SA'), cfg.StrOpt('nexenta_password', default='nexenta', help='Password to connect to Nexenta SA'), cfg.IntOpt('nexenta_iscsi_target_portal_port', default=3260,
(Beginning of) the contract that compute drivers must follow, and shared types that support that contract """ import sys from nova.openstack.common import cfg from nova.openstack.common import importutils from nova.openstack.common import log as logging from nova import utils driver_opts = [ cfg.StrOpt('compute_driver', help='Driver to use for controlling virtualization. Options ' 'include: libvirt.LibvirtDriver, xenapi.XenAPIDriver, ' 'fake.FakeDriver, baremetal.BareMetalDriver, ' 'vmwareapi.VMWareESXDriver'), ] CONF = cfg.CONF CONF.register_opts(driver_opts) LOG = logging.getLogger(__name__) def block_device_info_get_root(block_device_info): block_device_info = block_device_info or {} return block_device_info.get('root_device_name') def block_device_info_get_swap(block_device_info):
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # from nova.virt.baremetal import tilera from nova.virt.baremetal import fake from nova.openstack.common import cfg from nova import flags from nova import exception FLAGS = flags.FLAGS baremetal_opts = [ cfg.StrOpt('baremetal_driver', default='tilera', help='Bare-metal driver runs on') ] FLAGS.register_opts(baremetal_opts) def get_baremetal_nodes(): d = FLAGS.baremetal_driver if d == 'tilera': return tilera.get_baremetal_nodes() elif d == 'fake': return fake.get_baremetal_nodes() else: raise exception.Error(_("Unknown baremetal driver %(d)s"))
# # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ Global cells config options """ from nova.openstack.common import cfg cells_opts = [ cfg.BoolOpt('enable', default=False, help='Enable cell functionality'), cfg.StrOpt('topic', default='cells', help='the topic cells nodes listen on'), cfg.StrOpt('manager', default='nova.cells.manager.CellsManager', help='Manager for cells'), cfg.StrOpt('name', default='nova', help='name of this cell'), cfg.ListOpt('capabilities', default=['hypervisor=xenserver;kvm', 'os=linux;windows'], help='Key/Multi-value list with the capabilities of the cell'), cfg.IntOpt('call_timeout', default=60, help='Seconds to wait for response from a call to a cell.'), ] cfg.CONF.register_opts(cells_opts, group='cells')
import nova.exception import nova.flags as flags from nova.openstack.common import cfg from nova.openstack.common import log as logging from nova.db.sqlalchemy.session import add_regexp_listener from nova.db.sqlalchemy.session import debug_mysql_do_query from nova.db.sqlalchemy.session import get_maker from nova.db.sqlalchemy.session import is_db_connection_error from nova.db.sqlalchemy.session import ping_listener from nova.db.sqlalchemy.session import synchronous_switch_listener opts = [ cfg.StrOpt('baremetal_sql_connection', default='sqlite:///$state_path/baremetal_$sqlite_db', help='The SQLAlchemy connection string used to connect to the ' 'bare-metal database'), ] FLAGS = flags.FLAGS FLAGS.register_opts(opts) LOG = logging.getLogger(__name__) _ENGINE = None _MAKER = None def get_session(autocommit=True, expire_on_commit=False): """Return a SQLAlchemy session.""" global _MAKER
import eventlet import greenlet import qpid.messaging import qpid.messaging.exceptions from nova.openstack.common import cfg from nova.openstack.common import jsonutils from nova.rpc import amqp as rpc_amqp from nova.rpc import common as rpc_common LOG = logging.getLogger(__name__) qpid_opts = [ cfg.StrOpt('qpid_hostname', default='localhost', help='Qpid broker hostname'), cfg.StrOpt('qpid_port', default='5672', help='Qpid broker port'), cfg.StrOpt('qpid_username', default='', help='Username for qpid connection'), cfg.StrOpt('qpid_password', default='', help='Password for qpid connection'), cfg.StrOpt('qpid_sasl_mechanisms', default='', help='Space separated list of SASL mechanisms to use for auth'), cfg.BoolOpt('qpid_reconnect', default=True, help='Automatically reconnect'), cfg.IntOpt('qpid_reconnect_timeout', default=0,
# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Availability zone helper functions.""" from nova import db from nova.openstack.common import cfg from nova.openstack.common import log as logging availability_zone_opts = [ cfg.StrOpt('internal_service_availability_zone', default='internal', help='availability_zone to show internal services under'), cfg.StrOpt( 'default_availability_zone', # deprecated in Grizzly release deprecated_name='node_availability_zone', default='nova', help='default compute node availability_zone'), ] CONF = cfg.CONF CONF.register_opts(availability_zone_opts) LOG = logging.getLogger(__name__)
import os from nova.openstack.common import cfg from nova.openstack.common import excutils from nova.openstack.common import fileutils from nova.openstack.common import lockutils from nova import utils from nova.virt.disk import api as disk from nova.virt.libvirt import config as vconfig from nova.virt.libvirt import snapshots from nova.virt.libvirt import utils as libvirt_utils __imagebackend_opts = [ cfg.StrOpt('libvirt_images_type', default='default', help='VM Images format. Acceptable values are: raw, qcow2, lvm,' ' default. If default is specified,' ' then use_cow_images flag is used instead of this one.'), cfg.StrOpt('libvirt_images_volume_group', default=None, help='LVM Volume Group that is used for VM images, when you' ' specify libvirt_images_type=lvm.'), cfg.BoolOpt('libvirt_sparse_logical_volumes', default=False, help='Create sparse logical volumes (with virtualsize)' ' if this flag is set to True.'), ] CONF = cfg.CONF CONF.register_opts(__imagebackend_opts) CONF.import_opt('base_dir_name', 'nova.virt.libvirt.imagecache')
import os import time from nova import exception from nova import flags from nova.openstack.common import cfg from nova.openstack.common import log as logging from nova import utils from nova.volume import iscsi LOG = logging.getLogger(__name__) volume_opts = [ cfg.StrOpt('volume_group', default='nova-volumes', help='Name for the VG that will contain exported volumes'), cfg.IntOpt('num_shell_tries', default=3, help='number of times to attempt to run flakey shell commands'), cfg.IntOpt('num_iscsi_scan_tries', default=3, help='number of times to rescan iSCSI target to find volume'), cfg.IntOpt('iscsi_num_targets', default=100, help='Number of iscsi target ids per host'), cfg.StrOpt('iscsi_target_prefix', default='iqn.2010-10.org.openstack:', help='prefix for iscsi volumes'), cfg.StrOpt('iscsi_ip_address', default='$my_ip',
import os import re from nova import exception from nova import flags from nova.openstack.common import cfg from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova import utils from nova.virt import images LOG = logging.getLogger(__name__) util_opts = [ cfg.StrOpt('image_info_filename_pattern', default='$instances_path/$base_dir_name/%(image)s.info', help='Allows image information files to be stored in ' 'non-standard locations') ] flags.DECLARE('instances_path', 'nova.compute.manager') flags.DECLARE('base_dir_name', 'nova.compute.manager') FLAGS = flags.FLAGS FLAGS.register_opts(util_opts) def execute(*args, **kwargs): return utils.execute(*args, **kwargs) def get_iscsi_initiator(): """Get iscsi initiator name for this machine"""
from nova.virt.disk import api as disk from nova.virt import driver from nova.virt.baremetal import nodes from nova.virt.baremetal import dom from nova.virt.libvirt import utils as libvirt_utils Template = None LOG = logging.getLogger(__name__) FLAGS = flags.FLAGS baremetal_opts = [ cfg.StrOpt('baremetal_injected_network_template', default='$pybasedir/nova/virt/interfaces.template', help='Template file for injected network'), cfg.StrOpt('baremetal_type', default='baremetal', help='baremetal domain type'), cfg.StrOpt('baremetal_uri', default='', help='Override the default baremetal URI'), cfg.BoolOpt('baremetal_allow_project_net_traffic', default=True, help='Whether to allow in project network traffic') ] FLAGS.register_opts(baremetal_opts)
`sqlalchemy` is the only supported backend right now. :[BAREMETAL] sql_connection: string specifying the sqlalchemy connection to use, like: `sqlite:///var/lib/nova/nova.sqlite`. """ from nova.openstack.common import cfg from nova import utils # NOTE(deva): we can't move baremetal_db_backend into an OptGroup yet # because utils.LazyPluggable doesn't support reading from # option groups. See bug #1093043. db_opts = [ cfg.StrOpt('db_backend', default='sqlalchemy', help='The backend to use for bare-metal database'), ] baremetal_group = cfg.OptGroup(name='baremetal', title='Baremetal Options') CONF = cfg.CONF CONF.register_group(baremetal_group) CONF.register_opts(db_opts, baremetal_group) IMPL = utils.LazyPluggable('db_backend', config_group='baremetal', sqlalchemy='nova.virt.baremetal.db.sqlalchemy.api') def bm_node_get_all(context, service_host=None):
from nova.db import migration from nova.db.sqlalchemy.session import get_engine from nova.network import manager as network_manager from nova.openstack.common import cfg from nova.openstack.common import log as logging from nova.openstack.common import timeutils from nova import service from nova import tests from nova.tests import conf_fixture from nova.tests import policy_fixture from nova.tests import utils test_opts = [ cfg.StrOpt('sqlite_clean_db', default='clean.sqlite', help='File name of clean sqlite db'), cfg.BoolOpt('fake_tests', default=True, help='should we use everything for testing'), ] CONF = cfg.CONF CONF.register_opts(test_opts) CONF.import_opt('sql_connection', 'nova.db.sqlalchemy.session') CONF.import_opt('sqlite_db', 'nova.db.sqlalchemy.session') CONF.import_opt('state_path', 'nova.config') CONF.set_override('use_stderr', False) logging.setup('nova') LOG = logging.getLogger(__name__)
import webob.dec import webob.exc from nova import context from nova.openstack.common import cfg from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova import wsgi auth_opts = [ cfg.BoolOpt('api_rate_limit', default=True, help='whether to rate limit the api'), cfg.StrOpt('auth_strategy', default='noauth', help='The strategy to use for auth: noauth or keystone.'), cfg.BoolOpt('use_forwarded_for', default=False, help='Treat X-Forwarded-For as the canonical remote address. ' 'Only enable this if you have a sanitizing proxy.'), ] CONF = cfg.CONF CONF.register_opts(auth_opts) LOG = logging.getLogger(__name__) def pipeline_factory(loader, global_conf, **local_conf): """A paste pipeline replica that keys off of auth_strategy."""
"""Handles all requests to the conductor service.""" from nova.conductor import manager from nova.conductor import rpcapi from nova import exception as exc from nova.openstack.common import cfg from nova.openstack.common import log as logging from nova.openstack.common.rpc import common as rpc_common from nova import utils conductor_opts = [ cfg.BoolOpt('use_local', default=False, help='Perform nova-conductor operations locally'), cfg.StrOpt('topic', default='conductor', help='the topic conductor nodes listen on'), cfg.StrOpt('manager', default='nova.conductor.manager.ConductorManager', help='full class name for the Manager for conductor'), ] conductor_group = cfg.OptGroup(name='conductor', title='Conductor Options') CONF = cfg.CONF CONF.register_group(conductor_group) CONF.register_opts(conductor_opts, conductor_group) LOG = logging.getLogger(__name__) class LocalAPI(object):
import os import stat import sys import traceback import nova from nova import flags from nova.openstack.common import cfg from nova.openstack.common import jsonutils from nova.openstack.common import local from nova import version log_opts = [ cfg.StrOpt('logging_context_format_string', default='%(asctime)s %(levelname)s %(name)s [%(request_id)s ' '%(user_id)s %(project_id)s] %(instance)s' '%(message)s', help='format string to use for log messages with context'), cfg.StrOpt('logging_default_format_string', default='%(asctime)s %(levelname)s %(name)s [-] %(instance)s' '%(message)s', help='format string to use for log messages without context'), cfg.StrOpt('logging_debug_format_suffix', default='from (pid=%(process)d) %(funcName)s ' '%(pathname)s:%(lineno)d', help='data to append to log format when level is DEBUG'), cfg.StrOpt('logging_exception_prefix', default='%(asctime)s TRACE %(name)s %(instance)s', help='prefix each line of exception output with this format'), cfg.ListOpt('default_log_levels', default=[
import webob import routes import routes.middleware from nova import wsgi from nova import service from nova_dns import __version__ from nova_dns.dnsmanager import DNSRecord, DNSSOARecord from nova_dns.auth import AUTH LOG = logging.getLogger("nova_dns.dns") FLAGS = flags.FLAGS opts = [ cfg.StrOpt("dns_listen", default="0.0.0.0", help="IP address for DNS API to listen"), cfg.IntOpt("dns_listen_port", default=15353, help="DNS API port") ] FLAGS.register_opts(opts) class Service(service.WSGIService): """ """ def __init__(self): service.WSGIService.__init__(self, name="dns", loader=wsgi.Loader(config_path=FLAGS.dns_api_paste_config)) class VersionFilter(object): """ Filter returning version for "/" request """
__version__ = "0.3.0" try: from nova import flags from nova.openstack.common import cfg FLAGS = flags.FLAGS opts = [ cfg.StrOpt("dns_manager", default="nova_dns.dnsmanager.powerdns.Manager", help="DNS manager class"), cfg.StrOpt("dns_listener", default="nova_dns.listener.simple.Listener", help="Class to process AMQP messages"), cfg.StrOpt( "dns_api_paste_config", default="/etc/nova-dns/dns-api-paste.ini", help="File name for the paste.deploy config for nova-dns api") ] FLAGS.register_opts(opts) except: #make setup.py happy pass
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """ heathnmon Service default driver - Manage communication with compute nodes and collects inventory and monitoring info """ from nova.openstack.common import cfg from nova.openstack.common import importutils from nova.openstack.common import cfg from healthnmon import log as logging LOG = logging.getLogger('healthnmon.driver') driver_opts = [ cfg.StrOpt('healthnmon_inventory_manager', default='healthnmon.inventory_manager.InventoryManager', help='The healthnmon inventory manager class to use'), ] CONF = cfg.CONF CONF.register_opts(driver_opts) class Healthnmon(object): """The base class that all healthnmon classes should inherit from.""" def __init__(self): self.inventory_manager = \ importutils.import_object(CONF.healthnmon_inventory_manager) def get_compute_list(self): """Get a list of hosts from the InventoryManager."""