ovh/pulumi-ovh

adding taints to nodepools results in panic

Opened this issue · 2 comments

This is my current nodepool. Uncommenting the taints spec I added yields an error.

const enum NodeType {
  GeneralPurpose = "generalPurpose",
  Small = "small",
  Medium = "medium",
  Huge = "huge",
}

const smallMemoryNodePools = new ovh.cloudproject.KubeNodePool(
  "ovh-nodepool-small",
  {
    serviceName: projectId,
    kubeId: cluster.id,
    desiredNodes: 1,
    flavorName: "r2-30", // Choose from https://www.ovhcloud.com/fr/public-cloud/prices/
    maxNodes: 3,
    minNodes: 1,
    autoscale: true,
    antiAffinity: false,
    monthlyBilled: false,

    template: {
      metadata: {
        annotations: {},
        finalizers: [],
        labels: {
          nodeType: NodeType.Small,
        },
      spec: {
		taints: [],
        // taints: [{
        //  key: "highMemory",
        //  value: "true",
        //  effect: "NoExecute",
        // }],
        unschedulable: false,
      },
    },
  },
  { provider: ovhProvider },
);

The error:

❯ pulumi up -t urn:pulumi:test-pulumi2::avatar-ovh::ovh:CloudProject/kubeNodePool:KubeNodePool::ovh-nodepool-small
Previewing update (test-pulumi2):
     Type                              Name                     Plan       Info
     pulumi:pulumi:Stack               avatar-ovh-test-pulumi2             1 error; 30 messages
 ~   └─ ovh:CloudProject:KubeNodePool  ovh-nodepool-small       update     [diff: ~template]; 1 error

Diagnostics:
  pulumi:pulumi:Stack (avatar-ovh-test-pulumi2):
    panic: fatal: A failure has occurred: Unexpected multiple elements in array with MaxItems=1
    goroutine 99 [running]:
    github.com/pulumi/pulumi/sdk/v3/go/common/util/contract.failfast(...)
    	/home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.81.0/go/common/util/contract/failfast.go:23
    github.com/pulumi/pulumi/sdk/v3/go/common/util/contract.Failf({0x14ce6c9?, 0xc000316000?}, {0x0?, 0x12b16a0?, 0x1463920?})
    	/home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.81.0/go/common/util/contract/fail.go:32 +0xcd
    github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge.MakeTerraformOutput.func1({0x16d24b8, 0xc000232180}, {0x140e720, 0xc000a80c40}, {0x16d36c0, 0xc000316000}, 0x0, 0xc000af5ef0, 0x0, 0x1)
    	/home/runner/go/pkg/mod/github.com/pulumi/pulumi-terraform-bridge/v3@v3.59.0/pkg/tfbridge/schema.go:1057 +0xb9e
    github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge.MakeTerraformOutput({0x16d24b8?, 0xc000232180?}, {0x140e720?, 0xc000a80c40?}, {0x16d36c0?, 0xc000316000?}, 0xc000af4e10?, 0xc0009bc000?, 0x20?, 0x1)
    	/home/runner/go/pkg/mod/github.com/pulumi/pulumi-terraform-bridge/v3@v3.59.0/pkg/tfbridge/schema.go:1085 +0x70
    github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge.MakeTerraformOutputs({0x16d24b8, 0xc000232180}, 0xc0003458f0?, {0x16c8b28, 0xc0003458f0}, 0x115c468?, 0x13f0bc0?, 0x0?, 0x48?)
    	/home/runner/go/pkg/mod/github.com/pulumi/pulumi-terraform-bridge/v3@v3.59.0/pkg/tfbridge/schema.go:958 +0x1a6
    github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge.MakeTerraformResult({0x16d24b8?, 0xc000232180?}, {0x16c5030, 0xc000a56cc0}, {0x16c8b28?, 0xc0003458f0?}, 0xc0003458f0?, 0x1f?, 0x10?)
    	/home/runner/go/pkg/mod/github.com/pulumi/pulumi-terraform-bridge/v3@v3.59.0/pkg/tfbridge/schema.go:933 +0xe5
    github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge.(*Provider).Update(0xc0001622c0, {0x16c4188?, 0xc000af4810?}, 0xc0003c6990)
    	/home/runner/go/pkg/mod/github.com/pulumi/pulumi-terraform-bridge/v3@v3.59.0/pkg/tfbridge/provider.go:983 +0xae5
    github.com/pulumi/pulumi/sdk/v3/proto/go._ResourceProvider_Update_Handler.func1({0x16c4188, 0xc000af4810}, {0x13f88e0?, 0xc0003c6990})
    	/home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.81.0/proto/go/provider_grpc.pb.go:609 +0x7b
    github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc.OpenTracingServerInterceptor.func1({0x16c4188, 0xc000a8de00}, {0x13f88e0, 0xc0003c6990}, 0xc000a7a940, 0xc000a4eaf8)
    	/home/runner/go/pkg/mod/github.com/grpc-ecosystem/grpc-opentracing@v0.0.0-20180507213350-8e809c8a8645/go/otgrpc/server.go:57 +0x3e8
    github.com/pulumi/pulumi/sdk/v3/proto/go._ResourceProvider_Update_Handler({0x144f680?, 0xc0001622c0}, {0x16c4188, 0xc000a8de00}, 0xc000199a40, 0xc000232d00)
    	/home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.81.0/proto/go/provider_grpc.pb.go:611 +0x138
    google.golang.org/grpc.(*Server).processUnaryRPC(0xc000446000, {0x16ce920, 0xc000552000}, 0xc000920b40, 0xc0003b4960, 0x2112cf0, 0x0)
    	/home/runner/go/pkg/mod/google.golang.org/grpc@v1.57.0/server.go:1360 +0xe23
    google.golang.org/grpc.(*Server).handleStream(0xc000446000, {0x16ce920, 0xc000552000}, 0xc000920b40, 0x0)
    	/home/runner/go/pkg/mod/google.golang.org/grpc@v1.57.0/server.go:1737 +0xa36
    google.golang.org/grpc.(*Server).serveStreams.func1.1()
    	/home/runner/go/pkg/mod/google.golang.org/grpc@v1.57.0/server.go:982 +0x98
    created by google.golang.org/grpc.(*Server).serveStreams.func1
    	/home/runner/go/pkg/mod/google.golang.org/grpc@v1.57.0/server.go:980 +0x18c

    error: preview failed

  ovh:CloudProject:KubeNodePool (ovh-nodepool-small):
    error: Preview failed: error reading from server: EOF

and the current state known to pulumi:

                {
                    "urn": "urn:pulumi:test-pulumi2::avatar-ovh::ovh:CloudProject/kubeNodePool:KubeNodePool::ovh-nodepool-small",
                    "custom": true,
                    "id": "7cb6b01e-01cf-4ac5-97b0-f5cb9a6c9ed8",
                    "type": "ovh:CloudProject/kubeNodePool:KubeNodePool",
                    "inputs": {
                        "__defaults": [
                            "name"
                        ],
                        "antiAffinity": false,
                        "autoscale": true,
                        "desiredNodes": 1,
                        "flavorName": "r2-30",
                        "kubeId": "7fd80973-ea87-4798-b199-5ffdb53e7974",
                        "maxNodes": 3,
                        "minNodes": 1,
                        "monthlyBilled": false,
                        "name": "ovh-nodepool-small-b905dfa",
                        "serviceName": "a40323b0eccb4606a325ef743c5dd17d",
                        "template": {
                            "__defaults": [],
                            "metadata": {
                                "__defaults": [],
                                "annotations": {
                                    "__defaults": []
                                },
                                "finalizers": [],
                                "labels": {
                                    "__defaults": [],
                                    "nodeType": "small"
                                }
                            },
                            "spec": {
                                "__defaults": [],
                                "taints": [],
                                "unschedulable": false
                            }
                        }
                    },
                    "outputs": {
                        "__meta": "{\"e2bfb730-ecaa-11e6-8f88-34363bc7c4c0\":{\"create\":1200000000000,\"default\":600000000000,\"delete\":600000000000,\"read\":300000000000,\"update\":600000000000}}",
                        "antiAffinity": false,
                        "autoscale": true,
                        "availableNodes": 1,
                        "createdAt": "2023-10-06T15:45:30Z",
                        "currentNodes": 1,
                        "desiredNodes": 1,
                        "flavor": "r2-30",
                        "flavorName": "r2-30",
                        "id": "7cb6b01e-01cf-4ac5-97b0-f5cb9a6c9ed8",
                        "kubeId": "7fd80973-ea87-4798-b199-5ffdb53e7974",
                        "maxNodes": 3,
                        "minNodes": 1,
                        "monthlyBilled": false,
                        "name": "ovh-small-nodepool-b905dfa",
                        "projectId": "a40323b0eccb4606a325ef743c5dd17d",
                        "serviceName": "a40323b0eccb4606a325ef743c5dd17d",
                        "sizeStatus": "CAPACITY_OK",
                        "status": "READY",
                        "template": {
                            "metadata": {
                                "annotations": {},
                                "finalizers": [],
                                "labels": {
                                    "nodeType": "small"
                                }
                            },
                            "spec": {
                                "taints": [],
                                "unschedulable": false
                            }
                        },
                        "upToDateNodes": 1,
                        "updatedAt": "2023-10-11T15:55:43Z"
                    },
                    "parent": "urn:pulumi:test-pulumi2::avatar-ovh::pulumi:pulumi:Stack::avatar-ovh-test-pulumi2",
                    "dependencies": [
                        "urn:pulumi:test-pulumi2::avatar-ovh::ovh:CloudProject/kube:Kube::test-pulumi2-app"
                    ],
                    "provider": "urn:pulumi:test-pulumi2::avatar-ovh::pulumi:providers:ovh::ovh-provider::05245939-c1d9-4bc8-ad0b-f9ce3c350d5a",
                    "propertyDependencies": {
                        "antiAffinity": null,
                        "autoscale": null,
                        "desiredNodes": null,
                        "flavorName": null,
                        "kubeId": [
                            "urn:pulumi:test-pulumi2::avatar-ovh::ovh:CloudProject/kube:Kube::test-pulumi2-app"
                        ],
                        "maxNodes": null,
                        "minNodes": null,
                        "monthlyBilled": null,
                        "serviceName": null,
                        "template": null
                    },
                    "created": "2023-10-06T15:50:03.05906Z",
                    "modified": "2023-10-11T15:55:43.476637361Z",
                    "sourcePosition": "project:///cluster.ts#57,30"
                },

Changing anything else makes the pulumi up preview work correctly.

dirien commented

Hey @tcrasset, thanks for reporting! I will have a look onto this!

Does it work on the latest version?