in client/python/cli/command/principal_roles.py [0:0]
def execute(self, api: PolarisDefaultApi) -> None:
if self.principal_roles_subcommand == Subcommands.CREATE:
request = CreatePrincipalRoleRequest(
principal_role=PrincipalRole(
name=self.principal_role_name,
properties=self.properties
)
)
api.create_principal_role(request)
elif self.principal_roles_subcommand == Subcommands.DELETE:
api.delete_principal_role(self.principal_role_name)
elif self.principal_roles_subcommand == Subcommands.GET:
print(api.get_principal_role(self.principal_role_name).to_json())
elif self.principal_roles_subcommand == Subcommands.LIST:
if self.catalog_role_name:
for principal_role in api.list_principal_roles(self.catalog_role_name).roles:
print(principal_role.to_json())
elif self.principal_name:
for principal_role in api.list_principal_roles_assigned(self.principal_name).roles:
print(principal_role.to_json())
else:
for principal_role in api.list_principal_roles().roles:
print(principal_role.to_json())
elif self.principal_roles_subcommand == Subcommands.UPDATE:
principal_role = api.get_principal_role(self.principal_role_name)
new_properties = principal_role.properties or {}
# Add or update all entries specified in set_properties
if self.set_properties:
new_properties = {**new_properties, **self.set_properties}
# Remove all keys specified in remove_properties
if self.remove_properties:
for to_remove in self.remove_properties:
new_properties.pop(to_remove, None)
request = UpdatePrincipalRoleRequest(
current_entity_version=principal_role.entity_version,
properties=new_properties
)
api.update_principal_role(self.principal_role_name, request)
elif self.principal_roles_subcommand == Subcommands.GRANT:
request = GrantPrincipalRoleRequest(
principal_role=PrincipalRole(
name=self.principal_role_name
),
)
api.assign_principal_role(self.principal_name, request)
elif self.principal_roles_subcommand == Subcommands.REVOKE:
api.revoke_principal_role(self.principal_name, self.principal_role_name)
else:
raise Exception(f"{self.principal_roles_subcommand} is not supported in the CLI")