public V1Service appServiceConfig()

in src/main/java/com/epam/aidial/service/ConfigService.java [143:182]


    public V1Service appServiceConfig(
            String name,
            Map<String, String> env,
            @Nullable String image,
            @Nullable Integer initScale,
            @Nullable Integer minScale,
            @Nullable Integer maxScale) {
        MappingChain<V1Service> config = new MappingChain<>(this.appconfig.cloneServiceConfig());
        config.get(SERVICE_METADATA_FIELD)
                .data()
                .setName(appName(name));
        MappingChain<V1RevisionTemplateSpec> template = config.get(SERVICE_SPEC_FIELD)
                .get(SERVICE_TEMPLATE_FIELD);

        V1ObjectMeta templateMetadata = template.get(SERVICE_TEMPLATE_METADATA_FIELD)
                .data();
        if (initScale != null) {
            templateMetadata.putAnnotationsItem("autoscaling.knative.dev/initial-scale", String.valueOf(initScale));
        }
        if (minScale != null) {
            templateMetadata.putAnnotationsItem("autoscaling.knative.dev/min-scale", String.valueOf(minScale));
        }
        if (maxScale != null) {
            templateMetadata.putAnnotationsItem("autoscaling.knative.dev/max-scale", String.valueOf(maxScale));
        }

        MappingChain<V1Container> container = template
                .get(SERVICE_TEMPLATE_SPEC_FIELD)
                .getList(TEMPLATE_CONTAINERS_FIELD, CONTAINER_NAME)
                .getOrDefault(appconfig.getServiceContainer().getName(), appconfig::cloneServiceContainer);

        container.data()
                .setImage(Objects.requireNonNullElse(image, registryService.fullImageName(name)));
        ListMapper<V1EnvVar> containerEnv = container.getList(CONTAINER_ENV_FIELD, ENV_VAR_NAME);

        env.forEach((key, value) -> containerEnv.get(key)
                .data()
                .setValue(value));
        return config.data();
    }