Skip to content

[BUG] Kompose Client can't create pods / cronjobs #1818

@realgam3

Description

@realgam3

Expected Behavior

  1. Default kubernetesController should be empty string ("")
  2. kubernetesController should validate empty kubernetesController as valid (just like the kompose cli)

Actual Behavior

The validation of kubernetesController (source code):

kubernetesController := kubernetesProvider.Controller
if *kubernetesController != string(DEPLOYMENT) && *kubernetesController != string(DAEMONSET) && *kubernetesController != string(REPLICATION_CONTROLLER) {
	return fmt.Errorf(
		"unexpected Value for Kubernetes Controller field. Possible values are: %v, %v, and %v", string(DEPLOYMENT), string(DAEMONSET), string(REPLICATION_CONTROLLER),
	)
}

The validation of pod/cronjob (source code):

func (opt *ConvertOptions) IsPodController() bool {
        // opt.IsDeploymentFlag = true, opt.Controller = "deployment"
	return opt.IsDeploymentFlag || opt.IsDaemonSetFlag || opt.IsReplicationControllerFlag || opt.Controller != ""
}

Steps To Reproduce

package main

import (
	"fmt"
	"github.com/kubernetes/kompose/client"
	"log"
	"os"
)

func main() {
	cli, err := client.NewClient(client.WithSuppressWarnings())
	if err != nil {
		log.Fatal("Could not create client")
	}

	annotations := false
	controller := ""
	res, err := cli.Convert(client.ConvertOptions{
		InputFiles: []string{"./docker-compose.yaml"},
		OutFile:    os.DevNull,
		//ToStdout:               false,
		ToStdout:               true,
		WithKomposeAnnotations: &annotations,
		Provider: client.Kubernetes{
			Chart:      false,
			Controller: &controller,
		},
	})
	if err != nil {
		log.Fatal("Could not convert")
	}
	fmt.Println(res[0])
}

Kompose Version

1.32.0

Docker-Compose file

version: '3'

services:
  challenge:
    image: busybox:stable-glibc
    labels:
      kompose.cronjob.schedule: "* * * * *"
      kompose.cronjob.concurrency_policy: "Forbid"
      kompose.cronjob.backoff_limit: "0"
    command:
      - "bash"
      - "-c"
      - "echo hello from cron"
    restart: "no"

Anything else?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/bugCategorizes issue or PR as related to a bug.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions