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();
}