konveyor / move2kube-ui

An UI for interacting with Move2Kube API
https://move2kube.konveyor.io/
Apache License 2.0
11 stars 14 forks source link

bug: Inconsistent Planning Results Between Move2Kube UI and CLI #145

Closed mohamedawnallah closed 8 months ago

mohamedawnallah commented 1 year ago

Describe the bug The planning results obtained from Move2Kube UI and CLI for the same input are not matching, leading to inconsistent outputs.

To Reproduce Steps to reproduce the behavior:

  1. Execute this script as found in Move2Kube UI Tutorial:
    curl https://move2kube.konveyor.io/scripts/download.sh | bash -s -- -d samples/language-platforms -r move2kube-demos -z
  2. Go to the Move2Kube UI, add Workspace & project, and upload the language-platforms.zip file you downloaded previously
  3. Generate the plan
  4. You will get the following results:
    apiVersion: move2kube.konveyor.io/v1alpha1
    kind: Plan
    metadata:
    name: demo
    spec:
    sourceDir: sources
    services:
    language-platforms:
      - transformerName: Ruby-Dockerfile
        paths:
          ServiceDirectories:
            - language-platforms
        configs:
          OriginalName:
            originalName: language-platforms
    transformers:
    ArgoCD: m2kassets/built-in/transformers/kubernetes/argocd/transformer.yaml
    Buildconfig: m2kassets/built-in/transformers/kubernetes/buildconfig/transformer.yaml
    CloudFoundry: m2kassets/built-in/transformers/cloudfoundry/transformer.yaml
    ClusterSelector: m2kassets/built-in/transformers/kubernetes/clusterselector/transformer.yaml
    ComposeAnalyser: m2kassets/built-in/transformers/compose/composeanalyser/transformer.yaml
    ComposeGenerator: m2kassets/built-in/transformers/compose/composegenerator/transformer.yaml
    ContainerImagesPushScriptGenerator: m2kassets/built-in/transformers/containerimagespushscript/transformer.yaml
    DockerfileDetector: m2kassets/built-in/transformers/dockerfile/dockerfiledetector/transformer.yaml
    DockerfileImageBuildScript: m2kassets/built-in/transformers/dockerfile/dockerimagebuildscript/transformer.yaml
    DockerfileParser: m2kassets/built-in/transformers/dockerfile/dockerfileparser/transformer.yaml
    DotNetCore-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/dotnetcore/transformer.yaml
    EarAnalyser: m2kassets/built-in/transformers/dockerfilegenerator/java/earanalyser/transformer.yaml
    EarRouter: m2kassets/built-in/transformers/dockerfilegenerator/java/earrouter/transformer.yaml
    Golang-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/golang/transformer.yaml
    Gradle: m2kassets/built-in/transformers/dockerfilegenerator/java/gradle/transformer.yaml
    Jar: m2kassets/built-in/transformers/dockerfilegenerator/java/jar/transformer.yaml
    Jboss: m2kassets/built-in/transformers/dockerfilegenerator/java/jboss/transformer.yaml
    Knative: m2kassets/built-in/transformers/kubernetes/knative/transformer.yaml
    Kubernetes: m2kassets/built-in/transformers/kubernetes/kubernetes/transformer.yaml
    KubernetesVersionChanger: m2kassets/built-in/transformers/kubernetes/kubernetesversionchanger/transformer.yaml
    Liberty: m2kassets/built-in/transformers/dockerfilegenerator/java/liberty/transformer.yaml
    Maven: m2kassets/built-in/transformers/dockerfilegenerator/java/maven/transformer.yaml
    Nodejs-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/nodejs/transformer.yaml
    OperatorTransformer: m2kassets/built-in/transformers/kubernetes/operator/transformer.yaml
    PHP-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/php/transformer.yaml
    Parameterizer: m2kassets/built-in/transformers/kubernetes/parameterizer/transformer.yaml
    Python-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/python/transformer.yaml
    ReadMeGenerator: m2kassets/built-in/transformers/readmegenerator/transformer.yaml
    Ruby-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/ruby/transformer.yaml
    Rust-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/rust/transformer.yaml
    Tekton: m2kassets/built-in/transformers/kubernetes/tekton/transformer.yaml
    Tomcat: m2kassets/built-in/transformers/dockerfilegenerator/java/tomcat/transformer.yaml
    WarAnalyser: m2kassets/built-in/transformers/dockerfilegenerator/java/waranalyser/transformer.yaml
    WarRouter: m2kassets/built-in/transformers/dockerfilegenerator/java/warrouter/transformer.yaml
    WinWebApp-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/windows/winweb/transformer.yaml
    ZuulAnalyser: m2kassets/built-in/transformers/dockerfilegenerator/java/zuul/transformer.yaml
    disabledTransformers:
    WinConsoleApp-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/windows/winconsole/transformer.yaml
    WinSLWebApp-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/windows/winsilverlightweb/transformer.yaml
  5. Now we wanna get the planning result from the Move2Kube CLI to compare it with
  6. Unzip language-platforms.zip using the following command:
    unzip language-platforms.zip

    This will unzip language-platforms.zip and create a new directory called language-platforms

  7. Go to your favorite terminal and run the following command:
    move2kube plan -s language-platforms

    This will generate a m2k.plan file with the following content:

    apiVersion: move2kube.konveyor.io/v1alpha1
    kind: Plan
    metadata:
    name: myproject
    spec:
    sourceDir: language-platforms
    services:
    django:
      - transformerName: Python-Dockerfile
        paths:
          MainPythonFilesPathType:
            - django/manage.py
          PythonFilesPathType:
            - django/manage.py
          RequirementsTxtPathType:
            - django/requirements.txt
          ServiceDirectories:
            - django
        configs:
          OriginalName:
            originalName: django
          PythonConfig:
            IsDjango: true
    golang:
      - transformerName: Golang-Dockerfile
        paths:
          GoModFilePath:
            - golang/go.mod
          ServiceDirectories:
            - golang
        configs:
          OriginalName:
            originalName: golang
    java-gradle:
      - transformerName: Gradle
        paths:
          GradleBuildFile:
            - java-gradle/build.gradle
          GradleSettingsFile:
            - java-gradle/settings.gradle
          ServiceDirectories:
            - java-gradle
          ServiceRootDirectory:
            - java-gradle
        configs:
          Gradle:
            rootProjectName: java-gradle
            packagingType: war
            isGradlewPresent: true
            childModules:
              - name: java-gradle
                buildScriptPath: build.gradle
    java-maven:
      - transformerName: Maven
        paths:
          ServiceDirectories:
            - java-maven
          ServiceRootDirectory:
            - java-maven
          pomFiles:
            - java-maven/pom.xml
        configs:
          Maven:
            mavenAppName: java-maven
            packagingType: war
            isMvnwPresent: false
            childModules:
              - name: java-maven
                pomPath: pom.xml
    java-war:
      - transformerName: WarAnalyser
        paths:
          ServiceDirectories:
            - java-war
          War:
            - java-war/java-war.war
        configs:
          ImageName:
            imageName: java-war
          War:
            port: 0
            javaVersion: "17"
            buildContainerName: ""
            deploymentFilePath: java-war.war
            envVariables: {}
    nodejs:
      - transformerName: Nodejs-Dockerfile
        paths:
          ServiceDirectories:
            - nodejs
        configs:
          OriginalName:
            originalName: nodejs
    php:
      - transformerName: PHP-Dockerfile
        paths:
          ServiceDirectories:
            - php
        configs:
          OriginalName:
            originalName: php
    python:
      - transformerName: Python-Dockerfile
        paths:
          MainPythonFilesPathType:
            - python/main.py
          PythonFilesPathType:
            - python/main.py
          RequirementsTxtPathType:
            - python/requirements.txt
          ServiceDirectories:
            - python
        configs:
          OriginalName:
            originalName: python
          PythonConfig:
            IsDjango: false
    ruby:
      - transformerName: Ruby-Dockerfile
        paths:
          ServiceDirectories:
            - ruby
        configs:
          OriginalName:
            originalName: ruby
    rust:
      - transformerName: Rust-Dockerfile
        paths:
          ServiceDirectories:
            - rust
        configs:
          OriginalName:
            originalName: rust
    transformers:
    ArgoCD: m2kassets/built-in/transformers/kubernetes/argocd/transformer.yaml
    Buildconfig: m2kassets/built-in/transformers/kubernetes/buildconfig/transformer.yaml
    CloudFoundry: m2kassets/built-in/transformers/cloudfoundry/transformer.yaml
    ClusterSelector: m2kassets/built-in/transformers/kubernetes/clusterselector/transformer.yaml
    ComposeAnalyser: m2kassets/built-in/transformers/compose/composeanalyser/transformer.yaml
    ComposeGenerator: m2kassets/built-in/transformers/compose/composegenerator/transformer.yaml
    ContainerImagesPushScriptGenerator: m2kassets/built-in/transformers/containerimagespushscript/transformer.yaml
    DockerfileDetector: m2kassets/built-in/transformers/dockerfile/dockerfiledetector/transformer.yaml
    DockerfileImageBuildScript: m2kassets/built-in/transformers/dockerfile/dockerimagebuildscript/transformer.yaml
    DockerfileParser: m2kassets/built-in/transformers/dockerfile/dockerfileparser/transformer.yaml
    DotNetCore-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/dotnetcore/transformer.yaml
    EarAnalyser: m2kassets/built-in/transformers/dockerfilegenerator/java/earanalyser/transformer.yaml
    EarRouter: m2kassets/built-in/transformers/dockerfilegenerator/java/earrouter/transformer.yaml
    Golang-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/golang/transformer.yaml
    Gradle: m2kassets/built-in/transformers/dockerfilegenerator/java/gradle/transformer.yaml
    Jar: m2kassets/built-in/transformers/dockerfilegenerator/java/jar/transformer.yaml
    Jboss: m2kassets/built-in/transformers/dockerfilegenerator/java/jboss/transformer.yaml
    Knative: m2kassets/built-in/transformers/kubernetes/knative/transformer.yaml
    Kubernetes: m2kassets/built-in/transformers/kubernetes/kubernetes/transformer.yaml
    KubernetesVersionChanger: m2kassets/built-in/transformers/kubernetes/kubernetesversionchanger/transformer.yaml
    Liberty: m2kassets/built-in/transformers/dockerfilegenerator/java/liberty/transformer.yaml
    Maven: m2kassets/built-in/transformers/dockerfilegenerator/java/maven/transformer.yaml
    Nodejs-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/nodejs/transformer.yaml
    OperatorTransformer: m2kassets/built-in/transformers/kubernetes/operator/transformer.yaml
    PHP-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/php/transformer.yaml
    Parameterizer: m2kassets/built-in/transformers/kubernetes/parameterizer/transformer.yaml
    Python-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/python/transformer.yaml
    ReadMeGenerator: m2kassets/built-in/transformers/readmegenerator/transformer.yaml
    Ruby-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/ruby/transformer.yaml
    Rust-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/rust/transformer.yaml
    Tekton: m2kassets/built-in/transformers/kubernetes/tekton/transformer.yaml
    Tomcat: m2kassets/built-in/transformers/dockerfilegenerator/java/tomcat/transformer.yaml
    WarAnalyser: m2kassets/built-in/transformers/dockerfilegenerator/java/waranalyser/transformer.yaml
    WarRouter: m2kassets/built-in/transformers/dockerfilegenerator/java/warrouter/transformer.yaml
    WinWebApp-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/windows/winweb/transformer.yaml
    ZuulAnalyser: m2kassets/built-in/transformers/dockerfilegenerator/java/zuul/transformer.yaml
    disabledTransformers:
    WinConsoleApp-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/windows/winconsole/transformer.yaml
    WinSLWebApp-Dockerfile: m2kassets/built-in/transformers/dockerfilegenerator/windows/winsilverlightweb/transformer.yaml
  8. You notice that the correct results from the CLI but the result output for UI is inconsistent and wrong

Expected behavior The output of the planning files generated by the Move2Kube UI should match the results obtained from running the Move2Kube CLI for the same input.

Screenshots N/A

Desktop (please complete the following information):

Smartphone (please complete the following information): N/A

Additional context N/A