drydock/drydock_provisioner/objects/readme.md
Scott Hussey 80b3a1e99d Orchestration of MaaS enlistment (#42)
* WIP - Initial API implementation with Falcon

* API service for /designs and /tasks endpoints

REST API using falcon library
Middleware for authentication (stubbed until Keystone is avail)
Middleware for context and logging
Request logging and initial error logging
README updates

* Cleanup readme formatting

* Rename helm_drydock to drydock_provisioner

* Fixed missing except statement

* Fixed missing except statement

* Reorganize API paths in a list
Fix duplication of context init
Add API version prefix to URLs

* DRYD-2 MVP - phase 1 - node enlistment

Add node driver task for IdentifyNode
Implement MaaS API interface for Machines and Interfaces
2017-06-15 20:42:53 -07:00

35 lines
1.5 KiB
Markdown

# Drydock Model #
Object models for the drydock design parts and subparts. We use oslo.versionedobjects as the supporting library for object management
to support RPC and versioned persistence.
## Features ##
### Inheritance ###
Drydock supports inheritance in the design data model.
Currently this only supports BaremetalNode inheriting from HostProfile and
HostProfile inheriting from HostProfile.
Inheritance rules:
1. A child overrides a parent for part and subpart attributes
2. For attributes that are lists, the parent list and child list
are merged.
3. A child can remove a list member by prefixing the value with '!'
4. For lists of subparts (i.e. HostInterface and HostPartition) if
there is a member in the parent list and child list with the same name
(as defined by the get_name() method), the child member inherits from
the parent member. The '!' prefix applies here for deleting a member
based on the name.
### Phased Data ###
The *source* of the data in a object instance can be one of three
types.
* Designed - This is data directly ingested by Drydock representing a design part (Site, HostProfile, etc...) supplied by an external source
* Compiled - This is designed data that has been processed through the Drydock
inheritance / merge system. It is the effective design that will be implemented.
* Build - This is the result of actual implementation. It should basically match the compiled view of the model, but might have some additional information only available after implementation.