Skip to content

Instantly share code, notes, and snippets.

@ntk148v
Created September 6, 2017 00:48
Show Gist options
  • Save ntk148v/94af69c8f7dbcaf43ca81fb93c3b1744 to your computer and use it in GitHub Desktop.
Save ntk148v/94af69c8f7dbcaf43ca81fb93c3b1744 to your computer and use it in GitHub Desktop.
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