@@ -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