Updating cloudkeep supporting classes

* Switches to the new order format

Change-Id: Ifa8757c27bc792bd07a509c76b581f78ddd5253d
This commit is contained in:
John Vrbanac 2014-10-03 10:03:12 -05:00
parent cd47e56366
commit 7eb3325754
4 changed files with 46 additions and 28 deletions

View File

@ -77,37 +77,45 @@ class OrdersBehavior(object):
algorithm=self.config.algorithm,
bit_length=self.config.bit_length,
mode=self.config.mode,
expiration=expiration)
expiration=expiration,
order_type='key')
return resp
def create_order_overriding_cfg(self, name=None, payload_content_type=None,
expiration=None, algorithm=None,
bit_length=None, mode=None, headers=None):
def create_order_overriding_cfg(
self, name=None, expiration=None, algorithm=None, bit_length=None,
payload_content_type=None, payload_content_encoding=None,
mode=None, headers=None, order_type='key'):
"""Creates order using provided parameters or default configurations.
Allows for testing individual parameters on creation.
"""
content_type = payload_content_type or self.config.payload_content_type
resp = self.create_order(
name=name or self.config.name,
payload_content_type=
payload_content_type or self.config.payload_content_type,
payload_content_type=content_type,
payload_content_encoding=payload_content_encoding,
algorithm=algorithm or self.config.algorithm,
bit_length=bit_length or self.config.bit_length,
mode=mode or self.config.mode,
expiration=expiration, headers=headers)
expiration=expiration,
order_type=order_type,
headers=headers)
return resp
def create_order(self, name=None, payload_content_type=None,
algorithm=None, bit_length=None, mode=None,
expiration=None, headers=None):
def create_order(
self, name=None, algorithm=None, bit_length=None, mode=None,
payload_content_type=None, payload_content_encoding=None,
expiration=None, headers=None, order_type='key'):
try:
resp = self.orders_client.create_order(
name=name,
payload_content_type=payload_content_type,
payload_content_encoding=payload_content_encoding,
algorithm=algorithm,
bit_length=bit_length,
mode=mode,
expiration=expiration,
order_type=order_type,
headers=headers)
except ConnectionError as e:
# Gracefully handling when Falcon doesn't properly handle our req
@ -124,10 +132,10 @@ class OrdersBehavior(object):
self.created_orders.append(behavior_response.id)
return behavior_response
def create_order_w_payload(self, name=None, algorithm=None,
bit_length=None, mode=None,
payload_content_type=None, expiration=None,
payload=None):
def create_order_w_payload(
self, name=None, algorithm=None, bit_length=None, mode=None,
payload_content_type=None, payload_content_encoding=None,
expiration=None, payload=None, order_type='key'):
"""Creates an order with a plain_text value. Separate from
standard create order method because it is used for negative
testing only and is expected to fail.
@ -140,7 +148,9 @@ class OrdersBehavior(object):
mode=mode or self.config.mode,
expiration=expiration,
payload_content_type=payload_content_type,
payload=payload)
payload_content_encoding=payload_content_encoding,
payload=payload,
order_type=order_type)
except ConnectionError as e:
# Gracefully handling when Falcon doesn't properly handle our req
if type(e.message.reason) is BadStatusLine:

View File

@ -38,8 +38,9 @@ class OrdersClient(BarbicanRestClient):
return '{base}/{order_id}'.format(base=self._get_base_url(),
order_id=order_id)
def create_order(self, name, payload_content_type, algorithm,
bit_length, mode, expiration, headers=None):
def create_order(self, name, algorithm, bit_length, mode, expiration,
order_type, payload_content_type,
payload_content_encoding, headers=None):
"""
POST http://.../v1/orders/{order_uuid}
Creates an order to generate a secret
@ -47,18 +48,20 @@ class OrdersClient(BarbicanRestClient):
remote_url = self._get_base_url()
secret = Secret(name=name,
payload_content_type=payload_content_type,
payload_content_encoding=payload_content_encoding,
expiration=expiration,
algorithm=algorithm,
bit_length=bit_length,
mode=mode)
req_obj = Order(secret=secret)
req_obj = Order(meta=secret, order_type=order_type)
resp = self.request('POST', remote_url, request_entity=req_obj,
response_entity_type=OrderRef, headers=headers)
return resp
def create_order_w_payload(self, name, payload_content_type, algorithm,
bit_length, mode, expiration, payload):
def create_order_w_payload(self, name, algorithm, bit_length, mode,
expiration, payload, payload_content_type,
payload_content_encoding, order_type):
"""
POST http://.../v1/orders/{order_uuid}
Creates an order to generate a secret with plain text. This is
@ -68,12 +71,13 @@ class OrdersClient(BarbicanRestClient):
remote_url = self._get_base_url()
secret = Secret(name=name,
payload_content_type=payload_content_type,
payload_content_encoding=payload_content_encoding,
expiration=expiration,
algorithm=algorithm,
bit_length=bit_length,
mode=mode,
payload=payload)
req_obj = Order(secret=secret)
req_obj = Order(meta=secret, order_type=order_type)
resp = self.request('POST', remote_url, request_entity=req_obj,
response_entity_type=OrderRef)

View File

@ -22,9 +22,11 @@ from cloudcafe.cloudkeep.barbican.secrets.models.secret import Secret
class Order(AutoMarshallingModel):
def __init__(self, secret, secret_href=None, status=None, order_ref=None):
def __init__(self, meta=None, secret_href=None, status=None,
order_ref=None, order_type=None):
super(Order, self).__init__()
self.secret = secret
self.order_type = order_type
self.meta = meta
self.secret_href = secret_href
self.status = status
self.order_ref = order_ref
@ -45,8 +47,8 @@ class Order(AutoMarshallingModel):
return self.get_id_from_ref(ref=self.secret_href)
def _obj_to_json(self):
secret_dict = self.secret._obj_to_dict()
return dict_to_str({'secret': secret_dict})
secret_dict = self.meta._obj_to_dict()
return dict_to_str({'type': self.order_type, 'meta': secret_dict})
@classmethod
def _json_to_obj(cls, serialized_str):
@ -59,7 +61,8 @@ class Order(AutoMarshallingModel):
'order_ref': json_dict.get('order_ref'),
'status': json_dict.get('status'),
'secret_href': json_dict.get('secret_ref'),
'secret': Secret._dict_to_obj(json_dict.get('secret'))
'meta': Secret._dict_to_obj(json_dict.get('meta')),
'order_type': json_dict.get('type')
}
return Order(**args)

View File

@ -21,8 +21,9 @@ from cafe.engine.models.base import AutoMarshallingModel
class Secret(AutoMarshallingModel):
def __init__(self, name, expiration, algorithm, bit_length, mode,
payload_content_type=None, payload=None, content_types=None,
def __init__(self, name=None, expiration=None, algorithm=None,
bit_length=None, mode=None, payload_content_type=None,
payload=None, content_types=None,
payload_content_encoding=None):
super(Secret, self).__init__()