Skip to content
This repository was archived by the owner on May 9, 2020. It is now read-only.

Commit ef67bc0

Browse files
committed
Add ability to pass encryption key as string to ChefApi
1 parent 1801c55 commit ef67bc0

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

chef/api.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,16 @@ class ChefAPI(object):
5353
5454
In order to use :class:`EncryptedDataBagItem` object it is necessary
5555
to specify either a path to a file containing the Chef secret key and
56-
the Encrypted Databag version to be used (v1 by default)
56+
the Encrypted Databag version to be used (v1 by default).
57+
If both secret_file and secret_key are passed as argument, secret_key
58+
will take precedence.
5759
"""
5860

5961
ruby_value_re = re.compile(r'#\{([^}]+)\}')
6062
env_value_re = re.compile(r'ENV\[(.+)\]')
6163
ruby_string_re = re.compile(r'^\s*(["\'])(.*?)\1\s*$')
6264

63-
def __init__(self, url, key, client, version='0.10.8', headers={}, ssl_verify=True, secret_file=None, encryption_version=1):
65+
def __init__(self, url, key, client, version='0.10.8', headers={}, ssl_verify=True, secret_file=None, secret_key=None, encryption_version=1):
6466
self.url = url.rstrip('/')
6567
self.parsed_url = six.moves.urllib.parse.urlparse(self.url)
6668
if not isinstance(key, Key):
@@ -78,11 +80,15 @@ def __init__(self, url, key, client, version='0.10.8', headers={}, ssl_verify=Tr
7880
if not api_stack_value():
7981
self.set_default()
8082
self.encryption_key = None
83+
# Read the secret key from the input file
8184
if secret_file is not None:
8285
self.secret_file = secret_file
8386
if os.path.exists(self.secret_file):
8487
self.encryption_key = open(self.secret_file).read().strip()
85-
88+
if secret_key is not None:
89+
if encryption_key is not None:
90+
log.debug('Two encryption key found (file and parameter). The key passed as parameter will be used')
91+
self.encryption_key = secret_key
8692

8793
@classmethod
8894
def from_config_file(cls, path):

0 commit comments

Comments
 (0)