2017-05-08 07:38:11 +00:00
package google
import (
"fmt"
"time"
"github.com/hashicorp/terraform/helper/schema"
)
2017-05-10 22:01:15 +00:00
func dataSourceGoogleContainerEngineVersions ( ) * schema . Resource {
2017-05-08 07:38:11 +00:00
return & schema . Resource {
2017-05-10 22:01:15 +00:00
Read : dataSourceGoogleContainerEngineVersionsRead ,
2017-05-08 07:38:11 +00:00
Schema : map [ string ] * schema . Schema {
"project" : {
Type : schema . TypeString ,
Optional : true ,
} ,
"zone" : {
Type : schema . TypeString ,
2017-12-06 22:30:04 +00:00
Optional : true ,
2017-05-08 07:38:11 +00:00
} ,
2018-08-28 18:37:07 +00:00
"region" : {
2018-12-14 01:51:11 +00:00
Deprecated : "This field is in beta and will be removed from this provider. Use it in the the google-beta provider instead. See https://terraform.io/docs/providers/google/provider_versions.html for more details." ,
2018-08-28 18:37:07 +00:00
Type : schema . TypeString ,
Optional : true ,
ConflictsWith : [ ] string { "zone" } ,
} ,
2018-04-19 17:59:52 +00:00
"default_cluster_version" : {
Type : schema . TypeString ,
Computed : true ,
} ,
2017-05-08 07:38:11 +00:00
"latest_master_version" : {
Type : schema . TypeString ,
Computed : true ,
} ,
"latest_node_version" : {
Type : schema . TypeString ,
Computed : true ,
} ,
"valid_master_versions" : {
Type : schema . TypeList ,
Computed : true ,
Elem : & schema . Schema { Type : schema . TypeString } ,
} ,
"valid_node_versions" : {
Type : schema . TypeList ,
Computed : true ,
Elem : & schema . Schema { Type : schema . TypeString } ,
} ,
} ,
}
}
2017-05-10 22:01:15 +00:00
func dataSourceGoogleContainerEngineVersionsRead ( d * schema . ResourceData , meta interface { } ) error {
2017-05-08 07:38:11 +00:00
config := meta . ( * Config )
project , err := getProject ( d , config )
if err != nil {
return err
}
2018-08-28 18:37:07 +00:00
location , err := getLocation ( d , config )
2017-12-06 22:30:04 +00:00
if err != nil {
return err
}
2018-08-28 18:37:07 +00:00
if len ( location ) == 0 {
return fmt . Errorf ( "Cannot determine location: set zone or region in this data source or at provider-level" )
}
2017-05-08 07:38:11 +00:00
2018-08-28 18:37:07 +00:00
location = fmt . Sprintf ( "projects/%s/locations/%s" , project , location )
resp , err := config . clientContainerBeta . Projects . Locations . GetServerConfig ( location ) . Do ( )
2017-05-08 07:38:11 +00:00
if err != nil {
return fmt . Errorf ( "Error retrieving available container cluster versions: %s" , err . Error ( ) )
}
d . Set ( "valid_master_versions" , resp . ValidMasterVersions )
2018-04-19 17:59:52 +00:00
d . Set ( "default_cluster_version" , resp . DefaultClusterVersion )
2017-05-08 07:38:11 +00:00
d . Set ( "valid_node_versions" , resp . ValidNodeVersions )
2018-08-28 18:37:07 +00:00
if len ( resp . ValidMasterVersions ) > 0 {
d . Set ( "latest_master_version" , resp . ValidMasterVersions [ 0 ] )
}
if len ( resp . ValidNodeVersions ) > 0 {
d . Set ( "latest_node_version" , resp . ValidNodeVersions [ 0 ] )
}
2017-05-08 07:38:11 +00:00
d . SetId ( time . Now ( ) . UTC ( ) . String ( ) )
return nil
}