@@ -7019,6 +7019,96 @@ def service__opensearch__snapshot__restore(self) -> None:
70197019 )
70207020 self .print_response (response , json = True )
70217021
7022+ @arg .project
7023+ @arg .json
7024+ def project__cmks__accessors (self ) -> None :
7025+ """List project customer managed key accessors"""
7026+ response = self .client .project_cmks_accessors (
7027+ project = self .get_project (),
7028+ )
7029+ if self .args .json :
7030+ self .print_response (response , json = self .args .json )
7031+ else :
7032+ # Using custom formatting here, as accessor fields could change
7033+ print ("PROVIDER DETAILS" )
7034+ print ("======== =======" )
7035+ for provider in response ["accessors" ]:
7036+ details = f"\n { '' :8} " .join (f"{ k } { v } " for k , v in response ["accessors" ][provider ].items ())
7037+ print (f"{ provider :8} { details } " )
7038+
7039+ @arg .project
7040+ @arg .json
7041+ def project__cmks__list (self ) -> None :
7042+ """List project customer managed keys (CMKs)"""
7043+ response = self .client .project_cmks_list (
7044+ project = self .get_project (),
7045+ )
7046+ if self .args .json :
7047+ self .print_response (response , json = self .args .json )
7048+ else :
7049+ layout = ["id" , "status" , "cloud" , "resource" ]
7050+ self .print_response (response ["cmks" ], json = self .args .json , table_layout = layout )
7051+
7052+ @arg .project
7053+ @arg ("--cmk-id" , help = "CMK Identifier" , required = True )
7054+ @arg .json
7055+ def project__cmks__get (self ) -> None :
7056+ """Get details on a customer managed keys (CMKs)"""
7057+ response = self .client .project_cmks_get (
7058+ project = self .get_project (),
7059+ cmk_id = self .args .cmk_id ,
7060+ )
7061+ if self .args .json :
7062+ self .print_response (response , json = self .args .json )
7063+ else :
7064+ layout = ["property" , "value" ]
7065+ fields = [
7066+ {
7067+ "property" : k ,
7068+ "value" : v ,
7069+ }
7070+ for k , v in response ["cmk" ].items ()
7071+ ]
7072+ self .print_response (fields , json = self .args .json , table_layout = layout )
7073+
7074+ @arg .project
7075+ @arg ("--provider" , choices = ["gcp" , "aws" , "oci" ], required = True )
7076+ @arg ("--resource" , help = "Resource name" , required = True )
7077+ @arg .json
7078+ def project__cmks__create (self ) -> None :
7079+ """Define a project customer managed key (CMK)"""
7080+ response = self .client .project_cmks_create (
7081+ project = self .get_project (),
7082+ provider = self .args .provider ,
7083+ resource = self .args .resource ,
7084+ )
7085+ if self .args .json :
7086+ self .print_response (response , json = self .args .json )
7087+ else :
7088+ layout = ["property" , "value" ]
7089+ fields = [
7090+ {
7091+ "property" : k ,
7092+ "value" : v ,
7093+ }
7094+ for k , v in response ["cmk" ].items ()
7095+ ]
7096+ self .print_response (fields , json = self .args .json , table_layout = layout )
7097+
7098+ @arg .project
7099+ @arg ("--cmk-id" , help = "CMK Identifier" , required = True )
7100+ @arg .json
7101+ def project__cmks__delete (self ) -> None :
7102+ """Delete a customer managed keys (CMKs)"""
7103+ response = self .client .project_cmks_delete (
7104+ project = self .get_project (),
7105+ cmk_id = self .args .cmk_id ,
7106+ )
7107+ if self .args .json :
7108+ self .print_response (response , json = self .args .json )
7109+ else :
7110+ cmk_id = response ["cmk" ]["id" ]
7111+ print (f"Deleted CMK '{ cmk_id } '" )
70227112
70237113if __name__ == "__main__" :
70247114 AivenCLI ().main ()
0 commit comments