terraform-provider-yandex icon indicating copy to clipboard operation
terraform-provider-yandex copied to clipboard

Provider crashed

Open onixsib opened this issue 1 year ago • 5 comments

Similar behavior is observed when trying to create or import the resource yandex_organizationmanager_saml_federation_user_account

yandex_organizationmanager_saml_federation_user_account.federation_account["XXXX-NAME"]: Importing from ID "XXX-ID"
╷
│ Error: Plugin did not respond
│ 
│ The plugin encountered an error, and failed to respond to the
│ plugin6.(*GRPCProvider).ImportResourceState call. The plugin logs may
│ contain more details.
╵


Stack trace from the terraform-provider-yandex_v0.104.0 plugin:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0x1aa6389]

goroutine 135 [running]:
github.com/yandex-cloud/terraform-provider-yandex/yandex.getSamlUserAccount({0x2657020, 0xc0013d6ae0}, 0xc000b33600, {0xc0007be3f0, 0x14}, {0xc0007be408, 0x15})
        github.com/yandex-cloud/terraform-provider-yandex/yandex/resource_yandex_organizationmanager_saml_federation_user_account.go:194 +0x389
github.com/yandex-cloud/terraform-provider-yandex/yandex.resourceYandexOrganizationManagerSamlFederationUserAccountImport({0x2657020, 0xc0013d6ae0}, 0xc00138aa00, {0x2041240?, 0xc000b33600})
        github.com/yandex-cloud/terraform-provider-yandex/yandex/resource_yandex_organizationmanager_saml_federation_user_account.go:70 +0x38d
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Provider).ImportState(0xc0000e7920, {0x2657020, 0xc0013d6ae0}, 0xc001393428, {0xc0005f08d0, 0x14})
        github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/provider.go:388 +0x1ac
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*GRPCProviderServer).ImportResourceState(0xc000787a28, {0x2657020?, 0xc0013d69c0?}, 0xc0000e4cc0)
        github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/grpc_provider.go:1097 +0xf4
github.com/hashicorp/terraform-plugin-mux/tf5to6server.v5tov6Server.ImportResourceState({{0x2661508?, 0xc000787a28?}}, {0x2657020?, 0xc0013d69c0?}, 0xc0000e4ca0?)
        github.com/hashicorp/[email protected]/tf5to6server/tf5to6server.go:70 +0xd0
github.com/hashicorp/terraform-plugin-mux/tf6muxserver.muxServer.ImportResourceState({0xc000d16150, 0xc000f9cc30, 0xc000d16180, 0xc000d161b0, {0xc000b68c20, 0x2, 0x2}}, {0x2657020?, 0xc0013d6690?}, 0xc0000e4ca0)
        github.com/hashicorp/[email protected]/tf6muxserver/mux_server_ImportResourceState.go:30 +0x139
github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server.(*server).ImportResourceState(0xc0001470e0, {0x2657020?, 0xc0013c3d70?}, 0xc0005f4fa0)
        github.com/hashicorp/[email protected]/tfprotov6/tf6server/server.go:849 +0x1f6
github.com/hashicorp/terraform-plugin-go/tfprotov6/internal/tfplugin6._Provider_ImportResourceState_Handler({0x22377e0?, 0xc0001470e0}, {0x2657020, 0xc0013c3d70}, 0xc00138a780, 0x0)
        github.com/hashicorp/[email protected]/tfprotov6/internal/tfplugin6/tfplugin6_grpc.pb.go:440 +0x170
google.golang.org/grpc.(*Server).processUnaryRPC(0xc000693a40, {0x2657020, 0xc0013c23f0}, {0x265fce0, 0xc000e36000}, 0xc0013c10e0, 0xc000db8030, 0x3eadcd8, 0x0)
        google.golang.org/[email protected]/server.go:1343 +0xe49
google.golang.org/grpc.(*Server).handleStream(0xc000693a40, {0x265fce0, 0xc000e36000}, 0xc0013c10e0)
        google.golang.org/[email protected]/server.go:1737 +0xca6
google.golang.org/grpc.(*Server).serveStreams.func1.1()
        google.golang.org/[email protected]/server.go:986 +0x8c
created by google.golang.org/grpc.(*Server).serveStreams.func1
        google.golang.org/[email protected]/server.go:997 +0x15c

Error: The terraform-provider-yandex_v0.104.0 plugin crashed!

This is always indicative of a bug within the plugin. It would be immensely
helpful if you could report the crash with the plugin's maintainers so that it
can be fixed. The output above should help diagnose the issue.

XXX-NAME - string XXX-ID id from YC

onixsib avatar Jan 10 '24 15:01 onixsib

Hi, is it still reproducible with 0.105.0? If yes - could you share a sample so we can use to reproduce it locally?

KoDA82 avatar Jan 16 '24 12:01 KoDA82

╷
│ Error: Plugin did not respond
│ 
│ The plugin encountered an error, and failed to respond to the
│ plugin6.(*GRPCProvider).ApplyResourceChange call. The plugin logs may
│ contain more details.
╵

Stack trace from the terraform-provider-yandex_v0.105.0 plugin:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0x1aaef09]

goroutine 28 [running]:
github.com/yandex-cloud/terraform-provider-yandex/yandex.getSamlUserAccount({0x2663c28, 0xc001406b40}, 0xc001350160, {0xc0005eabe8, 0x14}, {0xc0005eac00, 0x15})
        github.com/yandex-cloud/terraform-provider-yandex/yandex/resource_yandex_organizationmanager_saml_federation_user_account.go:194 +0x389
github.com/yandex-cloud/terraform-provider-yandex/yandex.resourceYandexOrganizationManagerSamlFederationUserAccountRead({0x2663c28, 0xc001406b40}, 0xc001406b40?, {0x204bd20?, 0xc001350160})
        github.com/yandex-cloud/terraform-provider-yandex/yandex/resource_yandex_organizationmanager_saml_federation_user_account.go:114 +0x106
github.com/yandex-cloud/terraform-provider-yandex/yandex.resourceYandexOrganizationManagerSamlFederationUserAccountCreate({0x2663c28, 0xc001406b40}, 0x0?, {0x204bd20?, 0xc001350160?})
        github.com/yandex-cloud/terraform-provider-yandex/yandex/resource_yandex_organizationmanager_saml_federation_user_account.go:107 +0x5fe
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).create(0xc000d67dc0, {0x2663c60, 0xc001406000}, 0xd?, {0x204bd20, 0xc001350160})
        github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/resource.go:778 +0x12e
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).Apply(0xc000d67dc0, {0x2663c60, 0xc001406000}, 0xc001324b60, 0xc001378300, {0x204bd20, 0xc001350160})
        github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/resource.go:909 +0xa7e
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*GRPCProviderServer).ApplyResourceChange(0xc000729680, {0x2663c60?, 0xc001363e00?}, 0xc001319f90)
        github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/grpc_provider.go:1027 +0xe8d
github.com/hashicorp/terraform-plugin-mux/tf5to6server.v5tov6Server.ApplyResourceChange({{0x266e148?, 0xc000729680?}}, {0x2663c60, 0xc001363e00}, 0x0?)
        github.com/hashicorp/[email protected]/tf5to6server/tf5to6server.go:37 +0x5a
github.com/hashicorp/terraform-plugin-mux/tf6muxserver.muxServer.ApplyResourceChange({0xc000d84a80, 0xc000fcfb60, 0xc000d84ab0, 0xc000d84ae0, {0xc0008c6ce0, 0x2, 0x2}}, {0x2663c60?, 0xc001363ad0?}, 0xc001319f40)
        github.com/hashicorp/[email protected]/tf6muxserver/mux_server_ApplyResourceChange.go:30 +0x139
github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server.(*server).ApplyResourceChange(0xc000598960, {0x2663c60?, 0xc0013630e0?}, 0xc0001ed810)
        github.com/hashicorp/[email protected]/tfprotov6/tf6server/server.go:819 +0x574
github.com/hashicorp/terraform-plugin-go/tfprotov6/internal/tfplugin6._Provider_ApplyResourceChange_Handler({0x22431c0?, 0xc000598960}, {0x2663c60, 0xc0013630e0}, 0xc001307b00, 0x0)
        github.com/hashicorp/[email protected]/tfprotov6/internal/tfplugin6/tfplugin6_grpc.pb.go:422 +0x170
google.golang.org/grpc.(*Server).processUnaryRPC(0xc0008bed20, {0x2663c60, 0xc001363050}, {0x266c920, 0xc000e44ea0}, 0xc0013707e0, 0xc000e3c960, 0x3ec3c60, 0x0)
        google.golang.org/[email protected]/server.go:1343 +0xe49
google.golang.org/grpc.(*Server).handleStream(0xc0008bed20, {0x266c920, 0xc000e44ea0}, 0xc0013707e0)
        google.golang.org/[email protected]/server.go:1737 +0xca6
google.golang.org/grpc.(*Server).serveStreams.func1.1()
        google.golang.org/[email protected]/server.go:986 +0x8c
created by google.golang.org/grpc.(*Server).serveStreams.func1
        google.golang.org/[email protected]/server.go:997 +0x15c

Error: The terraform-provider-yandex_v0.105.0 plugin crashed!

This is always indicative of a bug within the plugin. It would be immensely
helpful if you could report the crash with the plugin's maintainers so that it
can be fixed. The output above should help diagnose the issue.

Yes it still crashes.

Below i has put code and data which going to provider.

variable "federations" {
  type = map(any)
}

variable "folder_ids" {
  type = map(any)
}

variable "cloud_ids" {
  type = map(any)
}

variable "staff_users" {
  type = list(object({
    username         = string
    enabled          = optional(bool)
    email            = string
    email_verified   = optional(bool)
    first_name       = string
    last_name        = string
    groups           = list(string)
    initial_password = optional(string)
    vpn_access = optional(object({
      prod    = optional(list(string))
      staging = optional(list(string))
    }))
    cloud_access = optional(object({
      prod = optional(object({
        prod = optional(list(string))
      }))
      staging = optional(object({
        stress = optional(list(string))
        tech  = optional(list(string))
      }))
    }))
    description = optional(string)
  }))
  default     = []
  description = "List of users"
}

locals {
  users = {
    for user in var.staff_users : user.username => user
  }
  yandex_users = flatten([
    for key, user in local.users : [
      for cloud, access in user.cloud_access : {
        username = "${user.username}"
        email    = "${user.email}"
        cloud    = "${cloud}"
        access   = access
      } if access != null && access != ""
    ] if user.cloud_access != null && user.cloud_access != {}
  ])

  yandex_users_folder = flatten([
    for key, user in local.users : [
      for cloud, access in user.cloud_access : [
        for folder, rights in access : [
          for role in rights :
          {
            username       = "${user.username}"
            email          = "${user.email}"
            username_cloud = "${user.username}-${cloud}"
            cloud          = "${cloud}"
            folder         = "${folder}"
            role           = "${role}"
          }
        ] if rights != null
      ] if access != null
    ] if user.cloud_access != null && user.cloud_access != {}
  ])
}
resource "yandex_organizationmanager_saml_federation_user_account" "federation_account" {
  for_each = { for user in local.yandex_users : "${user.username}-${user.cloud}" => user }
  federation_id = yandex_organizationmanager_saml_federation.federation["${each.value.cloud}"].id
  name_id       = each.value.email
}

resource "yandex_resourcemanager_cloud_iam_member" "iam_member" {
  for_each = { for user in local.yandex_users : "${user.username}-${user.cloud}" => user }
  cloud_id = var.cloud_ids[each.value.cloud]
  role     = "resource-manager.clouds.member"
  member   = "federatedUser:${yandex_organizationmanager_saml_federation_user_account.federation_account["${each.value.username}-${each.value.cloud}"].id}"
}

resource "yandex_resourcemanager_folder_iam_member" "iam_member" {
  for_each  = { for user in local.yandex_users_folder : "${user.username}-${user.cloud}-${user.folder}-${user.role}" => user }
  folder_id = var.folder_ids[each.value.folder]
  role      = each.value.role
  member    = "federatedUser:${yandex_organizationmanager_saml_federation_user_account.federation_account["${each.value.username_cloud}"].id}"
}

Data

staff_users = [
  {
    username   = "user"
    email      = "[email protected]"
    first_name = "User"
    last_name  = "Resu"
    groups     = [""]
    vpn_access = {
      prod    = [""]
      staging = [""]
    },
    cloud_access = {
      prod = {
        prod = ["admin"]
      },
      staging = {
        strees = ["admin"],
        tech  = ["admin"]
      }
    }
    description = "DevOps"
  },
]

folder_ids = {
  stress = "idiididididididididi"
  tech  = "idiidididididididid2"
  prod  = "idiidididididididid3"
}

cloud_ids = {

  staging = "idc11111111111111111"
  prod    = "idc22222222222222222"
}

federations = {
  staging = "idf11111111111111111"
  prod    = "idf22222222222222222"
}

onixsib avatar Jan 19 '24 08:01 onixsib

v0.107.0

Stack trace from the terraform-provider-yandex_v0.107.0 plugin:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0x1ad68a9]

goroutine 40 [running]:
github.com/yandex-cloud/terraform-provider-yandex/yandex.getSamlUserAccount({0x26ab308, 0xc000febda0}, 0xc00097d1e0, {0xc000f8a528, 0x14}, {0xc000f8a540, 0x15})
        github.com/yandex-cloud/terraform-provider-yandex/yandex/resource_yandex_organizationmanager_saml_federation_user_account.go:194 +0x389
github.com/yandex-cloud/terraform-provider-yandex/yandex.resourceYandexOrganizationManagerSamlFederationUserAccountRead({0x26ab308, 0xc000febda0}, 0xc000febda0?, {0x2085d60?, 0xc00097d1e0})
        github.com/yandex-cloud/terraform-provider-yandex/yandex/resource_yandex_organizationmanager_saml_federation_user_account.go:114 +0x106
github.com/yandex-cloud/terraform-provider-yandex/yandex.resourceYandexOrganizationManagerSamlFederationUserAccountCreate({0x26ab308, 0xc000febda0}, 0x0?, {0x2085d60?, 0xc00097d1e0?})
        github.com/yandex-cloud/terraform-provider-yandex/yandex/resource_yandex_organizationmanager_saml_federation_user_account.go:107 +0x5fe
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).create(0xc000d92380, {0x26ab340, 0xc000feb260}, 0xd?, {0x2085d60, 0xc00097d1e0})
        github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/resource.go:778 +0x12e
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).Apply(0xc000d92380, {0x26ab340, 0xc000feb260}, 0xc000fccd00, 0xc000f96c80, {0x2085d60, 0xc00097d1e0})
        github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/resource.go:909 +0xa7e
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*GRPCProviderServer).ApplyResourceChange(0xc000783668, {0x26ab340?, 0xc000feb080?}, 0xc000fb0a50)
        github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/schema/grpc_provider.go:1027 +0xe8d
github.com/hashicorp/terraform-plugin-mux/tf5to6server.v5tov6Server.ApplyResourceChange({{0x26b5848?, 0xc000783668?}}, {0x26ab340, 0xc000feb080}, 0x0?)
        github.com/hashicorp/[email protected]/tf5to6server/tf5to6server.go:37 +0x5a
github.com/hashicorp/terraform-plugin-mux/tf6muxserver.muxServer.ApplyResourceChange({0xc000db63c0, 0xc001162880, 0xc000db63f0, 0xc000db6420, {0xc000c72b00, 0x2, 0x2}}, {0x26ab340?, 0xc000fead50?}, 0xc000fb0a00)
        github.com/hashicorp/[email protected]/tf6muxserver/mux_server_ApplyResourceChange.go:30 +0x139
github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server.(*server).ApplyResourceChange(0xc000992b40, {0x26ab340?, 0xc000fea360?}, 0xc000238b60)
        github.com/hashicorp/[email protected]/tfprotov6/tf6server/server.go:819 +0x574
github.com/hashicorp/terraform-plugin-go/tfprotov6/internal/tfplugin6._Provider_ApplyResourceChange_Handler({0x2284b00?, 0xc000992b40}, {0x26ab340, 0xc000fea360}, 0xc000f96480, 0x0)
        github.com/hashicorp/[email protected]/tfprotov6/internal/tfplugin6/tfplugin6_grpc.pb.go:422 +0x170
google.golang.org/grpc.(*Server).processUnaryRPC(0xc0009dd000, {0x26ab340, 0xc000fea2d0}, {0x26b4000, 0xc000db96c0}, 0xc000fe2360, 0xc000e582a0, 0x3f54b40, 0x0)
        google.golang.org/[email protected]/server.go:1372 +0xe49
google.golang.org/grpc.(*Server).handleStream(0xc0009dd000, {0x26b4000, 0xc000db96c0}, 0xc000fe2360)
        google.golang.org/[email protected]/server.go:1783 +0x1031
google.golang.org/grpc.(*Server).serveStreams.func2.1()
        google.golang.org/[email protected]/server.go:1016 +0x68
created by google.golang.org/grpc.(*Server).serveStreams.func2
        google.golang.org/[email protected]/server.go:1027 +0x12e

Error: The terraform-provider-yandex_v0.107.0 plugin crashed!

onixsib avatar Feb 08 '24 13:02 onixsib

Any news?

onixsib avatar Feb 16 '24 05:02 onixsib

The issue was transmitted to the responsible team. Now waiting for a fix.

KoDA82 avatar Feb 16 '24 06:02 KoDA82