pulumi / pulumi-terraform-bridge

A library allowing Terraform providers to be bridged into Pulumi.
Apache License 2.0
192 stars 45 forks source link

Error with Scaleway Provider in Pulumi: UNKNOWN:Error received from peer #2257

Closed Med-hedi-bra closed 1 month ago

Med-hedi-bra commented 1 month ago

Error with Scaleway Provider in Pulumi

I’m experiencing an issue when using the Scaleway provider in Pulumi. The stack.up() function executes and creates resources on Scaleway, but I receive an error and the return value, which includes the IP address, is not being returned correctly.

 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (0s)
@ updating.....
 +  scaleway:index:InstanceIp publicIp creating (0s)
@ updating....
 +  scaleway:index:InstanceIp publicIp created (1s)
 +  scaleway:index:InstanceServer test3-inov-y6678o creating (0s)
@ updating.....................
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s) panic: runtime error: invalid memory address or nil pointer dereference
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s) [signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x12c4e37]
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s) goroutine 64 [running]:
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s) github.com/scaleway/terraform-provider-scaleway/v2/scaleway.resourceScalewayInstanceServerRead({0x1ac09f0, 0xc000d1c420}, 0xc000ac4d00, {0x13f1420, 0xc000b73f70})
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s)  /home/runner/go/pkg/mod/github.com/scaleway/terraform-provider-scaleway/v2@v2.10.0/scaleway/resource_instance_server.go:532 +0x4f7
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s) github.com/scaleway/terraform-provider-scaleway/v2/scaleway.resourceScalewayInstanceServerCreate({0x1ac09f0, 0xc000d1c420}, 0x7fc230765108?, {0x13f1420?, 0xc000b73f70?})
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s)  /home/runner/go/pkg/mod/github.com/scaleway/terraform-provider-scaleway/v2@v2.10.0/scaleway/resource_instance_server.go:500 +0x2225
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s) github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).create(0xc000162a80, {0x1ac09b8, 0xc000046108}, 0xd?, {0x13f1420, 0xc000b73f70})
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s)  /home/runner/go/pkg/mod/github.com/pulumi/terraform-plugin-sdk/v2@v2.0.0-20220824175045-450992f2f5b9/helper/schema/resource.go:712 +0x12e
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s) github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).Apply(0xc000162a80, {0x1ac09b8, 0xc000046108}, 0x0, 0xc000ac4b80, {0x13f1420, 0xc000b73f70})
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s)  /home/runner/go/pkg/mod/github.com/pulumi/terraform-plugin-sdk/v2@v2.0.0-20220824175045-450992f2f5b9/helper/schema/resource.go:842 +0xa85
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s) github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfshim/sdk-v2.v2Provider.Apply({0x167df3b?}, {0x169af5c, 0x18}, {0x0?, 0x0}, {0x1ac7558?, 0xc000ac4b80})
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s)  /home/runner/go/pkg/mod/github.com/pulumi/pulumi-terraform-bridge/v3@v3.40.0/pkg/tfshim/sdk-v2/provider.go:122 +0x19b
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s) github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge.(*Provider).Create(0xc00055ef00, {0x1ac0a28?, 0xc000d0d560?}, 0xc00093f400)
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s)  /home/runner/go/pkg/mod/github.com/pulumi/pulumi-terraform-bridge/v3@v3.40.0/pkg/tfbridge/provider.go:895 +0x643
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s) github.com/pulumi/pulumi/sdk/v3/proto/go._ResourceProvider_Create_Handler.func1({0x1ac0a28, 0xc000d0d560}, {0x15b9f20?, 0xc00093f400})
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s)  /home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.55.0/proto/go/provider_grpc.pb.go:573 +0x78
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s) github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc.OpenTracingServerInterceptor.func1({0x1ac0a28, 0xc000d0d440}, {0x15b9f20, 0xc00093f400}, 0xc000341620, 0xc000d10888)
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s)  /home/runner/go/pkg/mod/github.com/grpc-ecosystem/grpc-opentracing@v0.0.0-20180507213350-8e809c8a8645/go/otgrpc/server.go:57 +0x3f9
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s) github.com/pulumi/pulumi/sdk/v3/proto/go._ResourceProvider_Create_Handler({0x1645480?, 0xc00055ef00}, {0x1ac0a28, 0xc000d0d440}, 0xc0006fa1c0, 0xc000403680)
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s)  /home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.55.0/proto/go/provider_grpc.pb.go:575 +0x138
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s) google.golang.org/grpc.(*Server).processUnaryRPC(0xc0006c41e0, {0x1ac79e0, 0xc00039e1a0}, 0xc0001647e0, 0xc0008300f0, 0x2612000, 0x0)
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s)  /home/runner/go/pkg/mod/google.golang.org/grpc@v1.51.0/server.go:1340 +0xd23
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s) google.golang.org/grpc.(*Server).handleStream(0xc0006c41e0, {0x1ac79e0, 0xc00039e1a0}, 0xc0001647e0, 0x0)
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s)  /home/runner/go/pkg/mod/google.golang.org/grpc@v1.51.0/server.go:1713 +0xa2f
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s) google.golang.org/grpc.(*Server).serveStreams.func1.2()
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s)  /home/runner/go/pkg/mod/google.golang.org/grpc@v1.51.0/server.go:965 +0x98
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s) created by google.golang.org/grpc.(*Server).serveStreams.func1
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (20s)  /home/runner/go/pkg/mod/google.golang.org/grpc@v1.51.0/server.go:963 +0x28a
 +  scaleway:index:InstanceServer test3-inov-y6678o creating (17s) error: error reading from server: EOF
 +  scaleway:index:InstanceServer test3-inov-y6678o **creating failed** error: error reading from server: EOF
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o creating (21s) error: update failed
 +  pulumi:pulumi:Stack inovdrop-back-test3-inov-y6678o **creating failed** 1 error; 29 messages

debug_error_string = "UNKNOWN:Error received from peer  {created_time:"2024-07-26T09:54:26.374087936+00:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:41563: Failed to connect to remote host: Connection refused"}"
Diagnostics:
  scaleway:index:InstanceServer (test3-inov-y6678o):
    error: error reading from server: EOF

  pulumi:pulumi:Stack (inovdrop-back-test3-inov-y6678o):
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x12c4e37]
    goroutine 64 [running]:
    github.com/scaleway/terraform-provider-scaleway/v2/scaleway.resourceScalewayInstanceServerRead({0x1ac09f0, 0xc000d1c420}, 0xc000ac4d00, {0x13f1420, 0xc000b73f70})
        /home/runner/go/pkg/mod/github.com/scaleway/terraform-provider-scaleway/v2@v2.10.0/scaleway/resource_instance_server.go:532 +0x4f7
    github.com/scaleway/terraform-provider-scaleway/v2/scaleway.resourceScalewayInstanceServerCreate({0x1ac09f0, 0xc000d1c420}, 0x7fc230765108?, {0x13f1420?, 0xc000b73f70?})
        /home/runner/go/pkg/mod/github.com/scaleway/terraform-provider-scaleway/v2@v2.10.0/scaleway/resource_instance_server.go:500 +0x2225
    github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).create(0xc000162a80, {0x1ac09b8, 0xc000046108}, 0xd?, {0x13f1420, 0xc000b73f70})
        /home/runner/go/pkg/mod/github.com/pulumi/terraform-plugin-sdk/v2@v2.0.0-20220824175045-450992f2f5b9/helper/schema/resource.go:712 +0x12e
    github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).Apply(0xc000162a80, {0x1ac09b8, 0xc000046108}, 0x0, 0xc000ac4b80, {0x13f1420, 0xc000b73f70})
        /home/runner/go/pkg/mod/github.com/pulumi/terraform-plugin-sdk/v2@v2.0.0-20220824175045-450992f2f5b9/helper/schema/resource.go:842 +0xa85
    github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfshim/sdk-v2.v2Provider.Apply({0x167df3b?}, {0x169af5c, 0x18}, {0x0?, 0x0}, {0x1ac7558?, 0xc000ac4b80})
        /home/runner/go/pkg/mod/github.com/pulumi/pulumi-terraform-bridge/v3@v3.40.0/pkg/tfshim/sdk-v2/provider.go:122 +0x19b
    github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge.(*Provider).Create(0xc00055ef00, {0x1ac0a28?, 0xc000d0d560?}, 0xc00093f400)
        /home/runner/go/pkg/mod/github.com/pulumi/pulumi-terraform-bridge/v3@v3.40.0/pkg/tfbridge/provider.go:895 +0x643
    github.com/pulumi/pulumi/sdk/v3/proto/go._ResourceProvider_Create_Handler.func1({0x1ac0a28, 0xc000d0d560}, {0x15b9f20?, 0xc00093f400})
        /home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.55.0/proto/go/provider_grpc.pb.go:573 +0x78
    github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc.OpenTracingServerInterceptor.func1({0x1ac0a28, 0xc000d0d440}, {0x15b9f20, 0xc00093f400}, 0xc000341620, 0xc000d10888)
        /home/runner/go/pkg/mod/github.com/grpc-ecosystem/grpc-opentracing@v0.0.0-20180507213350-8e809c8a8645/go/otgrpc/server.go:57 +0x3f9
    github.com/pulumi/pulumi/sdk/v3/proto/go._ResourceProvider_Create_Handler({0x1645480?, 0xc00055ef00}, {0x1ac0a28, 0xc000d0d440}, 0xc0006fa1c0, 0xc000403680)
        /home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.55.0/proto/go/provider_grpc.pb.go:575 +0x138
    google.golang.org/grpc.(*Server).processUnaryRPC(0xc0006c41e0, {0x1ac79e0, 0xc00039e1a0}, 0xc0001647e0, 0xc0008300f0, 0x2612000, 0x0)
        /home/runner/go/pkg/mod/google.golang.org/grpc@v1.51.0/server.go:1340 +0xd23
    google.golang.org/grpc.(*Server).handleStream(0xc0006c41e0, {0x1ac79e0, 0xc00039e1a0}, 0xc0001647e0, 0x0)
        /home/runner/go/pkg/mod/google.golang.org/grpc@v1.51.0/server.go:1713 +0xa2f
    google.golang.org/grpc.(*Server).serveStreams.func1.2()
        /home/runner/go/pkg/mod/google.golang.org/grpc@v1.51.0/server.go:965 +0x98
    created by google.golang.org/grpc.(*Server).serveStreams.func1
        /home/runner/go/pkg/mod/google.golang.org/grpc@v1.51.0/server.go:963 +0x28a

    error: update failed

Resources:
    + 2 created

Expected Behavior The resources should be created, and the IP address should be returned without errors.

Actual Behavior The resources are created, but an error occurs, and the IP address is not returned correctly.

Example

Output of pulumi about

CLI
Version 3.126.0 Go Version go1.22.5 Go Compiler gc

Plugins KIND NAME VERSION

Host
OS debian Version 11.10 Arch x86_64

Dependencies: NAME VERSION pip 22.0.4 setuptools 71.1.0 wheel 0.43.0

Frassle commented 1 month ago

This is either a bridge bug or a bug in the scaleway provider. I'll move this to the bridge repo for them to have a quick check if it looks like a bridge bug.

idrissneumann commented 1 month ago

Same issue here using the last package (we just upgrade from 1.7.0 to 1.14.0 to check if the issue remains and unfortunately it's still the case). In our requirements.txt:

pulumiverse-scaleway==1.14.0

The code:

import pulumiverse_scaleway as scaleway

def create_instance(self, instance_id, ami_image, hashed_instance_name, environment, instance_region, instance_zone, instance_type, generate_dns, root_dns_zone):
        def create_pulumi_program():
            region_zone = "{}-{}".format(instance_region, instance_zone)
            instance_ip = scaleway.InstanceIp("publicIp", zone = region_zone)
            new_instance = scaleway.InstanceServer(hashed_instance_name,
                                    type = instance_type,
                                    image = ami_image,
                                    name = hashed_instance_name,
                                    ip_id = instance_ip.id,
                                    zone = region_zone,
                                    user_data = {
                                        "cloud-init": (lambda path: open(path).read())(self.cloud_init_script())
                                    })

            if is_true(generate_dns):
                dns_driver = get_dns_zone_driver(root_dns_zone)
                ProviderDriverModule = importlib.import_module('drivers.{}'.format(dns_driver))
                ProviderDriver = getattr(ProviderDriverModule, dns_driver)
                ProviderDriver().create_dns_records(hashed_instance_name, environment, new_instance.public_ip, root_dns_zone)
            pulumi.export("public_ip", new_instance.public_ip)

        scw_access_key = os.getenv('SCW_ACCESS_KEY')
        scw_secret_key = os.getenv('SCW_SECRET_KEY')
        scw_project_id = os.getenv('SCW_PROJECT_ID')
        cloudflare_api_token = os.getenv('CLOUDFLARE_API_TOKEN')

        stack = auto.create_or_select_stack(stack_name = hashed_instance_name,
                                            project_name = sanitize_project_name(environment['path']),
                                            program = create_pulumi_program)
        stack.set_config("scaleway:access_key", auto.ConfigValue(scw_access_key))
        stack.set_config("scaleway:secret_key", auto.ConfigValue(scw_secret_key))
        stack.set_config("scaleway:project_id", auto.ConfigValue(scw_project_id))
        if is_not_empty(cloudflare_api_token):
            stack.set_config("cloudflare:api_token", auto.ConfigValue(cloudflare_api_token))
        up_res = stack.up()

        return {
            "ip": up_res.outputs.get("public_ip").value
        }

The public ip is not returned anymore (this code is running since almost two years now). The error in the logs:

ERROR:grpc._server:Exception calling application: <_InactiveRpcError of RPC that terminated with:
    status = StatusCode.UNAVAILABLE
    details = "failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:41035: Failed to connect to remote host: Connection refused"
    debug_error_string = "UNKNOWN:Error received from peer  {created_time:"2024-07-29T08:19:23.184324972+00:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:41035: Failed to connect to remote host: Connection refused"}"
>
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/pulumi/automation/_server.py", line 80, in run
    loop.run_until_complete(run_in_stack(self.program))
  File "/usr/local/lib/python3.9/asyncio/base_events.py", line 647, in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.9/site-packages/pulumi/runtime/stack.py", line 138, in run_in_stack
    await run_pulumi_func(run)
  File "/usr/local/lib/python3.9/site-packages/pulumi/runtime/stack.py", line 52, in run_pulumi_func
    await wait_for_rpcs()
  File "/usr/local/lib/python3.9/site-packages/pulumi/runtime/stack.py", line 100, in wait_for_rpcs
    log.debug(
  File "/usr/local/lib/python3.9/site-packages/pulumi/log.py", line 45, in debug
    _log(engine, engine_pb2.DEBUG, msg, resource, stream_id, ephemeral)
  File "/usr/local/lib/python3.9/site-packages/pulumi/log.py", line 144, in _log
    engine.Log(req)
  File "/usr/local/lib/python3.9/site-packages/grpc/_channel.py", line 1160, in __call__
    return _end_unary_response_blocking(state, call, False, None)
  File "/usr/local/lib/python3.9/site-packages/grpc/_channel.py", line 1003, in _end_unary_response_blocking
    raise _InactiveRpcError(state)  # pytype: disable=not-instantiable
grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
    status = StatusCode.UNAVAILABLE
    details = "failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:41035: Failed to connect to remote host: Connection refused"
    debug_error_string = "UNKNOWN:Error received from peer  {created_time:"2024-07-29T08:19:23.183446819+00:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:41035: Failed to connect to remote host: Connection refused"}"
>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/pulumi/automation/_server.py", line 91, in run
    log.debug("Resource monitor has terminated, shutting down.")
  File "/usr/local/lib/python3.9/site-packages/pulumi/log.py", line 45, in debug
    _log(engine, engine_pb2.DEBUG, msg, resource, stream_id, ephemeral)
  File "/usr/local/lib/python3.9/site-packages/pulumi/log.py", line 144, in _log
    engine.Log(req)
  File "/usr/local/lib/python3.9/site-packages/grpc/_channel.py", line 1160, in __call__
    return _end_unary_response_blocking(state, call, False, None)
  File "/usr/local/lib/python3.9/site-packages/grpc/_channel.py", line 1003, in _end_unary_response_blocking
    raise _InactiveRpcError(state)  # pytype: disable=not-instantiable
grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
    status = StatusCode.UNAVAILABLE
    details = "failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:41035: Failed to connect to remote host: Connection refused"
    debug_error_string = "UNKNOWN:Error received from peer  {grpc_message:"failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:41035: Failed to connect to remote host: Connection refused", grpc_status:14, created_time:"2024-07-29T08:19:23.183896131+00:00"}"
>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/grpc/_server.py", line 555, in _call_behavior
    response_or_iterator = behavior(argument, context)
  File "/usr/local/lib/python3.9/site-packages/pulumi/automation/_server.py", line 125, in Run
    return ctx.run(run)
  File "/usr/local/lib/python3.9/site-packages/pulumi/automation/_server.py", line 113, in run
    log.debug(f"Cancelling {len(pending)} tasks.")
  File "/usr/local/lib/python3.9/site-packages/pulumi/log.py", line 45, in debug
    _log(engine, engine_pb2.DEBUG, msg, resource, stream_id, ephemeral)
  File "/usr/local/lib/python3.9/site-packages/pulumi/log.py", line 144, in _log
    engine.Log(req)
  File "/usr/local/lib/python3.9/site-packages/grpc/_channel.py", line 1160, in __call__
    return _end_unary_response_blocking(state, call, False, None)
  File "/usr/local/lib/python3.9/site-packages/grpc/_channel.py", line 1003, in _end_unary_response_blocking
    raise _InactiveRpcError(state)  # pytype: disable=not-instantiable
grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
    status = StatusCode.UNAVAILABLE
    details = "failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:41035: Failed to connect to remote host: Connection refused"
    debug_error_string = "UNKNOWN:Error received from peer  {created_time:"2024-07-29T08:19:23.184324972+00:00", grpc_status:14, grpc_message:"failed to connect to all addresses; last error: UNKNOWN: ipv4:127.0.0.1:41035: Failed to connect to remote host: Connection refused"}"
>
2024-07-29 08:19:24,217 INFO sqlalchemy.engine.Engine ROLLBACK
INFO:sqlalchemy.engine.Engine:ROLLBACK
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/uvicorn/protocols/http/h11_impl.py", line 428, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
  File "/usr/local/lib/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
    return await self.app(scope, receive, send)
  File "/usr/local/lib/python3.9/site-packages/fastapi/applications.py", line 276, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.9/site-packages/starlette/applications.py", line 122, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.9/site-packages/starlette/middleware/errors.py", line 184, in __call__
    raise exc
  File "/usr/local/lib/python3.9/site-packages/starlette/middleware/errors.py", line 162, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.9/site-packages/prometheus_fastapi_instrumentator/middleware.py", line 169, in __call__
    raise exc
  File "/usr/local/lib/python3.9/site-packages/prometheus_fastapi_instrumentator/middleware.py", line 167, in __call__
    await self.app(scope, receive, send_wrapper)
  File "/usr/local/lib/python3.9/site-packages/asgi_correlation_id/middleware.py", line 90, in __call__
    await self.app(scope, receive, handle_outgoing_request)
  File "/usr/local/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
    raise exc
  File "/usr/local/lib/python3.9/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
    await self.app(scope, receive, sender)
  File "/usr/local/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
    raise e
  File "/usr/local/lib/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 718, in __call__
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 276, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.9/site-packages/starlette/routing.py", line 69, in app
    await response(scope, receive, send)
  File "/usr/local/lib/python3.9/site-packages/starlette/responses.py", line 174, in __call__
    await self.background()
  File "/usr/local/lib/python3.9/site-packages/starlette/background.py", line 43, in __call__
    await task()
  File "/usr/local/lib/python3.9/site-packages/starlette/background.py", line 28, in __call__
    await run_in_threadpool(self.func, *self.args, **self.kwargs)
  File "/usr/local/lib/python3.9/site-packages/starlette/concurrency.py", line 41, in run_in_threadpool
    return await anyio.to_thread.run_sync(func, *args)
  File "/usr/local/lib/python3.9/site-packages/anyio/to_thread.py", line 56, in run_sync
    return await get_async_backend().run_sync_in_worker_thread(
  File "/usr/local/lib/python3.9/site-packages/anyio/_backends/_asyncio.py", line 2177, in run_sync_in_worker_thread
    return await future
  File "/usr/local/lib/python3.9/site-packages/anyio/_backends/_asyncio.py", line 859, in run
    result = context.run(func, *args)
  File "/app/src/utils/instance.py", line 103, in create_instance
    result = ProviderDriver().create_instance(instance_id, ami_image, hashed_instance_name, environment, instance_region, instance_zone, instance_type, generate_dns, root_dns_zone)
  File "/app/src/drivers/ScalewayDriver.py", line 129, in create_instance
    up_res = stack.up()
  File "/usr/local/lib/python3.9/site-packages/pulumi/automation/_stack.py", line 314, in up
    up_result = self._run_pulumi_cmd_sync(args, on_output)
  File "/usr/local/lib/python3.9/site-packages/pulumi/automation/_stack.py", line 839, in _run_pulumi_cmd_sync
    result = self.workspace.pulumi_command.run(
  File "/usr/local/lib/python3.9/site-packages/pulumi/automation/_cmd.py", line 238, in run
    raise create_command_error(result)
pulumi.automation.errors.RuntimeError:
 code: 255
 stdout: Updating (dddd-zvngvz):

 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (0s)
@ updating......
 +  scaleway:index:InstanceIp publicIp creating (0s)
@ updating....
 +  scaleway:index:InstanceIp publicIp created (1s)
@ updating....
 +  scaleway:index:InstanceServer dddd-zvngvz creating (0s)
@ updating.........................................
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s) panic: runtime error: invalid memory address or nil pointer dereference
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s) [signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x12c4e37]
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s) goroutine 81 [running]:
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s) github.com/scaleway/terraform-provider-scaleway/v2/scaleway.resourceScalewayInstanceServerRead({0x1ac09f0, 0xc000adf980}, 0xc000c7e580, {0x13f1420, 0xc000c637e0})
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s)  /home/runner/go/pkg/mod/github.com/scaleway/terraform-provider-scaleway/v2@v2.10.0/scaleway/resource_instance_server.go:532 +0x4f7
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s) github.com/scaleway/terraform-provider-scaleway/v2/scaleway.resourceScalewayInstanceServerCreate({0x1ac09f0, 0xc000adf980}, 0x7faedbc39108?, {0x13f1420?, 0xc000c637e0?})
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s)  /home/runner/go/pkg/mod/github.com/scaleway/terraform-provider-scaleway/v2@v2.10.0/scaleway/resource_instance_server.go:500 +0x2225
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s) github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).create(0xc000754a80, {0x1ac09b8, 0xc000146008}, 0xd?, {0x13f1420, 0xc000c637e0})
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s)  /home/runner/go/pkg/mod/github.com/pulumi/terraform-plugin-sdk/v2@v2.0.0-20220824175045-450992f2f5b9/helper/schema/resource.go:712 +0x12e
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s) github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).Apply(0xc000754a80, {0x1ac09b8, 0xc000146008}, 0x0, 0xc000c7e400, {0x13f1420, 0xc000c637e0})
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s)  /home/runner/go/pkg/mod/github.com/pulumi/terraform-plugin-sdk/v2@v2.0.0-20220824175045-450992f2f5b9/helper/schema/resource.go:842 +0xa85
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s) github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfshim/sdk-v2.v2Provider.Apply({0x167df3b?}, {0x169af5c, 0x18}, {0x0?, 0x0}, {0x1ac7558?, 0xc000c7e400})
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s)  /home/runner/go/pkg/mod/github.com/pulumi/pulumi-terraform-bridge/v3@v3.40.0/pkg/tfshim/sdk-v2/provider.go:122 +0x19b
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s) github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge.(*Provider).Create(0xc0002e2000, {0x1ac0a28?, 0xc000d4c1b0?}, 0xc000adcb40)
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s)  /home/runner/go/pkg/mod/github.com/pulumi/pulumi-terraform-bridge/v3@v3.40.0/pkg/tfbridge/provider.go:895 +0x643
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s) github.com/pulumi/pulumi/sdk/v3/proto/go._ResourceProvider_Create_Handler.func1({0x1ac0a28, 0xc000d4c1b0}, {0x15b9f20?, 0xc000adcb40})
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s)  /home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.55.0/proto/go/provider_grpc.pb.go:573 +0x78
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s) github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc.OpenTracingServerInterceptor.func1({0x1ac0a28, 0xc000d4c090}, {0x15b9f20, 0xc000adcb40}, 0xc0003d07e0, 0xc000ab7d88)
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s)  /home/runner/go/pkg/mod/github.com/grpc-ecosystem/grpc-opentracing@v0.0.0-20180507213350-8e809c8a8645/go/otgrpc/server.go:57 +0x3f9
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s) github.com/pulumi/pulumi/sdk/v3/proto/go._ResourceProvider_Create_Handler({0x1645480?, 0xc0002e2000}, {0x1ac0a28, 0xc000d4c090}, 0xc0003eb3b0, 0xc0002bc040)
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s)  /home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.55.0/proto/go/provider_grpc.pb.go:575 +0x138
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s) google.golang.org/grpc.(*Server).processUnaryRPC(0xc0002de000, {0x1ac79e0, 0xc000540680}, 0xc000d405a0, 0xc0002c83f0, 0x2612000, 0x0)
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s)  /home/runner/go/pkg/mod/google.golang.org/grpc@v1.51.0/server.go:1340 +0xd23
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s) google.golang.org/grpc.(*Server).handleStream(0xc0002de000, {0x1ac79e0, 0xc000540680}, 0xc000d405a0, 0x0)
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s)  /home/runner/go/pkg/mod/google.golang.org/grpc@v1.51.0/server.go:1713 +0xa2f
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s) google.golang.org/grpc.(*Server).serveStreams.func1.2()
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s)  /home/runner/go/pkg/mod/google.golang.org/grpc@v1.51.0/server.go:965 +0x98
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s) created by google.golang.org/grpc.(*Server).serveStreams.func1
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (42s)  /home/runner/go/pkg/mod/google.golang.org/grpc@v1.51.0/server.go:963 +0x28a
 +  scaleway:index:InstanceServer dddd-zvngvz creating (37s) error: error reading from server: EOF
 +  scaleway:index:InstanceServer dddd-zvngvz **creating failed** error: error reading from server: EOF
@ updating..........
 +  pulumi:pulumi:Stack vps-dddd-zvngvz creating (49s) error: update failed
 +  pulumi:pulumi:Stack vps-dddd-zvngvz **creating failed** 1 error; 29 messages
Diagnostics:
  pulumi:pulumi:Stack (vps-dddd-zvngvz):
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x12c4e37]
    goroutine 81 [running]:
    github.com/scaleway/terraform-provider-scaleway/v2/scaleway.resourceScalewayInstanceServerRead({0x1ac09f0, 0xc000adf980}, 0xc000c7e580, {0x13f1420, 0xc000c637e0})
        /home/runner/go/pkg/mod/github.com/scaleway/terraform-provider-scaleway/v2@v2.10.0/scaleway/resource_instance_server.go:532 +0x4f7
    github.com/scaleway/terraform-provider-scaleway/v2/scaleway.resourceScalewayInstanceServerCreate({0x1ac09f0, 0xc000adf980}, 0x7faedbc39108?, {0x13f1420?, 0xc000c637e0?})
        /home/runner/go/pkg/mod/github.com/scaleway/terraform-provider-scaleway/v2@v2.10.0/scaleway/resource_instance_server.go:500 +0x2225
    github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).create(0xc000754a80, {0x1ac09b8, 0xc000146008}, 0xd?, {0x13f1420, 0xc000c637e0})
        /home/runner/go/pkg/mod/github.com/pulumi/terraform-plugin-sdk/v2@v2.0.0-20220824175045-450992f2f5b9/helper/schema/resource.go:712 +0x12e
    github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).Apply(0xc000754a80, {0x1ac09b8, 0xc000146008}, 0x0, 0xc000c7e400, {0x13f1420, 0xc000c637e0})
        /home/runner/go/pkg/mod/github.com/pulumi/terraform-plugin-sdk/v2@v2.0.0-20220824175045-450992f2f5b9/helper/schema/resource.go:842 +0xa85
    github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfshim/sdk-v2.v2Provider.Apply({0x167df3b?}, {0x169af5c, 0x18}, {0x0?, 0x0}, {0x1ac7558?, 0xc000c7e400})
        /home/runner/go/pkg/mod/github.com/pulumi/pulumi-terraform-bridge/v3@v3.40.0/pkg/tfshim/sdk-v2/provider.go:122 +0x19b
    github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge.(*Provider).Create(0xc0002e2000, {0x1ac0a28?, 0xc000d4c1b0?}, 0xc000adcb40)
        /home/runner/go/pkg/mod/github.com/pulumi/pulumi-terraform-bridge/v3@v3.40.0/pkg/tfbridge/provider.go:895 +0x643
    github.com/pulumi/pulumi/sdk/v3/proto/go._ResourceProvider_Create_Handler.func1({0x1ac0a28, 0xc000d4c1b0}, {0x15b9f20?, 0xc000adcb40})
        /home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.55.0/proto/go/provider_grpc.pb.go:573 +0x78
    github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc.OpenTracingServerInterceptor.func1({0x1ac0a28, 0xc000d4c090}, {0x15b9f20, 0xc000adcb40}, 0xc0003d07e0, 0xc000ab7d88)
        /home/runner/go/pkg/mod/github.com/grpc-ecosystem/grpc-opentracing@v0.0.0-20180507213350-8e809c8a8645/go/otgrpc/server.go:57 +0x3f9
    github.com/pulumi/pulumi/sdk/v3/proto/go._ResourceProvider_Create_Handler({0x1645480?, 0xc0002e2000}, {0x1ac0a28, 0xc000d4c090}, 0xc0003eb3b0, 0xc0002bc040)
        /home/runner/go/pkg/mod/github.com/pulumi/pulumi/sdk/v3@v3.55.0/proto/go/provider_grpc.pb.go:575 +0x138
    google.golang.org/grpc.(*Server).processUnaryRPC(0xc0002de000, {0x1ac79e0, 0xc000540680}, 0xc000d405a0, 0xc0002c83f0, 0x2612000, 0x0)
        /home/runner/go/pkg/mod/google.golang.org/grpc@v1.51.0/server.go:1340 +0xd23
    google.golang.org/grpc.(*Server).handleStream(0xc0002de000, {0x1ac79e0, 0xc000540680}, 0xc000d405a0, 0x0)
        /home/runner/go/pkg/mod/google.golang.org/grpc@v1.51.0/server.go:1713 +0xa2f
    google.golang.org/grpc.(*Server).serveStreams.func1.2()
        /home/runner/go/pkg/mod/google.golang.org/grpc@v1.51.0/server.go:965 +0x98
    created by google.golang.org/grpc.(*Server).serveStreams.func1
        /home/runner/go/pkg/mod/google.golang.org/grpc@v1.51.0/server.go:963 +0x28a

    error: update failed

  scaleway:index:InstanceServer (dddd-zvngvz):
    error: error reading from server: EOF

Resources:
    + 2 created

Duration: 51s

 stderr:

And on Scaleway, the VPS and the floating ipv4 has been created:

Image

But when we delete the resources associated to the state, only the floatting ip is deleted:

Image

idrissneumann commented 1 month ago

I also opened an issure here: https://github.com/pulumiverse/pulumi-scaleway/issues/321

Because I have the feeling that is error is coming from a recent change of interface contract of Scaleway IaaS API (which might be badly catched by the terraform bridge but require a change in the Scaleway pulumi package anyway).

VenelinMartinov commented 1 month ago

Hi @idrissneumann, thanks for raising the issue and sorry you had trouble. Your feeling seems correct that this is a change in the API, which is handled badly by the provider.

I think the odd behaviour with the delete not getting rid of the resources is the panic during creation - the pulumi engine does not know what the state of the cloud resource is when that happens, so assumes we have not created it successfully as the provider panicked.

Thank you for opening an issue in the Scaleway provider repo! I'm going to close this issue in favour of the issue in the provider, since I don't see the bridge doing anything wrong here.