public Pod getPodTemplate()

in teamcity-kubernetes-plugin-server/src/main/java/jetbrains/buildServer/clouds/kubernetes/podSpec/SimpleRunContainerProvider.java [47:95]


  public Pod getPodTemplate(@NotNull String instanceName,
                            @NotNull CloudInstanceUserData cloudInstanceUserData,
                            @NotNull KubeCloudImage kubeCloudImage,
                            @NotNull KubeApiConnector apiConnector) {

    ImagePullPolicy imagePullPolicy = kubeCloudImage.getImagePullPolicy();
    String serverAddress = cloudInstanceUserData.getServerAddress();
    String serverUUID = myServerSettings.getServerUUID();
    String cloudProfileId = cloudInstanceUserData.getProfileId();

    ContainerBuilder containerBuilder = new ContainerBuilder()
      .withName(instanceName)
      .withImage(kubeCloudImage.getDockerImage())
      .withImagePullPolicy(imagePullPolicy == null ? ImagePullPolicy.IfNotPresent.getName() : imagePullPolicy.getName())
      .withEnv(new EnvVar(KubeContainerEnvironment.SERVER_URL, serverAddress, null),
               new EnvVar(KubeContainerEnvironment.SERVER_UUID, serverUUID, null),
               new EnvVar(KubeContainerEnvironment.OFFICIAL_IMAGE_SERVER_URL, serverAddress, null),
               new EnvVar(KubeContainerEnvironment.IMAGE_NAME, kubeCloudImage.getId(), null),
               new EnvVar(KubeContainerEnvironment.PROFILE_ID, cloudProfileId, null),
               new EnvVar(KubeContainerEnvironment.STARTING_INSTANCE_ID,
                          StringUtil.emptyIfNull(cloudInstanceUserData.getCustomAgentConfigurationParameters().get(KubeContainerEnvironment.STARTING_INSTANCE_ID_PARAM)), null),
               new EnvVar(KubeContainerEnvironment.INSTANCE_NAME, instanceName, null));


    containerBuilder.addAllToEnv(
      BuildAgentPodTemplateProvider.generateCustomAgentEnvVars(cloudInstanceUserData)
    );

    String dockerCommand = kubeCloudImage.getDockerCommand();
    if (!StringUtil.isEmpty(dockerCommand)) containerBuilder = containerBuilder.withCommand(dockerCommand);
    String dockerArguments = kubeCloudImage.getDockerArguments();
    if (!StringUtil.isEmpty(dockerArguments)) containerBuilder = containerBuilder.withArgs(dockerArguments);

    return new PodBuilder()
      .withNewMetadata()
      .withName(instanceName)
      .withNamespace(apiConnector.getNamespace())
      .withLabels(CollectionsUtil.asMap(
        KubeTeamCityLabels.TEAMCITY_AGENT_LABEL, "",
        KubeTeamCityLabels.TEAMCITY_SERVER_UUID, serverUUID,
        KubeTeamCityLabels.TEAMCITY_CLOUD_PROFILE, cloudProfileId,
        KubeTeamCityLabels.TEAMCITY_CLOUD_IMAGE, kubeCloudImage.getId()))
      .endMetadata()
      .withNewSpec()
      .withContainers(Collections.singletonList(containerBuilder.build()))
      .withRestartPolicy(KubeApiConnector.NEVER_RESTART_POLICY)
      .endSpec()
      .build();
  }