hashicorp / terraform-provider-google

Terraform Provider for Google Cloud Platform
https://registry.terraform.io/providers/hashicorp/google/latest/docs
Mozilla Public License 2.0
2.33k stars 1.74k forks source link

What is the format of image_name in google_artifact_registry_docker_image ? #18577

Closed nprime496 closed 4 months ago

nprime496 commented 4 months ago

Question

Hi, I am following the documentation on Google Clood Artifact Registry and can't find what is the syntax for the attribute image_name (here is the attribute description).

The example in documentation seems wrong as it use the name attribute and I tried this format (just the name/tag of my image), it doesn't work. My image exists, yet I get an error. Find it below.

Can you please tell me how to write image_name if this is the cause of all this.

Here is my code:

resource "google_artifact_registry_repository" "my_repo" {
  location      = var.location
  repository_id = "repository"
  description   = "Repository"
  format        = "DOCKER"
}

data "google_artifact_registry_docker_image" "my_image" {
  repository_id = google_artifact_registry_repository.my_repo.id
  image_name = "demo"
  location =  google_artifact_registry_repository.my_repo.location
}

Here is the traceback of my error:

data.google_artifact_registry_docker_image.my_image: Reading...

Planning failed. Terraform encountered an error while generating this plan.

╷
│ Error: googleapi: got HTTP response code 404 with body: <!DOCTYPE html>
│ <html lang=en>
│   <meta charset=utf-8>
│   <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
│   <title>Error 404 (Not Found)!!1</title>
│   <style>
│     *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}
│   </style>
│   <a href=//www.google.com/><span id=logo aria-label=Google></span></a>
│   <p><b>404.</b> <ins>That’s an error.</ins>
│   <p>The requested URL <code>/v1/projects/<project-id>/locations/<region>/repositories/projects/<project-id>/locations/<location>/repositories/repository/dockerImages?alt=json&amp;orderBy=update_time+desc</code> was not found on this server.  <ins>That’s all we know.</ins>
│ 
│ 
│   with data.google_artifact_registry_docker_image.my_image,
│   on artifact_registry.tf line 9, in data "google_artifact_registry_docker_image" "my_image":
│    9: data "google_artifact_registry_docker_image" "my_image" {
│ 
╵

Note: I notice that there seems to be a semantically broken url in the error : /v1/projects/<project-id>/locations/<region>/repositories/projects/<project-id>/locations/<location>/repositories/repository/dockerImages?alt=json&amp;orderBy=update_time+desc

dibunker commented 4 months ago

Hey @nprime496

You'll want to use the repository_id, instead of the id attribute, of the artifact registry resource.

data "google_artifact_registry_docker_image" "my_image" {
  location      = google_artifact_registry_repository.my_repo.location
  repository_id = google_artifact_registry_repository.my_repo.repository_id
  image         = "demo"
}
nprime496 commented 4 months ago

Thanks!

The documentation is misleading then.

The example usage is

data "google_artifact_registry_docker_image" "my_image" {
  repository = google_artifact_registry_repository.my_repo.id
  image      = "my-image"
  tag        = "my-tag"
}

when it should be

data "google_artifact_registry_docker_image" "my_image" {
  repository_id = google_artifact_registry_repository.my_repo.repository_id
  image_name      = "my-image"
  tag        = "my-tag"
}
dibunker commented 4 months ago

Yes, the docs have already been updated in https://github.com/hashicorp/terraform-provider-google/pull/18541

github-actions[bot] commented 3 months ago

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues. If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.