Files
nova-powervm/nova_powervm/virt/powervm/__init__.py
Drew Thorstensen f7de66aac0 Dev-ref update
This change set provides a significant update to the nova-powervm
drivers dev-ref.

Rebases the documentation to reflect the development that has been done
over the last several months.  Updates the readme to reflect the
execution that has completed.

Removes the fake_driver that is not useful.

Change-Id: I1910db886df89f884f3c399d6aab1eebdf10b5e0
2015-10-08 15:09:42 -04:00

107 lines
4.5 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 '
'to store 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. Only used if the media '
'repository needs to be created.'),
cfg.StrOpt('image_meta_local_path',
default='/tmp/cfgdrv/',
help='The location where the config drive ISO files should be '
'built.'),
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='A',
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