From f6a58708a4217b86ff1d663ef2c5bd162de3439b Mon Sep 17 00:00:00 2001 From: Felipe Monteiro Date: Mon, 17 Jul 2017 20:46:14 +0100 Subject: [PATCH] Temporary change - do not commit --- deckhand/control/documents.py | 6 ++++ deckhand/db/api_models.py | 6 ++-- deckhand/objects/base.py | 2 +- .../objects/{document.py => documents.py} | 34 +++++++------------ requirements.txt | 1 + 5 files changed, 24 insertions(+), 25 deletions(-) rename deckhand/objects/{document.py => documents.py} (66%) diff --git a/deckhand/control/documents.py b/deckhand/control/documents.py index 4adff735..69858d7a 100644 --- a/deckhand/control/documents.py +++ b/deckhand/control/documents.py @@ -21,6 +21,7 @@ from oslo_log import log as logging from deckhand.control import base as api_base from deckhand.engine import document_validation from deckhand import errors as deckhand_errors +from deckhand.objects import documents LOG = logging.getLogger(__name__) @@ -59,6 +60,11 @@ class DocumentsResource(api_base.BaseResource): except deckhand_errors.InvalidFormat as e: return self.return_error(resp, falcon.HTTP_400, message=e) + try: + migration = documents.Document.create() + except Exception: + pass + # Check if a document with the specified name already exists. If so, # treat this request as an update. doc_name = doc_validation.doc_name diff --git a/deckhand/db/api_models.py b/deckhand/db/api_models.py index ede62681..f99e3b90 100644 --- a/deckhand/db/api_models.py +++ b/deckhand/db/api_models.py @@ -58,8 +58,8 @@ class Document(API_BASE): __tablename__ = 'document' id = sa.Column(sa.String(255), primary_key=True, autoincrement=True) + revision_index = sa.Column(sa.Integer, nullable=False) document_schema = sa.Column(sa.String(64), nullable=False) - # Represents metadata.name parameter. instance_key = sa.Column(sa.String(64), nullable=False, unique=True) - metadata = sa.Column(JSONEncodedDict(), nullable=False) - data = sa.Column(JSONEncodedDict(), nullable=False) + document_metadata = sa.Column(JSONEncodedDict(), nullable=False) + document_data = sa.Column(JSONEncodedDict(), nullable=False) diff --git a/deckhand/objects/base.py b/deckhand/objects/base.py index 5b175b9a..e3ee02f5 100644 --- a/deckhand/objects/base.py +++ b/deckhand/objects/base.py @@ -17,7 +17,7 @@ import datetime from oslo_versionedobjects import base from oslo_versionedobjects import fields as obj_fields -import Deckhand_provisioner.objects as objects +from deckhand import objects class DeckhandObjectRegistry(base.VersionedObjectRegistry): diff --git a/deckhand/objects/document.py b/deckhand/objects/documents.py similarity index 66% rename from deckhand/objects/document.py rename to deckhand/objects/documents.py index cd786aed..adfe2d51 100644 --- a/deckhand/objects/document.py +++ b/deckhand/objects/documents.py @@ -18,16 +18,16 @@ import oslo_versionedobjects.fields as ovo_fields -import deckhand.objects as objects -import deckhand.objects.base as base -import deckhand.objects.fields as fields +from deckhand.db import api_models +from deckhand import objects +from deckhand.objects import base +from deckhand.objects import fields as deckhand_fields class DocumentPayload(ovo_fields.ObjectField): SCHEMA = { - 'schemaVersion': ('document', 'schemaVersion'), - 'kind': ('document', 'uuid'), + 'instance_key': ('document', 'uuid'), 'metadata': ('document', 'name'), 'data': ('document', 'hosts') } @@ -36,10 +36,9 @@ class DocumentPayload(ovo_fields.ObjectField): VERSION = '1.0' fields = { - 'schemaVersion': fields.StringField(nullable=False), - 'kind': fields.StringField(nullable=False), - 'metadata': fields.DictOfStringsField(nullable=False), - 'data': fields.DictOfStringsField(nullable=False) + 'instance_key': ovo_fields.StringField(nullable=False), + 'metadata': ovo_fields.DictOfStringsField(nullable=False), + 'data': ovo_fields.DictOfStringsField(nullable=False) } def __init__(self, document): @@ -54,23 +53,16 @@ class Document(base.DeckhandPersistentObject, base.DeckhandObject): VERSION = '1.0' fields = { + 'id': ovo_fields.IntegerField(nullable=False, read_only=True), 'blob': ovo_fields.ObjectField('DocumentPayload', nullable=False), - 'name': ovo_fields.StringField(nullable=True), 'revision_index': ovo_fields.NonNegativeIntegerField(nullable=False), - 'status': fields.DocumentField(nullable=False) + 'status': ovo_fields.StringField(nullable=False) } def __init__(self, **kwargs): super(Document, self).__init__(**kwargs) - @property - def name(self): - return self.name + def create(self): + updates = self.obj_get_changes() - @property - def revision(self): - return self.revision_index - - @property - def status(self): - return self.status + #api_models.Document() diff --git a/requirements.txt b/requirements.txt index e32b2d63..33749168 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,5 +13,6 @@ oslo.db>=4.21.1 # Apache-2.0 oslo.log>=3.22.0 # Apache-2.0 oslo.serialization>=1.10.0 # Apache-2.0 oslo.utils>=3.20.0 # Apache-2.0 +oslo.versionedobjects>=1.23.0 oslo.i18n!=3.15.2,>=2.1.0 # Apache-2.0 python-barbicanclient>=4.0.0 # Apache-2.0