Skip to content

Commit c06b329

Browse files
Use openstack proxy for kms service (#127)
Use openstack proxy for kms service Switch kms and obs to using openstack proxy instead of openstack_sdk proxy Reviewed-by: None <None> Reviewed-by: Artem Goncharov <[email protected]>
1 parent 1502247 commit c06b329

File tree

17 files changed

+68
-65
lines changed

17 files changed

+68
-65
lines changed

doc/source/sdk/guides/kms.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ Encrypt Datakey
143143
This interface is used to encrypt a KMS data encryption key.
144144

145145
.. literalinclude:: ../examples/kms/encrypt_datakey.py
146-
:lines: 16-27
146+
:lines: 16-25
147147

148148
Decrypt Datakey
149149
^^^^^^^^^^^^^^^

examples/kms/create_datakey.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
conn = openstack.connect(cloud='otc')
2121

2222
dek = conn.kms.create_datakey(
23-
key_id='cmk_id',
23+
cmk='cmk_id',
2424
datakey_length='512'
2525
)
2626
print(dek)

examples/kms/create_datakey_without_plaintext.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
conn = openstack.connect(cloud='otc')
2121

2222
dek = conn.kms.create_datakey_wo_plain(
23-
key_id='cmk_id',
23+
cmk='cmk_id',
2424
datakey_length='512'
2525
)
2626
print(dek)

examples/kms/decrypt_datakey.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
conn = openstack.connect(cloud='otc')
2121

2222
data = conn.kms.decrypt_datakey(
23-
key_id='cmk_id',
23+
cmk='cmk_id',
2424
cypher_text='64_bit_cypher',
2525
datakey_cypher_length='64'
2626
)

examples/kms/encrypt_datakey.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
conn = openstack.connect(cloud='otc')
2121

2222
data = conn.kms.encrypt_datakey(
23-
key_id='cmk_id',
24-
plain_text='64_bit_key',
25-
datakey_plain_length='64'
23+
datakey='datakey_id'
2624
)
2725
print(data)

otcextensions/sdk/kms/kms_service.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
# under the License.
1212
from openstack import service_description
1313

14-
from otcextensions.sdk.kms.v1 import _proxy
14+
from otcextensions.sdk.kms.v1 import _proxy as _proxy_v1
1515

1616

1717
class KmsService(service_description.ServiceDescription):
1818
"""The KMS service."""
1919

2020
supported_versions = {
21-
'1': _proxy.Proxy
21+
'1': _proxy_v1.Proxy
2222
}

otcextensions/sdk/kms/v1/_base.py

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,41 +15,37 @@
1515
from openstack import utils
1616

1717
from otcextensions.i18n import _
18-
from otcextensions.sdk import sdk_resource
1918

2019
_logger = _log.setup_logging('openstack')
2120

2221

23-
class Resource(sdk_resource.Resource):
22+
class Resource(resource.Resource):
2423
base_path = '/kms'
2524

2625
#: Error code when create a secret key
2726
error_code = resource.Body('error_code')
2827
#: Error message when create a secret key
2928
error_msg = resource.Body('error_msg')
3029

31-
def create(self, session, prepend_key=True, requires_id=True,
32-
endpoint_override=None, headers=None, uri=None):
30+
def create(self, session, prepend_key=False, uri=None,
31+
requires_id=True, **params):
3332
if not self.allow_create:
3433
raise exceptions.MethodNotSupported(self, "create")
3534

3635
session = self._get_session(session)
3736

3837
request = self._prepare_request(requires_id=False,
39-
prepend_key=prepend_key)
38+
prepend_key=prepend_key
39+
)
4040
# PATH is different
4141
if uri:
4242
request.url = uri
4343
elif self.create_path:
4444
request.url = self.create_path
4545

46-
req_args = self._prepare_override_args(
47-
endpoint_override=endpoint_override,
48-
request_headers=request.headers,
49-
additional_headers=headers)
50-
5146
response = session.post(request.url,
52-
json=request.body, **req_args)
47+
json=request.body, headers=request.headers,
48+
params=params)
5349

5450
if response.status_code == 400:
5551
body = response.json()
@@ -69,7 +65,7 @@ def create(self, session, prepend_key=True, requires_id=True,
6965
return self
7066

7167
def _action(self, session, url_part, body):
72-
"""Preform actions given the message body.
68+
"""Perform actions given the message body.
7369
"""
7470
url = utils.urljoin(self.base_path, url_part)
7571
response = session.post(

otcextensions/sdk/kms/v1/_proxy.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,23 @@
99
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
1010
# License for the specific language governing permissions and limitations
1111
# under the License.
12-
from otcextensions.sdk import sdk_proxy
12+
from openstack import proxy
1313
from otcextensions.sdk.kms.v1 import data_key as _data_key
1414
from otcextensions.sdk.kms.v1 import key as _key
1515
from otcextensions.sdk.kms.v1 import misc as _misc
1616

1717

18-
class Proxy(sdk_proxy.Proxy):
18+
class Proxy(proxy.Proxy):
1919

2020
skip_discovery = True
2121

22+
def __init__(self, session, *args, **kwargs):
23+
super(Proxy, self).__init__(session=session, *args, **kwargs)
24+
self.additional_headers = {
25+
'Content-Type': 'application/json',
26+
'X-Language': 'en-us'
27+
}
28+
2229
# ======== CMK Keys ========
2330
def keys(self, **query):
2431
"""List all master keys.
@@ -233,7 +240,7 @@ def get_instance_number(self):
233240
:class:`~otcextensions.sdk.kms.v1.key.InstanceNumber`
234241
"""
235242
instance_num_obj = _misc.InstanceNumber()
236-
return instance_num_obj.get(self)
243+
return instance_num_obj.fetch(self)
237244

238245
def quotas(self):
239246
"""List quota resources for KMS service

otcextensions/sdk/kms/v1/data_key.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class DataKey(_base.Resource):
3232

3333
allow_create = True
3434
allow_update = True
35+
allow_fetch = False
3536

3637
# Properties
3738
#: Secret key (CMK) ID
@@ -60,12 +61,11 @@ class DataKey(_base.Resource):
6061
#: *Type:str*
6162
cipher_text = resource.Body('cipher_text')
6263

63-
def create_wo_plain(self, session, prepend_key=True, requires_id=True,
64-
endpoint_override=None, headers=None):
64+
def create_wo_plain(self, session, prepend_key=True, requires_id=True):
6565
return super(DataKey, self).create(
66-
session, prepend_key=prepend_key, requires_id=requires_id,
67-
endpoint_override=endpoint_override, headers=headers,
68-
uri='/kms/create-datakey-without-plaintext')
66+
session, prepend_key=prepend_key,
67+
uri='/kms/create-datakey-without-plaintext',
68+
requires_id=requires_id)
6969

7070
def encrypt(self, session):
7171
"""Encrypt DEK

otcextensions/sdk/kms/v1/key.py

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@ class Key(_base.Resource):
2424
resource_key = 'key_info'
2525

2626
allow_list = True
27-
allow_get = True
2827
allow_create = True
28+
allow_update = False
29+
allow_fetch = True
2930

3031
# Properties
3132
#: Secret key ID
@@ -55,8 +56,8 @@ class Key(_base.Resource):
5556
#: Error message when create a secret key
5657
error_msg = resource.Body('error_msg')
5758

58-
def get(self, session, error_message=None, requires_id=True,
59-
endpoint_override=None, headers=None):
59+
def fetch(self, session, requires_id=None,
60+
base_path=None, error_message=None):
6061
if not self.allow_get:
6162
raise exceptions.MethodNotSupported(self, "get")
6263
url = self.get_path
@@ -93,8 +94,7 @@ def cancel_deletion(self, session):
9394
)
9495

9596
@classmethod
96-
def list(cls, session, paginated=True,
97-
endpoint_override=None, headers=None, **kwargs):
97+
def list(cls, session, paginated=True, base_path=None, **kwargs):
9898

9999
if not cls.allow_list:
100100
raise exceptions.MethodNotSupported(cls, "list")
@@ -108,25 +108,21 @@ def list(cls, session, paginated=True,
108108
body = {}
109109
limit = None
110110
if 'limit' in kwargs:
111-
limit = kwargs['limit']
111+
limit = kwargs.pop('limit')
112112
body['limit'] = limit
113113
if 'marker' in kwargs:
114-
body['marker'] = kwargs['marker']
114+
body['marker'] = kwargs.pop('marker')
115115
if 'key_state' in kwargs:
116-
body['key_state'] = kwargs['key_state']
116+
body['key_state'] = kwargs.pop('key_state')
117117
if 'sequence' in kwargs:
118-
body['sequence'] = kwargs['sequence']
118+
body['sequence'] = kwargs.pop('sequence')
119119

120120
total_yielded = 0
121121
while uri:
122122

123123
session = cls._get_session(session)
124124

125-
args = cls._prepare_override_args(
126-
endpoint_override=endpoint_override,
127-
additional_headers=headers)
128-
129-
response = session.post(uri, json=body, **args)
125+
response = session.post(uri, json=body, **kwargs)
130126

131127
data = response.json()
132128

0 commit comments

Comments
 (0)