Update the README.rst and properties

In preparation for stackforge proposal, updating the README.rst file to
include an updated set of information.  Mostly tied to the new pypowervm
python library.

Also updates the API properties to remove references to the current
location of the API server.  Makes the wording more generic.

Change-Id: I1167fa28b9120fa8833bbe7939d070cb0a157c37
This commit is contained in:
Drew Thorstensen 2015-01-17 11:08:50 -06:00
parent 4b8b3f70b0
commit 02b8d18b0c
3 changed files with 48 additions and 49 deletions

View File

@ -9,17 +9,16 @@ https://blueprints.launchpad.net/neutron/+spec/example
The IBM PowerVM hypervisor provides virtualization on POWER hardware. PowerVM The IBM PowerVM hypervisor provides virtualization on POWER hardware. PowerVM
admins can see benefits in their environments by making use of OpenStack. admins can see benefits in their environments by making use of OpenStack.
This driver (along with a Neutron ML2 compatible agent and Ceilometer agent) This driver (along with a Neutron ML2 compatible agent and Ceilometer agent)
will provide capability for admins of PowerVM (which encapsulates PHYP and will provide capability for admins of PowerVM to use OpenStack natively.
Virtual I/O Servers) to use OpenStack natively.
Problem Description Problem Description
=================== ===================
As a new ecosystem evolves around the POWER platform, there is not an As ecosystems continue to evolve around the POWER platform, a single OpenStack
OpenStack driver that meets all of the needs for that ecosystem. The work driver does not meet all of the needs for the varying hypervisors. The work
done here is to build a PowerVM driver in within the broader community. This done here is to build a PowerVM driver within the broader community. This
will sit alongside the existing libvirt driver utilized by PowerKVM will sit alongside the existing libvirt based driver utilized by PowerKVM
environments. environments.
This new driver must meet the following: This new driver must meet the following:
@ -73,13 +72,13 @@ The changes proposed are the following:
The changes proposed will bring support for the PowerVM hypervisor into the The changes proposed will bring support for the PowerVM hypervisor into the
OpenStack ecosystem, following the OpenStack development model. OpenStack ecosystem, following the OpenStack development model.
This development is planned to be done in StackForge in a project named This development will be done in StackForge in a project named nova-powervm.
powervm. The intent is that the completion of this work will provide the The intent is that the completion of this work will provide the foundation to
foundation to bring the PowerVM Nova driver (with supporting components) into bring the PowerVM Nova driver (with supporting components) into Nova Core via
Nova Core via a separate BluePrint in the L release of OpenStack. a separate BluePrint in a future release of OpenStack.
Until the subsequent BluePrint is proposed for the L release, this driver is Until a subsequent BluePrint is proposed and accepted, this driver is to be
to be considered experimental. considered experimental.
Data Model Impact Data Model Impact
@ -124,7 +123,7 @@ The administrator will notice new logging messages in the nova compute logs.
Performance Impact Performance Impact
------------------ ------------------
It is a goal of the driver to deploy systems with the same speed and agility It is a goal of the driver to deploy systems with similar speed and agility
as the libvirt driver within OpenStack. as the libvirt driver within OpenStack.
Since this process should match the OpenStack model, it is not planned to add Since this process should match the OpenStack model, it is not planned to add
@ -143,11 +142,11 @@ configure OpenStack for use with a PowerVM hypervisor.
The existing configuration file attributes will be reused as much as possible. The existing configuration file attributes will be reused as much as possible.
This reduces the number of PowerVM specific items that will be needed. This reduces the number of PowerVM specific items that will be needed.
However, the driver is likely to need some PowerVM specific options. However, the driver will require some PowerVM specific options.
In this case, we plan to keep the PowerVM specifics contained within the In this case, we plan to keep the PowerVM specifics contained within the
configuration file (and driver code). Any new configuration options will have configuration file (and driver code). These will be documented on the
the prefix "powervm\_". driver's wiki page.
There should be no impact to customers upgrading their cloud stack as this is There should be no impact to customers upgrading their cloud stack as this is
a genesis driver and should not have database impacts. a genesis driver and should not have database impacts.
@ -160,11 +159,10 @@ The code for this driver will be contained within a powervm StackForge
project. The driver will be contained within /nova/virt/powervm/. The driver project. The driver will be contained within /nova/virt/powervm/. The driver
will extend nova.virt.driver.ComputeDriver. will extend nova.virt.driver.ComputeDriver.
The code will interact with PowerVM through an Open Sourced python binding The code will interact with PowerVM through the pypowervm library. This python
that is being defined. This python binding is a wrapper to the PowerVM REST binding is a wrapper to the PowerVM REST API. All hypervisor operations will
API. All operations to the hypervisor will go through the PowerVM REST API interact with the PowerVM REST API via this binding. The driver will be
via this binding. The driver will be maintained to support future revisions maintained to support future revisions of the PowerVM REST API as needed.
of the PowerVM REST API as needed.
For ephemeral disk support, either a Virtual I/O Server hosted local disk or a For ephemeral disk support, either a Virtual I/O Server hosted local disk or a
Shared Storage Pool (a PowerVM clustered file system) will be supported. For Shared Storage Pool (a PowerVM clustered file system) will be supported. For
@ -172,10 +170,9 @@ volume attachments, the driver will support Cinder based attachments via
protocols supported by the hypervisor. protocols supported by the hypervisor.
For networking, a blueprint is being proposed for the Neutron project that For networking, a blueprint is being proposed for the Neutron project that
will provide a Neutron ML2 Agent. This too will be developed in StackForge, will provide a Neutron ML2 Agent. This project will be developed in
and a subsequent blueprint will be created to move to Neutron Core in the L StackForge alongside nova-powervm. The Agent will provide the necessary
release of OpenStack. The Agent will provide the necessary configuration on configuration on the Virtual I/O Server. The Nova driver code will have a
the Virtual I/O Server. The Nova driver code will have a
/nova/virt/powervm/vif.py file that will configure the network adapter on the /nova/virt/powervm/vif.py file that will configure the network adapter on the
client VM. client VM.
@ -187,7 +184,8 @@ provide a non-gating vote (+1 or -1).
Developers should not be impacted by these changes unless they wish to try the Developers should not be impacted by these changes unless they wish to try the
driver. driver.
Until the driver is accepted into Nova core it will be considered experimental. Until a subsequent blueprint is proposed and accepted, unless otherwise noted,
the driver will be considered experimental.
Community Impact Community Impact
@ -196,9 +194,7 @@ Community Impact
The intent of this blueprint is to bring another driver to OpenStack that The intent of this blueprint is to bring another driver to OpenStack that
aligns with the ideals and vision of the community. aligns with the ideals and vision of the community.
It will be discussed in the Nova IRC and mailing lists. Representatives It will be discussed in the Nova IRC and mailing lists.
working on this driver will be at the design summit, though no sessions are
planned on this topic.
Alternatives Alternatives
@ -266,8 +262,8 @@ Dependencies
utilize future versions of this specification as it becomes available: utilize future versions of this specification as it becomes available:
http://ibm.co/1lThV9R http://ibm.co/1lThV9R
* Will build on top of a new open source python binding to previously noted * Will build on top of the pypowervm library. This will be a prerequisite to
PowerVM REST API. This will be a prerequisite to utilizing the driver. utilizing the driver and identified in the requirements.txt file.
Testing Testing
@ -313,7 +309,7 @@ driver. This will include configuring the dependencies specified above.
Documentation will be done on wiki, specifically at a minimum to the following Documentation will be done on wiki, specifically at a minimum to the following
page: http://docs.openstack.org/trunk/config-reference/content/section_compute-hypervisors.html page: http://docs.openstack.org/trunk/config-reference/content/section_compute-hypervisors.html
Interlock will be done with the OpenStack documentation team. Interlock is planned to be done with the OpenStack documentation team.
Developer Documentation Developer Documentation

View File

@ -16,7 +16,7 @@
from oslo.config import cfg from oslo.config import cfg
hmc_opts = [ pvm_opts = [
cfg.FloatOpt('proc_units_factor', cfg.FloatOpt('proc_units_factor',
default=0.1, default=0.1,
help='Factor used to calculate the processor units per vcpu.' help='Factor used to calculate the processor units per vcpu.'
@ -27,22 +27,24 @@ hmc_opts = [
'Value should be between 1 and 255. Represents how ' 'Value should be between 1 and 255. Represents how '
'aggressively LPARs grab CPU when unused cycles are ' 'aggressively LPARs grab CPU when unused cycles are '
'available.'), 'available.'),
# TODO(kyleh) Temporary - Only needed since we're using an HMC # TODO(kyleh) Re-evaluate these as the auth model evolves.
cfg.StrOpt('hmc_host_id', cfg.StrOpt('pvm_host_mtms',
default='', default='',
help='TEMP - the unique id of the host to manage'), help='The Model Type/Serial Number of the host server to '
cfg.StrOpt('hmc_ip', 'manage. Format is MODELTYPE_SERIALNUM. Example is '
'828642A_1234ABC.'),
cfg.StrOpt('pvm_server_ip',
default='localhost',
help='The IP Address hosting the PowerVM REST API'),
cfg.StrOpt('pvm_user_id',
default='', default='',
help='TEMP - the HMC IP.'), help='The user id for authentication into the API.'),
cfg.StrOpt('hmc_user', cfg.StrOpt('pvm_pass',
default='', default='',
help='TEMP - the HMC user.'), help='The password for authentication into the API.')
cfg.StrOpt('hmc_pass',
default='',
help='TEMP - the HMC password.')
] ]
CONF = cfg.CONF CONF = cfg.CONF
CONF.register_opts(hmc_opts) CONF.register_opts(pvm_opts)
CONF.import_opt('host', 'nova.netconf') CONF.import_opt('host', 'nova.netconf')

View File

@ -64,10 +64,10 @@ class PowerVMDriver(driver.ComputeDriver):
def _get_adapter(self): def _get_adapter(self):
# Decode the password # Decode the password
password = CONF.hmc_pass.decode('base64', 'strict') password = CONF.pvm_pass.decode('base64', 'strict')
# TODO(IBM): set cert path # TODO(IBM): set cert path
self.session = pvm_apt.Session(CONF.hmc_ip, CONF.hmc_user, password, self.session = pvm_apt.Session(CONF.pvm_server_ip, CONF.pvm_user_id,
certpath=None) password, certpath=None)
self.adapter = pvm_apt.Adapter(self.session, self.adapter = pvm_apt.Adapter(self.session,
helpers=log_hlp.log_helper) helpers=log_hlp.log_helper)
@ -86,9 +86,10 @@ class PowerVMDriver(driver.ComputeDriver):
def _get_host_uuid(self): def _get_host_uuid(self):
# Need to get a list of the hosts, then find the matching one # Need to get a list of the hosts, then find the matching one
resp = self.adapter.read(pvm_consts.MGT_SYS) resp = self.adapter.read(pvm_consts.MGT_SYS)
host_entry = pvm_host.find_entry_by_mtm_serial(resp, CONF.hmc_host_id) host_entry = pvm_host.find_entry_by_mtm_serial(resp,
CONF.pvm_host_mtms)
if not host_entry: if not host_entry:
raise Exception("Host %s not found" % CONF.hmc_host_id) raise Exception("Host %s not found" % CONF.pvm_host_mtms)
self.host_wrapper = msentry_wrapper.ManagedSystem(host_entry) self.host_wrapper = msentry_wrapper.ManagedSystem(host_entry)
self.host_uuid = self.host_wrapper.get_uuid() self.host_uuid = self.host_wrapper.get_uuid()