Refactor the sahara.service.api module¶
https://blueprints.launchpad.net/sahara/+spec/v2-api-experimental-impl
The HTTP API calls that sahara receives are processed by the
sahara.api
package, the functions of this module then call upon the
sahara.service.api
and sahara.service.edp.api
modules to perform
processing before being passed to the conductor. To help accommodate future
API changes, these modules should be refactored to create a more unified
package for future implementors.
Problem description¶
The current state of the API service level modules can be confusing when comparing it to the API route level modules. This confusion can lead to misunderstandings in the way the service code interacts with the routing and conductor modules. To improve the state of readability, and expansion, this spec defines a new layout for these modules.
More than confusion, as the API is being reworked for the new version 2 features there will need to be additions in the service layer to assist the endpoint and JSON notational changes. Refactoring these modules will create a more clear pathway for adding to the sahara API.
Proposed change¶
This change will create a new package named sahara.service.api
which will
contain all the service level API modules. This new package will create a
unified location for service level API changes, and provide a clear path for
those wishing to make said changes. The new package will also contain the
base service level files for the v2 API.
The new package layout will be as follows:
sahara/service/api/__init__.py
v10.py
v11.py
v2/__init__.py
clusters.py
cluster_templates.py
data_sources.py
images.py
job_binaries.py
job_executions.py
jobs.py
job_types.py
node_group_templates.py
plugins.py
This new layout will provide a clean, singular, location for all service
level API code. The files created for the sahara.service.api.v2
package
will be simple copies of the current functionality.
Alternatives¶
One alternative is to do nothing and leave the sahara.service.api
and
sahara.service.edp.api
modules as they are and create new code for v2
either in those locations or a new file. A downside to this approach is that
it will be less clear where the boundaries between the different versions
will exist. This will also leave a larger questions as to where the new v2
code will live.
Data model impact¶
None
REST API impact¶
None
Other end user impact¶
None
Deployer impact¶
None
Developer impact¶
This change should improve the developer experience with regard to creating and maintaining the API code as it will be more clear which modules control each version.
Sahara-image-elements impact¶
None
Sahara-dashboard / Horizon impact¶
None
Implementation¶
Assignee(s)¶
- Primary assignee:
Michael McCune (elmiko)
Work Items¶
create new package
move current implementations into new package
add v2 related service files
fix outstanding references
add documentation to v2 developer docs
Dependencies¶
None
Testing¶
As these changes will leave the interfaces largely intact, they will be tested through our current unit and tempest tests. The will not require new tests specifically for this change.
Documentation Impact¶
A new section in the API v2 developer docs will be added to help inform about the purpose of these files and how they will be used in the work to implement features like JSON payload changes.
References¶
None