@@ -77,6 +77,23 @@ def check_key_manager_permissions(conn: openstack.connection.Connection) -> None
7777 has sufficient access to the Key Manager API functionality.
7878 """
7979 secret_name = "scs-member-role-test-secret"
80+ if not check_for_member_role (conn ):
81+ logger .warning ("Cannot test key-manager permissions. " "User has wrong roles" )
82+ return None
83+
84+ def _find_secret (secret_name_or_id : str ):
85+ """Replacement method for finding secrets.
86+
87+ Mimicks the behavior of Connection.key_manager.find_secret()
88+ but fixes an issue with the internal implementation raising an
89+ exception due to an unexpected microversion parameter.
90+ """
91+ secrets = conn .key_manager .secrets ()
92+ for s in secrets :
93+ if s .name == secret_name_or_id or s .id == secret_name_or_id :
94+ return s
95+ return None
96+
8097 try :
8198 existing_secret = _find_secret (conn , secret_name )
8299 if existing_secret :
@@ -88,25 +105,21 @@ def check_key_manager_permissions(conn: openstack.connection.Connection) -> None
88105 secret_type = "opaque" ,
89106 payload = "foo" ,
90107 )
91- try :
92- new_secret = _find_secret (conn , secret_name )
93- if not new_secret :
94- raise ValueError (f"Secret '{ secret_name } ' was not discoverable by the user" )
95- finally :
96- conn .key_manager .delete_secret (new_secret )
97- except openstack .exceptions .ForbiddenException :
98- logger .debug ('exception details' , exc_info = True )
99- logger .error (
100- "Users with the 'member' role can use Key Manager API: FAIL"
108+
109+ new_secret = _find_secret (secret_name )
110+ assert new_secret , (
111+ f"Secret created with name '{ secret_name } ' was not discoverable by "
112+ f"the user"
101113 )
102- return 1
103- logger .info (
104- "Users with the 'member' role can use Key Manager API: PASS"
105- )
114+ conn .key_manager .delete_secret (new_secret )
115+ except openstack .exceptions .ForbiddenException as e :
116+ print ("Users of the 'member' role can use Key Manager API: FAIL" )
117+ print (f"ERROR: { str (e )} " )
118+ exit (1 )
119+ print ("Users of the 'member' role can use Key Manager API: PASS" )
106120
107121
108122def main ():
109- initialize_logging ()
110123 parser = argparse .ArgumentParser (description = "SCS Mandatory IaaS Service Checker" )
111124 parser .add_argument (
112125 "--os-cloud" ,
0 commit comments