Files
nova-specs/specs/mitaka/implemented/add-os-win-library.rst
Matt Riedemann 6f4faa9637 Move implemented mitaka specs
Note that resource-classes was already moved but the redirects
file wasn't updated, that's fixed here.

There are some partial blueprints that were marked completed in
mitaka and are still being worked in newton, like the config
option work. I've moved those to implemented here also.

Change-Id: I16f279b4794127cb7abc40ffc22cc237702d14ed
2016-03-29 21:40:41 -04:00

178 lines
4.4 KiB
ReStructuredText

..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
=====================
Add os-win dependency
=====================
https://blueprints.launchpad.net/nova/+spec/add-os-win-library
Hyper-V is involved in many of OpenStack components (nova, neutron, cinder,
ceilometer, etc.) and will be involved with other components in the future.
A common library has been created, named os-win, in order to reduce the code
duplication between all these components (utils classes, which interacts
directly with Hyper-V through WMI), making it easier to maintain, review and
propose new changes to current and future components.
Problem description
===================
There are many Hyper-V utils modules duplicated across several projects,
which can be refactored into os-win, reducing the code duplication and making
it easier to maintain. Plus, the review process will be simplified, as
reviewers won't have to review Hyper-V related code, in which not everyone is
proficient.
Use Cases
---------
This blueprint impacts Developers and Reviewers.
Developers will be able to submit Hyper-V related commits directly to os-win.
Reviewers will not have to review low level Hyper-V related code. Thus, the
amount of code that needs to be reviewed will be reduced by approximately 50%.
Proposed change
===============
In order to implement this blueprint, minimal changes are necessary, as the
behaviour will stay the same.
The primary changes that needs to be done on nova are as follows:
* add os-win in requirements.txt
* replace ``nova.virt.hyperv.vmutils.HyperVException`` references to
``os_win.HyperVException``
* replace all ``nova.virt.hyperv.utilsfactory`` imports used by the
`HyperVDriver` with ``os_win.utilsfactory``
* remove all utils modules and their unit tests in ``nova.virt.hyperv``, since
they will no longer be used.
* other trivial changes, which are to be seen in the implementation.
Changes that needs to be done on other projects:
* add os-win in global-requirements.txt [1]
Alternatives
------------
Originally, os-win was planned to be part of Oslo, it was suggested that os-win
should be a standalone project, as otherwise the Oslo team would also have to
maintain in and there aren't many / anyone that specializes in Windows /
Hyper-V related code.
Data model impact
-----------------
None
REST API impact
---------------
None
Security impact
---------------
None
Notifications impact
--------------------
None
Other end user impact
---------------------
None
Performance Impact
------------------
None
Other deployer impact
---------------------
os-win dependency will have to be installed in order for the HyperVDriver to be
used.
Developer impact
----------------
In a typical scenario, a blueprint implementation for the Hyper-V Driver will
require 2 parts:
* os-win commit, adding Hyper-V related utils required in order to implement
the blueprint.
* nova commit, implementing the blueprint and using the changes made in os-win.
If a nova commit requires a newer version of os-win, the patch to
global-requirements should be referenced with Depends-On in the commit message.
For bugfixes, there are chances that they require 2 patches: one for nova and
one for os-win. The backported bugfix must be a squashed version of the 2
patches, referencing both commit IDs in the commit message::
(cherry picked from commit <nova-commit-id>)
(cherry picked from commit <os-win-commit-id)
If the bugfix requires only one patch to either project, backporting will
proceed as before.
Implementation
==============
Assignee(s)
-----------
Primary assignee:
Claudiu Belu <cbelu@cloudbasesolutions.com>
Other contributors:
Lucian Petrut <lpetrut@cloudbasesolutions.com>
Work Items
----------
As described in the `Proposed change` section.
Dependencies
============
Adds os-win library as a dependency.
Testing
=======
* Unit tests
* Hyper-V CI
Documentation Impact
====================
The Hyper-V documentation page [3] will have to be updated to include os-win
as a dependency.
References
==========
[1] os-win added to global-requirements.txt:
https://review.openstack.org/#/c/230394/
[2] os-win repository:
https://github.com/openstack/os-win
[3] Hyper-V virtualization platform documentation page:
http://docs.openstack.org/liberty/config-reference/content/hyper-v-virtualization-platform.html
History
=======
Mitaka: Introduced