@@ -53,15 +53,16 @@ class ChefAPI(object):
53
53
54
54
In order to use :class:`EncryptedDataBagItem` object it is necessary
55
55
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.
57
59
"""
58
60
59
61
ruby_value_re = re .compile (r'#\{([^}]+)\}' )
60
62
env_value_re = re .compile (r'ENV\[(.+)\]' )
61
63
ruby_string_re = re .compile (r'^\s*(["\'])(.*?)\1\s*$' )
62
64
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 ):
65
66
self .url = url .rstrip ('/' )
66
67
self .parsed_url = six .moves .urllib .parse .urlparse (self .url )
67
68
if not isinstance (key , Key ):
@@ -71,19 +72,23 @@ def __init__(self, url, key, client, version='0.10.8', headers={}, ssl_verify=Tr
71
72
self .key = key
72
73
self .client = client
73
74
self .version = version
74
- self .encryption_version = encryption_version
75
75
self .headers = dict ((k .lower (), v ) for k , v in six .iteritems (headers ))
76
+ self .encryption_version = encryption_version
76
77
self .version_parsed = pkg_resources .parse_version (self .version )
77
78
self .platform = self .parsed_url .hostname == 'api.opscode.com'
78
79
self .ssl_verify = ssl_verify
79
80
if not api_stack_value ():
80
81
self .set_default ()
81
82
self .encryption_key = None
83
+ # Read the secret key from the input file
82
84
if secret_file is not None :
83
85
self .secret_file = secret_file
84
86
if os .path .exists (self .secret_file ):
85
87
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
87
92
88
93
@classmethod
89
94
def from_config_file (cls , path ):
@@ -95,8 +100,8 @@ def from_config_file(cls, path):
95
100
# Can't even read the config file
96
101
log .debug ('Unable to read config file "%s"' , path )
97
102
return
98
- url = key_path = client_name = encryption_version = None
99
103
ssl_verify = True
104
+ url = key_path = client_name = encryption_version = None
100
105
for line in open (path ):
101
106
if not line .strip () or line .startswith ('#' ):
102
107
continue # Skip blanks and comments
0 commit comments