def _analyze_instance_resources()

in azext_edge/edge/providers/orchestration/clone.py [0:0]


    def _analyze_instance_resources(self):
        api_version = self.version_guru.get_instance_api()
        brokers_iter = self.instances.iotops_mgmt_client.broker.list_by_resource_group(
            resource_group_name=self.resource_group_name, instance_name=self.instance_name
        )
        # Let us keep things simple atm
        default_broker = list(brokers_iter)[0]
        self._add_resource(
            key=StateResourceKey.BROKER,
            api_version=api_version,
            data=default_broker,
            depends_on=StateResourceKey.INSTANCE,
        )

        # Initial dependencies
        nested_params = {
            **build_parameter(name=TemplateParams.CUSTOM_LOCATION_NAME.value),
            **build_parameter(name=TemplateParams.INSTANCE_NAME.value),
        }
        broker_resource_id_expr = get_resource_id_expr(rtype=default_broker["type"], resource_id=default_broker["id"])

        # authN
        self._add_deployment(
            key=StateResourceKey.AUTHN,
            api_version=api_version,
            data_iter=self.instances.iotops_mgmt_client.broker_authentication.list_by_resource_group(
                resource_group_name=self.resource_group_name,
                instance_name=self.instance_name,
                broker_name=default_broker["name"],
            ),
            depends_on=broker_resource_id_expr,
            parameters=nested_params,
        )

        # authZ
        self._add_deployment(
            key=StateResourceKey.AUTHZ,
            api_version=api_version,
            data_iter=self.instances.iotops_mgmt_client.broker_authorization.list_by_resource_group(
                resource_group_name=self.resource_group_name,
                instance_name=self.instance_name,
                broker_name=default_broker["name"],
            ),
            depends_on=broker_resource_id_expr,
            parameters=nested_params,
        )

        # listener
        listener_depends_on = []
        for active in self.active_deployment:
            if active in [StateResourceKey.AUTHN, StateResourceKey.AUTHZ]:
                listener_depends_on.append(
                    get_resource_id_by_parts("Microsoft.Resources/deployments", self.active_deployment[active][-1])
                )

        self._add_deployment(
            key=StateResourceKey.LISTENER,
            api_version=api_version,
            data_iter=self.instances.iotops_mgmt_client.broker_listener.list_by_resource_group(
                resource_group_name=self.resource_group_name,
                instance_name=self.instance_name,
                broker_name=default_broker["name"],
            ),
            depends_on=listener_depends_on,
            parameters=nested_params,
        )

        instance_resource_id_expr = get_resource_id_by_param(
            "microsoft.iotoperations/instances", TemplateParams.INSTANCE_NAME
        )

        # endpoint
        self._add_deployment(
            key=StateResourceKey.ENDPOINT,
            api_version=api_version,
            data_iter=self.instances.iotops_mgmt_client.dataflow_endpoint.list_by_resource_group(
                resource_group_name=self.resource_group_name, instance_name=self.instance_name
            ),
            depends_on=instance_resource_id_expr,
            parameters=nested_params,
        )

        # profile
        profile_iter = list(
            self.instances.iotops_mgmt_client.dataflow_profile.list_by_resource_group(
                resource_group_name=self.resource_group_name, instance_name=self.instance_name
            )
        )
        self._add_deployment(
            key=StateResourceKey.PROFILE,
            api_version=api_version,
            data_iter=profile_iter,
            depends_on=instance_resource_id_expr,
            parameters=nested_params,
        )

        # dataflow
        if profile_iter:
            dataflows = []
            for profile in profile_iter:
                dataflows.extend(
                    self.instances.iotops_mgmt_client.dataflow.list_by_profile_resource(
                        resource_group_name=self.resource_group_name,
                        instance_name=self.instance_name,
                        dataflow_profile_name=profile["name"],
                    )
                )

            self._add_deployment(
                key=StateResourceKey.DATAFLOW,
                api_version=api_version,
                data_iter=dataflows,
                depends_on=[
                    get_resource_id_by_parts(
                        "Microsoft.Resources/deployments", self.active_deployment[StateResourceKey.PROFILE][-1]
                    ),
                    get_resource_id_by_parts(
                        "Microsoft.Resources/deployments", self.active_deployment[StateResourceKey.ENDPOINT][-1]
                    ),
                ],
                parameters=nested_params,
            )