@@ -20,6 +20,8 @@ class ManagerNet(object):
20
20
namespace = 'apic-management'
21
21
username = ''
22
22
password = ''
23
+ cm_username = ''
24
+ cm_password = ''
23
25
hostname = ''
24
26
default_client_id = "caa87d9a-8cd7-4686-8b6e-ee2cdc5ee267"
25
27
default_client_secret = "3ecff363-7eb3-44be-9e07-6d4386c48b0b"
@@ -52,21 +54,15 @@ def __init__(self, config, trawler):
52
54
self .version = Gauge ('apiconnect_build_info' ,
53
55
"A metric with a constant '1' value labeled with API Connect version details" ,
54
56
["version" , "juhu_release" ])
57
+
58
+ # Provider creds
55
59
if 'secret' in config :
56
60
# If config points to a secret, then load from that
57
61
# either in this namespace, or the specified one
58
62
self .load_credentials_from_secret (
59
63
config .get ('secret' ),
60
64
config .get ('secret_namespace' , self .namespace ))
61
-
62
- if 'cloud_manager_secret' in config :
63
- # If config points to a secret, then load from that
64
- # either in this namespace, or the specified one
65
- self .load_credentials_from_secret (
66
- config .get ('cloud_manager_secret' ),
67
- config .get ('secret_namespace' , self .namespace ))
68
-
69
- if not 'secret' in config and not 'cloud_manager_secret' in config :
65
+ else :
70
66
# Cloud manager username to use for REST calls
71
67
self .username = config .get ('username' , 'admin' )
72
68
if self .grant_type == 'client_credentials' :
@@ -76,6 +72,16 @@ def __init__(self, config, trawler):
76
72
# Load password from secret `cloudmanager_password`
77
73
self .password = trawler .read_secret ('cloudmanager_password' )
78
74
75
+ # Cloud manager creds
76
+ if 'cloud_manager_secret' in config :
77
+ # If config points to a secret, then load from that
78
+ # either in this namespace, or the specified one
79
+ self .load_credentials_from_secret (
80
+ config .get ('cloud_manager_secret' ),
81
+ config .get ('cloud_manager_secret_namespace' , self .namespace ),
82
+ cloud_manager = True )
83
+
84
+
79
85
if self .password is None :
80
86
# Use out of box default password
81
87
self .password = 'admin'
@@ -84,20 +90,29 @@ def __init__(self, config, trawler):
84
90
logger .debug ("Hostname found is {}" .format (self .hostname ))
85
91
self .trawler = trawler
86
92
87
- def load_credentials_from_secret (self , secret_name , namespace ):
93
+ def load_credentials_from_secret (self , secret_name , namespace , cloud_manager = False ):
88
94
try :
89
95
if self .use_kubeconfig :
90
96
config .load_kube_config ()
91
97
else :
92
98
config .load_incluster_config ()
99
+
93
100
v1 = client .CoreV1Api ()
94
101
logger .info ("Loading cloud manager credentials from secret {} in namespace {}" .format (secret_name , namespace ))
95
102
# Get credentials secret
96
103
secrets_response = v1 .read_namespaced_secret (name = secret_name , namespace = namespace )
97
- if 'password' in secrets_response .data :
98
- self .password = base64 .b64decode (secrets_response .data ['password' ]).decode ('utf-8' )
99
- self .username = base64 .b64decode (secrets_response .data ['username' ]).decode ('utf-8' )
100
- logger .info ("Username to use is {}, password length is {}" .format (self .username , len (self .password )))
104
+ if cloud_manager :
105
+ if 'password' in secrets_response .data :
106
+ self .cm_password = base64 .b64decode (secrets_response .data ['password' ]).decode ('utf-8' )
107
+ self .cm_username = base64 .b64decode (secrets_response .data ['username' ]).decode ('utf-8' )
108
+ logger .info ("Username to use is {}, password length is {}" .format (self .cm_username , len (self .cm_password )))
109
+ else :
110
+ if 'password' in secrets_response .data :
111
+ self .password = base64 .b64decode (secrets_response .data ['password' ]).decode ('utf-8' )
112
+ self .username = base64 .b64decode (secrets_response .data ['username' ]).decode ('utf-8' )
113
+ logger .info ("Username to use is {}, password length is {}" .format (self .username , len (self .password )))
114
+
115
+ # Client secret is not applicable to cloud manager so no test needed
101
116
if 'client_secret' in secrets_response .data :
102
117
self .client_secret = base64 .b64decode (secrets_response .data ['client_secret' ]).decode ('utf-8' )
103
118
self .client_id = base64 .b64decode (secrets_response .data ['client_id' ]).decode ('utf-8' )
@@ -317,8 +332,8 @@ def get_token(self, host, cloud_manager=False):
317
332
if cloud_manager :
318
333
data ['client_id' ] = self .default_client_id
319
334
data ['client_secret' ] = self .default_client_secret
320
- data ['username' ] = self .username
321
- data ['password' ] = self .password
335
+ data ['username' ] = self .cm_username
336
+ data ['password' ] = self .cm_password
322
337
data ['realm' ] = 'admin/default-idp-1'
323
338
324
339
url = "https://{}/api/token" .format (host )
0 commit comments