Skip to content

Commit

Permalink
Add restore key function (#14)
Browse files Browse the repository at this point in the history
* Add restore key function

* Update docstring for restore_key

Co-authored-by: Mathew Odden <[email protected]>
  • Loading branch information
thu2thu2 and mrodden authored Jul 14, 2021
1 parent 30fcbc5 commit e0932f2
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
14 changes: 14 additions & 0 deletions redstone/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -626,6 +626,20 @@ def rotate_key(self, key_id, payload=None):

return self._action(key_id, "rotate", data)

def restore_key(self, key_id: str):
"""
Restore a key.
The RestoreKey method reverts a key's status from `Destroyed` to `Active`.
This method cannot be used to restore a key that has been purged.
API Docs: https://cloud.ibm.com/apidocs/key-protect#restorekey
"""
resp = self.session.post(
"%s/api/v2/keys/%s/restore" % (self.endpoint_url, key_id)
)
self._validate_resp(resp)

def disable_key(self, key_id: str):
"""
Disable a key.
Expand Down
20 changes: 20 additions & 0 deletions test/integration/test_keyprotect.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,26 @@ def test_disable_enable_key(self):
resp = self.kp.get(key.get("id"))
self.assertEqual(resp["state"], 1)

def test_restore_key(self):
# create a key to be used for test
key = self.kp.create(name="test-key", root=True)
key_id = key.get("id")
self.addCleanup(self.kp.delete, key_id)

# delete the key
self.kp.delete(key_id)
resp = self.kp.get(key_id)
# state Destroyed = 5
self.assertEqual(resp["state"], 5)

# restore, must wait 30 sec or more before sending an restore
time.sleep(30)

self.kp.restore_key(key_id)
resp = self.kp.get(key_id)
# state Active = 1
self.assertEqual(resp["state"], 1)

def test_key_ring(self):
# test creating key ring
resp = self.kp.create_key_ring("testKeyRingIdPython")
Expand Down

0 comments on commit e0932f2

Please sign in to comment.