Created
September 6, 2017 00:48
-
-
Save ntk148v/94af69c8f7dbcaf43ca81fb93c3b1744 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git barbican/api/controllers/orders.py barbican/api/controllers/orders.py | |
index 02ef66a..8ea1f4d 100644 | |
--- barbican/api/controllers/orders.py | |
+++ barbican/api/controllers/orders.py | |
@@ -23,6 +23,7 @@ from barbican.common import validators | |
from barbican import i18n as u | |
from barbican.model import models | |
from barbican.model import repositories as repo | |
+from barbican import objects | |
from barbican.queue import client as async_client | |
LOG = utils.getLogger(__name__) | |
@@ -70,7 +71,6 @@ class OrderController(controllers.ACLMixin): | |
def __init__(self, order, queue_resource=None): | |
self.order = order | |
- self.order_repo = repo.get_order_repository() | |
self.queue = queue_resource or async_client.TaskClient() | |
self.type_order_validator = validators.TypeOrderValidator() | |
@@ -124,7 +124,7 @@ class OrderController(controllers.ACLMixin): | |
@controllers.handle_exceptions(u._('Order deletion')) | |
@controllers.enforce_rbac('order:delete') | |
def on_delete(self, external_project_id, **kwargs): | |
- self.order_repo.delete_entity_by_id( | |
+ objects.Order.delete_entity_by_id( | |
entity_id=self.order.id, | |
external_project_id=external_project_id) | |
@@ -135,10 +135,9 @@ class OrdersController(controllers.ACLMixin): | |
def __init__(self, queue_resource=None): | |
LOG.debug('Creating OrdersController') | |
- self.order_repo = repo.get_order_repository() | |
self.queue = queue_resource or async_client.TaskClient() | |
self.type_order_validator = validators.TypeOrderValidator() | |
- self.quota_enforcer = quota.QuotaEnforcer('orders', self.order_repo) | |
+ self.quota_enforcer = quota.QuotaEnforcer('orders', objects.Order) | |
@pecan.expose() | |
def _lookup(self, order_id, *remainder): | |
@@ -149,13 +148,13 @@ class OrdersController(controllers.ACLMixin): | |
ctx = controllers._get_barbican_context(pecan.request) | |
- order = self.order_repo.get(entity_id=order_id, | |
- external_project_id=ctx.project, | |
- suppress_exception=True) | |
+ order = objects.Order.get(entity_id=order_id, | |
+ external_project_id=ctx.project, | |
+ suppress_exception=True) | |
if not order: | |
_order_not_found() | |
- return OrderController(order, self.order_repo), remainder | |
+ return OrderController(order), remainder | |
@pecan.expose(generic=True) | |
def index(self, **kwargs): | |
@@ -168,7 +167,7 @@ class OrdersController(controllers.ACLMixin): | |
LOG.debug('Start orders on_get ' | |
'for project-ID %s:', external_project_id) | |
- result = self.order_repo.get_by_create_date( | |
+ result = objects.Order.get_by_create_date( | |
external_project_id, offset_arg=kw.get('offset', 0), | |
limit_arg=kw.get('limit', None), meta_arg=kw.get('meta', None), | |
suppress_exception=True) | |
@@ -226,10 +225,11 @@ class OrdersController(controllers.ACLMixin): | |
self.quota_enforcer.enforce(project) | |
- new_order = models.Order() | |
+ new_order = objects.Order() | |
new_order.meta = body.get('meta') | |
new_order.type = order_type | |
new_order.project_id = project.id | |
+ new_order.create() | |
request_id = None | |
ctxt = controllers._get_barbican_context(pecan.request) | |
@@ -237,8 +237,6 @@ class OrdersController(controllers.ACLMixin): | |
new_order.creator_id = ctxt.user | |
request_id = ctxt.request_id | |
- self.order_repo.create_from(new_order) | |
- | |
# Grab our id before commit due to obj expiration from sqlalchemy | |
order_id = new_order.id | |
diff --git barbican/objects/order.py barbican/objects/order.py | |
index 154c51f..9e3b3c9 100644 | |
--- barbican/objects/order.py | |
+++ barbican/objects/order.py | |
@@ -37,10 +37,10 @@ class Order(base.BarbicanObject, base.BarbicanPersistentObject, | |
'sub_status': fields.StringField(nullable=True), | |
'sub_status_message': fields.StringField(nullable=True), | |
'creator_id': fields.StringField(nullable=True), | |
- 'order_barbican_metadata': fields.ObjectField('OrderBarbicanMetadatum', | |
- nullable=True), | |
- 'order_plugin_medata': fields.ObjectField('OrderPluginMetadatum', | |
- nullable=True) | |
+ 'order_barbican_metadata': fields.DictOfObjectsField('OrderBarbicanMetadatum', | |
+ nullable=True), | |
+ 'order_plugin_metadata': fields.DictOfObjectsField('OrderPluginMetadatum', | |
+ nullable=True) | |
} | |
@staticmethod | |
@@ -50,20 +50,22 @@ class Order(base.BarbicanObject, base.BarbicanPersistentObject, | |
order_barbican_metadata_obj = db_order[field] | |
if order_barbican_metadata_obj: | |
order_barbican_metadata_obj = \ | |
- obm.OrderBarbicanMetadatum._from_db_object( | |
- obm.OrderBarbicanMetadatum(), | |
- order_barbican_metadata_obj | |
- ) | |
+ {key: obm.OrderBarbicanMetadatum. | |
+ _from_db_object( | |
+ obm.OrderBarbicanMetadatum(), | |
+ value) for key, value in | |
+ order_barbican_metadata_obj.items()} | |
order[field] = order_barbican_metadata_obj | |
- elif field == 'order_plugin_medata': | |
- order_plugin_medata_obj = db_order[field] | |
- if order_plugin_medata_obj: | |
- order_plugin_medata_obj = \ | |
- opm.OrderPluginMetadatum._from_db_object( | |
- opm.OrderPluginMetadatum(), | |
- order_plugin_medata_obj | |
- ) | |
- order[field] = order_plugin_medata_obj | |
+ elif field == 'order_plugin_metadata': | |
+ order_plugin_metadata_obj = db_order[field] | |
+ if order_plugin_metadata_obj: | |
+ order_plugin_metadata_obj = \ | |
+ {key: opm.OrderPluginMetadatum. | |
+ _from_db_object( | |
+ opm.OrderPluginMetadatum(), | |
+ value) for key, value in | |
+ order_plugin_metadata_obj} | |
+ order[field] = order_plugin_metadata_obj | |
else: | |
order[field] = db_order[field] | |
order.obj_reset_changes() | |
diff --git barbican/plugin/resources.py barbican/plugin/resources.py | |
index 0b084d2..e205f75 100644 | |
--- barbican/plugin/resources.py | |
+++ barbican/plugin/resources.py | |
@@ -161,7 +161,7 @@ def get_transport_key_id_for_retrieval(secret_model): | |
return transport_key_id | |
-def generate_secret(spec, content_type, project_model): | |
+def generate_secret(spec, content_type, project_obj): | |
"""Generate a secret and store into a secure backend.""" | |
# Locate a suitable plugin to store the secret. | |
@@ -171,22 +171,24 @@ def generate_secret(spec, content_type, project_model): | |
plugin_manager = secret_store.get_manager() | |
generate_plugin = plugin_manager.get_plugin_generate( | |
- key_spec, project_id=project_model.id) | |
+ key_spec, project_id=project_obj.id) | |
- # Create secret model to eventually save metadata to. | |
- secret_model = models.Secret(spec) | |
- secret_model['secret_type'] = secret_store.SecretType.SYMMETRIC | |
+ # Create secret object to eventually save metadata to. | |
+ secret_obj = objects.Secret() | |
+ secret_obj['secret_type'] = secret_store.SecretType.SYMMETRIC | |
+ for key, value in spec.items(): | |
+ secret_obj[key] = value | |
# Generate the secret. | |
secret_metadata = _generate_symmetric_key( | |
- generate_plugin, key_spec, secret_model, project_model, content_type) | |
+ generate_plugin, key_spec, secret_obj, project_obj, content_type) | |
# Save secret and metadata. | |
- _save_secret_in_repo(secret_model, project_model) | |
- _save_secret_metadata_in_repo(secret_model, secret_metadata, | |
+ _save_secret_in_repo(secret_obj, project_obj) | |
+ _save_secret_metadata_in_repo(secret_obj, secret_metadata, | |
generate_plugin, content_type) | |
- return secret_model | |
+ return secret_obj | |
def generate_asymmetric_secret(spec, content_type, project_model): |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment