def find_schema_in_operation()

in src/aaz_dev/command/controller/cfg_reader.py [0:0]


    def find_schema_in_operation(cls, operation, idx):
        assert isinstance(idx, list), f"invalid schema_idx type: {type(idx)}"
        current_idx, next_idx = idx[:2]
        remain_idx = idx[2:]

        if isinstance(operation, CMDHttpOperation) and current_idx == _SchemaIdxEnum.Http:
            if operation.http.request and next_idx == _SchemaIdxEnum.Request:
                schema = cls.find_schema_in_request(operation.http.request, remain_idx)
                if schema:
                    return schema
            if operation.http.responses and next_idx.startswith(_SchemaIdxEnum.Response):
                for response in operation.http.responses:
                    if response.is_error:
                        continue
                    if '_'.join([_SchemaIdxEnum.Response, *[str(code) for code in response.status_codes]]) == next_idx:
                        schema = cls.find_schema_in_response(response, remain_idx)
                        if schema:
                            return schema

        elif isinstance(operation, CMDInstanceCreateOperation) and current_idx == _SchemaIdxEnum.Instance and next_idx == _SchemaIdxEnum.Create:
            if isinstance(operation.instance_create, CMDJsonInstanceCreateAction) and remain_idx[0] == _SchemaIdxEnum.Json:
                schema = cls.find_schema_in_json(operation.instance_create.json, remain_idx[1:])
                if schema:
                    return schema

        elif isinstance(operation, CMDInstanceUpdateOperation) and current_idx == _SchemaIdxEnum.Instance and next_idx == _SchemaIdxEnum.Update:
            if isinstance(operation.instance_update, CMDJsonInstanceUpdateAction) and remain_idx[0] == _SchemaIdxEnum.Json:
                schema = cls.find_schema_in_json(operation.instance_update.json, remain_idx[1:])
                if schema:
                    return schema

        return None