def build_parents()

in src/services/modular_helpers.py [0:0]


def build_parents(payload: ResolveParentsPayload,
                  parent_service: ParentService, application_id: str,
                  customer_id: str, type_: ParentType, created_by: str,
                  description: str = 'Rule Engine auto-created parent',
                  meta: dict | None = None) -> set[Parent]:
    """

    :param payload:
    :param parent_service:
    :param application_id:
    :param customer_id:
    :param type_:
    :param created_by:
    :param description:
    :param meta:
    :return:
    """
    meta = meta or {}
    ps = parent_service

    to_create = set()
    for tenant in payload.tenant_names:
        to_create.add(ps.create_tenant_scope(
            application_id=application_id,
            customer_id=customer_id,
            type_=type_,
            tenant_name=tenant,
            disabled=False,
            created_by=created_by,
            is_deleted=False,
            description=description,
            meta=meta,
        ))
    for tenant in payload.exclude_tenants:
        to_create.add(ps.create_tenant_scope(
            application_id=application_id,
            customer_id=customer_id,
            type_=type_,
            tenant_name=tenant,
            disabled=True,
            created_by=created_by,
            is_deleted=False,
            description=description,
            meta=meta,
        ))
    if payload.all_tenants:
        if payload.clouds:
            for cloud in payload.clouds:
                to_create.add(ps.create_all_scope(
                    application_id=application_id,
                    customer_id=customer_id,
                    type_=type_,
                    created_by=created_by,
                    is_deleted=False,
                    description=description,
                    meta=meta,
                    cloud=cloud
                ))
        else:
            to_create.add(ps.create_all_scope(
                application_id=application_id,
                customer_id=customer_id,
                type_=type_,
                created_by=created_by,
                is_deleted=False,
                description=description,
                meta=meta,
            ))
    return to_create