def SecretInfo(secret_vo: Secret, minimal=False): info = { 'secret_id': secret_vo.secret_id, 'name': secret_vo.name, 'secret_type': secret_vo.secret_type } if minimal is False: info.update({ 'tags': [tag_pb2.Tag(key=tag.key, value=tag.value) for tag in secret_vo.tags], 'schema': secret_vo.schema, 'provider': secret_vo.provider, 'service_account_id': secret_vo.service_account_id, 'project_id': secret_vo.project_id, 'domain_id': secret_vo.domain_id, 'created_at': change_timestamp_type(secret_vo.created_at) }) if getattr(secret_vo, 'secret_groups', None) is not None: secret_group_infos = list(map(lambda secret_group: SecretGroupInfo(secret_group), secret_vo.secret_groups)) info.update({ 'secret_groups': change_list_value_type(secret_group_infos) }) return secret_pb2.SecretInfo(**info)
def UserInfo(user_vo: User, minimal=False): info = { 'user_id': user_vo.user_id, 'name': user_vo.name, 'state': user_vo.state, 'user_type': user_vo.user_type } if not minimal: info.update({ 'email': user_vo.email, 'backend': user_vo.backend, 'language': user_vo.language, 'timezone': user_vo.timezone, 'tags': [ tag_pb2.Tag(key=tag.key, value=tag.value) for tag in user_vo.tags ], 'domain_id': user_vo.domain_id, 'last_accessed_at': change_timestamp_type(user_vo.last_accessed_at), 'created_at': change_timestamp_type(user_vo.created_at) }) return user_pb2.UserInfo(**info)
def ProjectGroupRoleBindingInfo(role_binding_vo): info = { 'role_binding_id': role_binding_vo.role_binding_id, 'resource_type': role_binding_vo.resource_type, 'resource_id': role_binding_vo.resource_id, 'role_info': RoleInfo(role_binding_vo.role, minimal=True), 'project_group_info': ProjectGroupInfo(role_binding_vo.project_group, minimal=True), 'labels': role_binding_vo.labels, 'tags': [ tag_pb2.Tag(key=tag.key, value=tag.value) for tag in role_binding_vo.tags ], 'domain_id': role_binding_vo.domain_id, 'created_at': change_timestamp_type(role_binding_vo.created_at) } return project_group_pb2.ProjectGroupRoleBindingInfo(**info)
def ServiceAccountInfo(service_account_vo: ServiceAccount, minimal=False): info = { 'service_account_id': service_account_vo.service_account_id, 'name': service_account_vo.name, 'provider': service_account_vo.provider } if not minimal: info.update({ 'data': change_struct_type(service_account_vo.data), 'tags': [tag_pb2.Tag(key=tag.key, value=tag.value) for tag in service_account_vo.tags], 'domain_id': service_account_vo.domain_id, 'created_at': change_timestamp_type(service_account_vo.created_at) }) if service_account_vo.project: info.update({ 'project_info': ProjectInfo(service_account_vo.project, minimal=True) }) # Temporary code for DB migration if not service_account_vo.project_id and service_account_vo.project: service_account_vo.update({'project_id': service_account_vo.project.project_id}) return service_account_pb2.ServiceAccountInfo(**info)
def ProjectGroupInfo(project_group_vo: ProjectGroup, minimal=False): info = { 'project_group_id': project_group_vo.project_group_id, 'name': project_group_vo.name } if not minimal: if project_group_vo.parent_project_group: info.update({ 'parent_project_group_info': ProjectGroupInfo(project_group_vo.parent_project_group, minimal=True) }) info.update({ 'tags': [ tag_pb2.Tag(key=tag.key, value=tag.value) for tag in project_group_vo.tags ], 'domain_id': project_group_vo.domain_id, 'created_by': project_group_vo.created_by, 'created_at': change_timestamp_type(project_group_vo.created_at) }) # Temporary code for DB migration if not project_group_vo.parent_project_group_id and project_group_vo.parent_project_group: project_group_vo.update({ 'parent_project_group_id': project_group_vo.parent_project_group.project_group_id }) return project_group_pb2.ProjectGroupInfo(**info)
def FindUserInfo(user_data: dict, minimal=False): info = { 'user_id': user_data.get('user_id'), 'name': user_data.get('name'), 'email': user_data.get('email') } if not minimal: info.update({ 'tags': [ tag_pb2.Tag(key=tag['key'], value=tag['value']) for tag in user_data.get('tags', []) ], }) return user_pb2.FindUserInfo(**info)
def PolicyInfo(policy_vo: Policy, minimal=False): info = { 'policy_id': policy_vo.policy_id, 'name': policy_vo.name } if not minimal: info.update({ 'permissions': change_list_value_type(policy_vo.permissions), 'tags': [tag_pb2.Tag(key=tag.key, value=tag.value) for tag in policy_vo.tags], 'domain_id': policy_vo.domain_id, 'created_at': change_timestamp_type(policy_vo.created_at) }) return policy_pb2.PolicyInfo(**info)
def RoleBindingInfo(role_binding_vo: RoleBinding, minimal=False): info = { 'role_binding_id': role_binding_vo.role_binding_id, 'resource_type': role_binding_vo.resource_type, 'resource_id': role_binding_vo.resource_id, 'role_info': RoleInfo(role_binding_vo.role, minimal=True) if role_binding_vo.role else None } if not minimal: info.update({ 'project_info': ProjectInfo(role_binding_vo.project, minimal=True) if role_binding_vo.project else None, 'project_group_info': ProjectGroupInfo(role_binding_vo.project_group, minimal=True) if role_binding_vo.project_group else None, 'labels': role_binding_vo.labels, 'tags': [ tag_pb2.Tag(key=tag.key, value=tag.value) for tag in role_binding_vo.tags ], 'domain_id': role_binding_vo.domain_id, 'created_at': change_timestamp_type(role_binding_vo.created_at) }) if not role_binding_vo.project_id and role_binding_vo.project: role_binding_vo.update( {'project_id': role_binding_vo.project.project_id}) if not role_binding_vo.project_group_id and role_binding_vo.project_group: role_binding_vo.update({ 'project_group_id': role_binding_vo.project_group.project_group_id }) # Temporary code for DB migration if not role_binding_vo.role_id and role_binding_vo.role: role_binding_vo.update({'role_id': role_binding_vo.role.role_id}) return role_binding_pb2.RoleBindingInfo(**info)
def SecretGroupInfo(secret_group_vo: SecretGroup, minimal=False): info = { 'secret_group_id': secret_group_vo.secret_group_id, 'name': secret_group_vo.name } if minimal is False: info.update({ 'tags': [ tag_pb2.Tag(key=tag.key, value=tag.value) for tag in secret_group_vo.tags ], 'domain_id': secret_group_vo.domain_id, 'created_at': change_timestamp_type(secret_group_vo.created_at) }) return secret_group_pb2.SecretGroupInfo(**info)
def ProviderInfo(provider_vo: Provider, minimal=False): info = {'provider': provider_vo.provider, 'name': provider_vo.name} if not minimal: info.update({ 'template': change_struct_type(provider_vo.template), 'metadata': change_struct_type(provider_vo.metadata), 'capability': change_struct_type(provider_vo.capability), 'tags': [ tag_pb2.Tag(key=tag.key, value=tag.value) for tag in provider_vo.tags ], 'created_at': change_timestamp_type(provider_vo.created_at) }) return provider_pb2.ProviderInfo(**info)
def RoleInfo(role_vo: Role, minimal=False): info = { 'role_id': role_vo.role_id, 'name': role_vo.name, 'role_type': role_vo.role_type } if not minimal: info.update({ 'policies': list(map(lambda policy: RolePolicyInfo(policy), role_vo.policies)), 'tags': [ tag_pb2.Tag(key=tag.key, value=tag.value) for tag in role_vo.tags ], 'domain_id': role_vo.domain_id, 'created_at': change_timestamp_type(role_vo.created_at) }) return role_pb2.RoleInfo(**info)
def ProjectGroupProjectInfo(project_vo: Project, minimal=False): info = {'project_id': project_vo.project_id, 'name': project_vo.name} if not minimal: if project_vo.project_group: info.update({ 'project_group_info': ProjectGroupInfo(project_vo.project_group, minimal=True) }) info.update({ 'tags': [ tag_pb2.Tag(key=tag.key, value=tag.value) for tag in project_vo.tags ], 'domain_id': project_vo.domain_id, 'created_by': project_vo.created_by, 'created_at': change_timestamp_type(project_vo.created_at) }) return project_group_pb2.ProjectGroupProjectInfo(**info)
def DomainInfo(domain_vo: Domain, minimal=False): info = { 'domain_id': domain_vo.domain_id, 'name': domain_vo.name, 'state': domain_vo.state } if not minimal: info.update({ 'plugin_info': PluginInfo(domain_vo.plugin_info), 'config': change_struct_type(domain_vo.config), 'created_at': change_timestamp_type(domain_vo.created_at), 'deleted_at': change_timestamp_type(domain_vo.deleted_at), 'tags': [ tag_pb2.Tag(key=tag.key, value=tag.value) for tag in domain_vo.tags ] }) return domain_pb2.DomainInfo(**info)