Skip to content

Container contributions are not merged when there is a variable validation warning #1302

Open
@dkwon17

Description

@dkwon17

Description

When creating a workspace with this DevWorkspace:

DevWorkspace CR
kind: DevWorkspace
apiVersion: workspace.devfile.io/v1alpha2
metadata:
  name: code-latest
spec:
  started: true
  template:
    projects:
      - name: web-nodejs-sample
        git:
          remotes:
            origin: "https://github.com/che-samples/web-nodejs-sample.git"
    components:
      - name: dev
        container:
          image: quay.io/devfile/universal-developer-image:latest
          memoryLimit: 512Mi
          memoryRequest: 256Mi
          cpuRequest: 1000m
    commands:
      - id: 
  template:
    projects:
      - name: web-nodejs-sample
        git:
          remotes:
            origin: "https://github.com/che-samples/web-nodejs-sample.git"
    components:
      - name: dev
        container:
          image: quay.io/devfile/universal-developer-image:latest
          memoryLimit: 512Mi
          memoryRequest: 256Mi
          cpuRequest: 1000m
    commands:
      - id: say-hello
        exec:
          component: dev
          commandLine: echo "Hello {{test}} $(pwd)"
          workingDir: ${PROJECT_SOURCE}/app
  contributions:
    - name: che-code
      uri: https://eclipse-che.github.io/che-plugin-registry/main/v3/plugins/che-incubator/che-code/latest/devfile.yaml
      components:
        - name: che-code-runtime-description
          container:
            env:
              - name: CODE_HOST
                value: 0.0.0.0

the workspace starts and container contributions do not happen.

In the example above, there is a undeclared variable {{test}} in the say-hello command.

See usage of variables in devfile spec

How To Reproduce

  1. Create the DevWorkspace reference above
  2. When the workspace pod starts, verify that the che-code-runtime-description exists as it's own container in the pod:
    image

Expected behavior

Ideally, workspace start should fail with a descriptive error message in this case.

Additional context

It's happening if the global variable validation fails here:

warnings := variables.ValidateAndReplaceGlobalVariable(resolvedDW)
if len(warnings.Commands) > 0 || len(warnings.Components) > 0 || len(warnings.Projects) > 0 || len(warnings.StarterProjects) > 0 {
return resolvedDW, &warnings, nil
}

the function exits early without doing the container contributions and the workspace starts up without notifying the user.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions