Adds os-win dependency spec

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 can be created 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.

Change-Id: I55a702557bbc827f01d45870f80de88fe07a9148
Implements: blueprint add-os-win-library
This commit is contained in:
Claudiu Belu
2015-09-25 15:52:13 +03:00
parent b492942744
commit 9dac814840

View File

@@ -0,0 +1,177 @@
..
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