@@ -53,15 +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-
64- 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 ):
6566 self .url = url .rstrip ('/' )
6667 self .parsed_url = six .moves .urllib .parse .urlparse (self .url )
6768 if not isinstance (key , Key ):
@@ -71,19 +72,23 @@ def __init__(self, url, key, client, version='0.10.8', headers={}, ssl_verify=Tr
7172 self .key = key
7273 self .client = client
7374 self .version = version
74- self .encryption_version = encryption_version
7575 self .headers = dict ((k .lower (), v ) for k , v in six .iteritems (headers ))
76+ self .encryption_version = encryption_version
7677 self .version_parsed = pkg_resources .parse_version (self .version )
7778 self .platform = self .parsed_url .hostname == 'api.opscode.com'
7879 self .ssl_verify = ssl_verify
7980 if not api_stack_value ():
8081 self .set_default ()
8182 self .encryption_key = None
83+ # Read the secret key from the input file
8284 if secret_file is not None :
8385 self .secret_file = secret_file
8486 if os .path .exists (self .secret_file ):
8587 self .encryption_key = open (self .secret_file ).read ().strip ()
86-
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
8792
8893 @classmethod
8994 def from_config_file (cls , path ):
@@ -95,8 +100,8 @@ def from_config_file(cls, path):
95100 # Can't even read the config file
96101 log .debug ('Unable to read config file "%s"' , path )
97102 return
98- url = key_path = client_name = encryption_version = None
99103 ssl_verify = True
104+ url = key_path = client_name = encryption_version = None
100105 for line in open (path ):
101106 if not line .strip () or line .startswith ('#' ):
102107 continue # Skip blanks and comments
0 commit comments