diff --git a/.changelog/3868.txt b/.changelog/3868.txt new file mode 100644 index 0000000000..9450efefa3 --- /dev/null +++ b/.changelog/3868.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource-manager: added additional fields to `google_projects` datasource +``` diff --git a/google-beta/data_source_google_projects.go b/google-beta/data_source_google_projects.go index e506a1e8ff..a030e16d14 100644 --- a/google-beta/data_source_google_projects.go +++ b/google-beta/data_source_google_projects.go @@ -23,6 +23,37 @@ func dataSourceGoogleProjects() *schema.Resource { Type: schema.TypeString, Computed: true, }, + "create_time": { + Type: schema.TypeString, + Computed: true, + }, + "labels": { + Type: schema.TypeMap, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, + Description: `A set of key/value label pairs assigned on a project.`, + }, + "parent": { + Type: schema.TypeMap, + Computed: true, + Elem: &schema.Schema{Type: schema.TypeString}, + Description: `An optional reference to a parent Resource.`, + }, + "number": { + Type: schema.TypeString, + Computed: true, + Description: `The numeric identifier of the project.`, + }, + "lifecycle_state": { + Type: schema.TypeString, + Computed: true, + Description: `The numeric identifier of the project.`, + }, + "name": { + Type: schema.TypeString, + Computed: true, + Description: `The optional user-assigned display name of the Project.`, + }, }, }, }, @@ -79,11 +110,38 @@ func flattenDatasourceGoogleProjectsList(v interface{}) []map[string]interface{} projects := make([]map[string]interface{}, 0, len(ls)) for _, raw := range ls { p := raw.(map[string]interface{}) + + var mId, mNumber, mLabels, mLifecycleState, mName, mCreateTime, mParent interface{} if pId, ok := p["projectId"]; ok { - projects = append(projects, map[string]interface{}{ - "project_id": pId, - }) + mId = pId + } + if pNumber, ok := p["projectNumber"]; ok { + mNumber = pNumber + } + if pName, ok := p["name"]; ok { + mName = pName + } + if pLabels, ok := p["labels"]; ok { + mLabels = pLabels + } + if pLifecycleState, ok := p["lifecycleState"]; ok { + mLifecycleState = pLifecycleState + } + if pCreateTime, ok := p["createTime"]; ok { + mCreateTime = pCreateTime + } + if pParent, ok := p["parent"]; ok { + mParent = pParent } + projects = append(projects, map[string]interface{}{ + "project_id": mId, + "number": mNumber, + "name": mName, + "labels": mLabels, + "lifecycle_state": mLifecycleState, + "create_time": mCreateTime, + "parent": mParent, + }) } return projects diff --git a/google-beta/data_source_google_projects_test.go b/google-beta/data_source_google_projects_test.go index 9564b2dbbf..7f498cdb47 100644 --- a/google-beta/data_source_google_projects_test.go +++ b/google-beta/data_source_google_projects_test.go @@ -21,6 +21,12 @@ func TestAccDataSourceGoogleProjects_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( // We can't guarantee no project won't have our project ID as a prefix, so we'll check set-ness rather than correctness resource.TestCheckResourceAttrSet("data.google_projects.my-project", "projects.0.project_id"), + resource.TestCheckResourceAttrSet("data.google_projects.my-project", "projects.0.name"), + resource.TestCheckResourceAttrSet("data.google_projects.my-project", "projects.0.number"), + resource.TestCheckResourceAttrSet("data.google_projects.my-project", "projects.0.lifecycle_state"), + resource.TestCheckResourceAttrSet("data.google_projects.my-project", "projects.0.parent.id"), + resource.TestCheckResourceAttrSet("data.google_projects.my-project", "projects.0.parent.type"), + resource.TestCheckResourceAttrSet("data.google_projects.my-project", "projects.0.create_time"), ), }, },