func()

in pkg/service/platform/k8s/k8s.go [159:189]


func (s *K8SService) GetDeploymentSSHPort(instance *gerritApi.Gerrit) (int32, error) {
	ctx := context.Background()

	d, err := s.appsV1Client.Deployments(instance.Namespace).Get(ctx, instance.Name, metaV1.GetOptions{})
	if err != nil {
		return 0, fmt.Errorf("failed to GET Deployment %q: %w", instance.Name, err)
	}

	for _, env := range d.Spec.Template.Spec.Containers[0].Env {
		if env.Name == spec.SSHListnerEnvName {
			re := regexp.MustCompile(`\d+`)
			if re.MatchString(env.Value) {
				ports := re.FindStringSubmatch(env.Value)
				if len(ports) != 1 {
					return 0, nil
				}

				port := ports[0]

				portNumber, err := strconv.ParseInt(port, Base, BitSize)
				if err != nil {
					return 0, fmt.Errorf("failed to parse port value %q: %w", port, err)
				}

				return int32(portNumber), nil
			}
		}
	}

	return 0, nil
}