mongodb / terraform-provider-mongodbatlas

Terraform MongoDB Atlas Provider: Deploy, update, and manage MongoDB Atlas infrastructure as code through HashiCorp Terraform
https://registry.terraform.io/providers/mongodb/mongodbatlas
Mozilla Public License 2.0
242 stars 168 forks source link

Terraform not able to detect all the changes from the mongodb .tf files #465

Closed vrathore18 closed 3 years ago

vrathore18 commented 3 years ago

terraform:0.13.7 provider "mongodbatlas" { public_key = var.atlasmongo_publickey private_key = var.atlasmongo_privatekey version = "0.9.1" }

Issue: Terraform is not detecting/applying mongodb changes.

Summary: I created .tf files to provide restricted access to all our microservices. we run MongoDB-related changes before deploying the branches but for the last 10-15 days we started facing an issue that when we run terraform apply it detects changes for 40-50% of the files. We have to run terraform apply 3-4 times to make all the changes in atlas MongoDB.

Sample .tf file

resource "mongodbatlas_custom_db_role" "readWriteRole-test" {
  project_id = var.project_id
  role_name  = format("%s-readWriteRole-test", var.name)
  actions {
    action = "LIST_COLLECTIONS"
    resources {
      database_name = format("ab-%s", var.name)
    }
  }

  actions {
    action = "FIND"
    resources {
      collection_name = "event-store"
      database_name   = format("ab-%s", var.name)
    }
    resources {
      collection_name = "debug_api_request"
      database_name   = format("ab-%s", var.name)
    }
  }

}
themantissa commented 3 years ago

@vrathore18 thanks for the issue but this sounds more like a support case than an issue. I encourage you to work with MongoDB Atlas support so they can look at your actual deployment and help to determine what might be happening. They may also ask for more Terraform logs, details as this is not a lot of information to go on. fyi @nikhil-mongo

vrathore18 commented 3 years ago

@themantissa : I don't think this is a MongoDB issue but a MongoDB provider issue. I was working fine 15 days ago. @nikhil-mongo : Any suggestions? Our whole deployment is failing because of this issue.

themantissa commented 3 years ago

@vrathore18 we'd like to help but without anything pointing either way we can't do much. Have you opened a ticket with MongoDB Atlas support - that will give us the best path forward so we can see at least that side. Furthermore as the issue template states logs are vital to see what is going on with Terraform, without them we can't do much. @nikhil-mongo is going to tell you the same thing though he's in support so may be one of the engineers who help you in a support ticket.

nikhil-mongo commented 3 years ago

@vrathore18 I agree with @themantissa on the point that this indeed is a support thing and not the provider issue. Terraform traverses all the files and changes until certain restrictions have been applied to ignore the changes. I will also request to raise the support case with us and share the below details:

We may need more details and sessions to figure this out but for start these details will be required.

Thanks

vrathore18 commented 3 years ago

@themantissa @nikhil-mongo : I tried to reach out to Atlas support with this issue but there are asking to buy a premium support plan to look into this issue.

leofigy commented 3 years ago

Hello my 2 cents here, As @nikhil-mongo, @themantissa this is more a support scenario.

However with the info you gave us. I tried to reproduce it. But it went okay. I was reading our provider code but we didn't change that resource since 2020. One thing I noticed we have a refresh state function. without enough information what I could think might be the issue could be a sync delay for the status.

But that depends on the way you associated the resources. Terraform creates a resource graph. As @nikhil-mongo said it transverse all the resources. Until the configuration matches the API state , once that is done. then there is no diff. (no more need to do an apply).

➜  online-archives git:(INTMDB-18-leofigy) ✗ terraform apply -var-file=auto.tfvars
Terraform will perform the following actions:

  # mongodbatlas_custom_db_role.readWriteRole-test will be created
  + resource "mongodbatlas_custom_db_role" "readWriteRole-test" {
      + id         = (known after apply)
      + project_id = <CENSORED>
      + role_name  = "angel-readWriteRole-test"

      + actions {
          + action = "LIST_COLLECTIONS"

          + resources {
              + database_name = "SampleDB"
            }
        }
      + actions {
          + action = "FIND"

          + resources {
              + collection_name = "debug_api_request"
              + database_name   = "SampleDB"
            }
          + resources {
              + collection_name = "event-store"
              + database_name   = "SampleDB"
            }
        }
    }

Plan: 1 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

mongodbatlas_custom_db_role.readWriteRole-test: Creating...
mongodbatlas_custom_db_role.readWriteRole-test: Creation complete after 3s [id=cHJvamVjdF9pZA==:NWNmNWE0NWE5Y2NmNjQwMGU2MDk4MWI2-cm9sZV9uYW1l:YW5nZWwtcmVhZFdyaXRlUm9sZS10ZXN0]

➜  online-archives git:(INTMDB-18-leofigy) ✗ terraform plan -var-file=auto.tfvars

mongodbatlas_custom_db_role.readWriteRole-test: Refreshing state... 
No changes. Infrastructure is up-to-date.
vrathore18 commented 3 years ago

@leofigy Thanks you for replaying and I understand what you are saying even when I am trying run single tf file its working. I am have about 12 .tf files and terraform is even applying that changes but in Atlas mongo not all 12 role are getting updated. 2-3 always left unchanged. I have share the screenshot here as well, please have a look.

https://stackoverflow.com/questions/67709526/terraform-apply-the-changes-but-its-not-showing-on-atlas-mongo

So issue here is even when terraform applying the change same changes is not getting updated on Atlas mongo. And the big issue here is we are not even getting any error, if the API is failing to update then at least we should get some error messages

themantissa commented 3 years ago

@vrathore18 I'd like to be able to assist more but without support engagement for this there's not a lot we can do beyond what we've been able to comment on here thus far. Also the screenshot doesn't really give us much info, configs and logs give much more info - though I can't promise we'll be able assist without having support engaged on both sides. Terraform is included with Atlas support so if you do not have that it definitely presents a challenge. It would help to know why you are running multiple tfs? If it works with one is there any reason you could stick to one if that works?

vrathore18 commented 3 years ago

@themantissa This is my 1 tf file to create a custom role. Similary we have 12 roles. If we put all in one file it would be a mess. so to have a proper segregation we slit the files one per role.

The reason I am not pasting here the terraform apply logs is one its very long and second it contains very sensitive information. If it is really nessessory, I'll remove all the sensitive info manually and share on weekend. I have gone through the logs, I can see terraform detected the changes, I can see it applying the changes. The only part I can't understand is how to validate ifatlaas mongo's API is applying that changes.

auth.tf

resource "mongodbatlas_custom_db_role" "readWriteRole-auth" {
  project_id = var.project_id
  role_name  = format("%s-readWriteRole-auth", var.name)
  actions {
    action = "LIST_COLLECTIONS"
    resources {
      database_name = format("sd-%s", var.name)
    }
  }

  actions {
    action = "FIND"
    resources {
      collection_name = "event"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "event_api_request"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sectors"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sizes"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-sides"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "country"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "languages"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-categories"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "job-roles"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "jur"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "social-networks"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "section-tags"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "users"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "role"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "com-conf"
      database_name   = format("sd-%s", var.name)
    }
  }

  actions {
    action = "CHANGE_STREAM"
    resources {
      collection_name = "event"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "event_api_request"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sectors"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sizes"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-sides"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "country"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "languages"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-categories"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "job-roles"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "jur"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "social-networks"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "section-tags"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "users"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "role"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "com-conf"
      database_name   = format("sd-%s", var.name)
    }
  }

  actions {
    action = "LIST_INDEXES"
    resources {
      collection_name = "event"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "event_api_request"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sectors"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sizes"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-sides"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "country"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "languages"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-categories"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "job-roles"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "jur"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "social-networks"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "section-tags"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "users"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "role"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "com-conf"
      database_name   = format("sd-%s", var.name)
    }
  }

  actions {
    action = "COLL_STATS"
    resources {
      collection_name = "event"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "event_api_request"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sectors"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sizes"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-sides"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "country"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "languages"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-categories"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "job-roles"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "jur"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "social-networks"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "section-tags"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "users"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "role"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "com-conf"
      database_name   = format("sd-%s", var.name)
    }
  }

  actions {
    action = "CREATE_COLLECTION"
    resources {
      collection_name = "event"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "event_api_request"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sectors"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sizes"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-sides"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "country"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "languages"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-categories"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "job-roles"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "jur"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "social-networks"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "section-tags"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "users"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "role"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "com-conf"
      database_name   = format("sd-%s", var.name)
    }
  }

  actions {
    action = "CREATE_INDEX"
    resources {
      collection_name = "event"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "event_api_request"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sectors"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sizes"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-sides"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "country"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "languages"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-categories"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "job-roles"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "jur"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "social-networks"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "section-tags"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "users"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "role"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "com-conf"
      database_name   = format("sd-%s", var.name)
    }
  }

  actions {
    action = "INSERT"
    resources {
      collection_name = "event"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "event_api_request"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sectors"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sizes"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-sides"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "country"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "languages"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-categories"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "job-roles"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "jur"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "social-networks"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "section-tags"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "users"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "role"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "com-conf"
      database_name   = format("sd-%s", var.name)
    }
  }

  actions {
    action = "UPDATE"
    resources {
      collection_name = "event"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "event_api_request"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sectors"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sizes"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-sides"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "country"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "languages"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-categories"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "job-roles"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "jur"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "social-networks"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "section-tags"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "users"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "role"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "com-conf"
      database_name   = format("sd-%s", var.name)
    }
  }

  actions {
    action = "REMOVE"
    resources {
      collection_name = "event"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "event_api_request"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sectors"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sizes"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-sides"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "country"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "languages"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-categories"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "job-roles"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "jur"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "social-networks"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "section-tags"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "users"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "role"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "com-conf"
      database_name   = format("sd-%s", var.name)
    }
  }

  actions {
    action = "COLL_MOD"
    resources {
      collection_name = "event"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "event_api_request"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sectors"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sizes"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-sides"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "country"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "languages"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-categories"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "job-roles"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "jur"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "social-networks"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "section-tags"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "users"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "role"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "com-conf"
      database_name   = format("sd-%s", var.name)
    }
  }

  actions {
    action = "DROP_INDEX"
    resources {
      collection_name = "event"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "event_api_request"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sectors"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-sizes"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-sides"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "country"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "languages"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-categories"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "contact-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "job-roles"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "jur"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "company-types"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "social-networks"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "section-tags"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "users"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "role"
      database_name   = format("sd-%s", var.name)
    }
    resources {
      collection_name = "com-conf"
      database_name   = format("sd-%s", var.name)
    }
  }
}
leofigy commented 3 years ago

Hi @themantissa just thinking load, what I think could be the issue. This seems more a bulk request (it has several collections associated to the actions of the role. At the end they get validated in the API). having 12 custom_db roles with that size. They could take more time than the expected. Of course the API will not fail, because the request can be in pending state, another plan/apply (refresh) will refresh the request.

But for this specific issue is out of my scope. We will need a support request, to actually track in the API what's going on. (more like a profiling)

vrathore18 commented 3 years ago

@leofigy : This is exactly whats happening random roles is not getting updated. When I re-apply 1-2 times more then only all roles updates. But I have two concern here:

themantissa commented 3 years ago

Agree @leofigy that this is out of our scope. @vrathore18 without support engagement to see what's happening we cannot answer your questions as we don't have access to the information to do so.