terraform-provider-google/google/data_source_google_storage_bucket_object.go
The Magician 593156e918 Add data source for cloud bucket object (#2657)
<!-- This change is generated by MagicModules. -->
/cc @chrisst
2018-12-20 17:22:22 -08:00

49 lines
1.3 KiB
Go

package google
import (
"fmt"
"github.com/hashicorp/terraform/helper/schema"
)
func dataSourceGoogleStorageBucketObject() *schema.Resource {
dsSchema := datasourceSchemaFromResourceSchema(resourceStorageBucketObject().Schema)
addOptionalFieldsToSchema(dsSchema, "bucket")
addOptionalFieldsToSchema(dsSchema, "name")
return &schema.Resource{
Read: dataSourceGoogleStorageBucketObjectRead,
Schema: dsSchema,
}
}
func dataSourceGoogleStorageBucketObjectRead(d *schema.ResourceData, meta interface{}) error {
config := meta.(*Config)
bucket := d.Get("bucket").(string)
name := d.Get("name").(string)
// Using REST apis because the storage go client doesn't support folders
url := fmt.Sprintf("https://www.googleapis.com/storage/v1/b/%s/o/%s", bucket, name)
res, err := sendRequest(config, "GET", url, nil)
if err != nil {
return fmt.Errorf("Error retrieving storage bucket object: %s", err)
}
d.Set("cache_control", res["cacheControl"])
d.Set("content_disposition", res["contentDisposition"])
d.Set("content_encoding", res["contentEncoding"])
d.Set("content_language", res["contentLanguage"])
d.Set("content_type", res["contentType"])
d.Set("crc32c", res["crc32c"])
d.Set("self_link", res["selfLink"])
d.Set("storage_class", res["storageClass"])
d.Set("md5hash", res["md5Hash"])
d.SetId(bucket + "-" + name)
return nil
}