Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
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)
Пример #8
0
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)
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
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)
Пример #12
0
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)
Пример #13
0
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)