Files
nova-powervm/nova_powervm/virt/powervm/__init__.py
Kyle L. Henderson 26f158ac90 Move PowerVM driver options into a group
Following the compute driver standards, the driver options should
be placed in their own configuration group.  This change set
introduces the 'powervm' group.

Also, removed the reference to configuration credentials in the
README.rst file.

Change-Id: I8e28f118d4c6f9fe4922e6fd5ba095c5f9e62b4a
2015-06-30 08:15:50 -05:00

111 lines
4.7 KiB
Python

# Copyright 2014, 2015 IBM Corp.
#
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# 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.
from oslo_config import cfg
pvm_opts = [
cfg.FloatOpt('proc_units_factor',
default=0.1,
help='Factor used to calculate the processor units per vcpu.'
' Valid values are: 0.05 - 1.0'),
cfg.IntOpt('uncapped_proc_weight',
default=64,
help='The processor weight to assign to newly created VMs. '
'Value should be between 1 and 255. Represents how '
'aggressively LPARs grab CPU when unused cycles are '
'available.'),
cfg.StrOpt('vopt_media_volume_group',
default='rootvg',
help='The volume group on the system that should be used '
'for the config drive metadata that will be attached '
'to VMs.'),
cfg.IntOpt('vopt_media_rep_size',
default=1,
help='The size of the media repository in GB for the metadata '
'for config drive.'),
cfg.StrOpt('image_meta_local_path',
default='/tmp/cfgdrv/',
help='The location where the config drive ISO files should be '
'built.'),
cfg.StrOpt('fc_attach_strategy',
default='vscsi',
help='The Fibre Channel Volume Strategy defines how FC Cinder '
'volumes should be attached to the Virtual Machine. The '
'options are: npiv or vscsi.'),
cfg.StrOpt('disk_driver',
default='localdisk',
help='The disk driver to use for PowerVM disks. '
'Valid options are: localdisk, ssp')
]
CONF = cfg.CONF
CONF.register_opts(pvm_opts, group='powervm')
# Options imported from other regions
CONF.import_opt('host', 'nova.netconf')
CONF.import_opt('my_ip', 'nova.netconf')
CONF.import_opt('vncserver_proxyclient_address', 'nova.vnc', group='vnc')
CONF.import_opt('vncserver_listen', 'nova.vnc', group='vnc')
# NPIV Options. Only applicable if the 'fc_attach_strategy' is set to 'npiv'.
# Otherwise this section can be ignored.
npiv_opts = [
cfg.IntOpt('ports_per_fabric', default=1,
help='The number of physical ports that should be connected '
'directly to the Virtual Machine, per fabric. '
'Example: 2 fabrics and ports_per_fabric set to 2 will '
'result in 4 NPIV ports being created, two per fabric. '
'If multiple Virtual I/O Servers are available, will '
'attempt to span ports across I/O Servers.'),
cfg.StrOpt('fabrics', default='',
help='Unique identifier for each physical FC fabric that is '
'available. This is a comma separated list. If there '
'are two fabrics for multi-pathing, then this could be '
'set to A,B.'
'The fabric identifiers are used for the '
'\'fabric_<identifier>_port_wwpns\' key.')
]
CONF.register_opts(npiv_opts, group='powervm')
# Dictionary where the key is the NPIV Fabric Name, and the value is a list of
# Physical WWPNs that match the key.
NPIV_FABRIC_WWPNS = {}
# At this point, the fabrics should be specified. Iterate over those to
# determine the port_wwpns per fabric.
if CONF.powervm.fabrics is not None:
port_wwpn_keys = []
help_text = ('A comma delimited list of all the physical FC port WWPNs '
'that support the specified fabric. Is tied to the NPIV '
'fabrics key.')
fabrics = CONF.powervm.fabrics.split(',')
for fabric in fabrics:
opt = cfg.StrOpt('fabric_%s_port_wwpns' % fabric,
default='', help=help_text)
port_wwpn_keys.append(opt)
CONF.register_opts(port_wwpn_keys, group='powervm')
# Now that we've registered the fabrics, saturate the NPIV dictionary
for fabric in fabrics:
key = 'fabric_%s_port_wwpns' % fabric
wwpns = CONF.powervm[key].split(',')
wwpns = [x.upper().strip(':') for x in wwpns]
NPIV_FABRIC_WWPNS[fabric] = wwpns