From 0cb07dccc89d814e26dd9a96af9188d317778c95 Mon Sep 17 00:00:00 2001 From: The Magician Date: Thu, 13 Dec 2018 14:47:51 -0800 Subject: [PATCH] add sql private ip to ga provider (#2662) --- google/resource_sql_database_instance.go | 14 ++++++++++++-- website/docs/r/sql_database_instance.html.markdown | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/google/resource_sql_database_instance.go b/google/resource_sql_database_instance.go index 5520e8cf..32e1a9f9 100644 --- a/google/resource_sql_database_instance.go +++ b/google/resource_sql_database_instance.go @@ -16,6 +16,8 @@ import ( "google.golang.org/api/sqladmin/v1beta4" ) +const privateNetworkLinkRegex = "projects/(" + ProjectRegex + ")/global/networks/((?:[a-z](?:[-a-z0-9]*[a-z0-9])?))$" + var sqlDatabaseAuthorizedNetWorkSchemaElem *schema.Resource = &schema.Resource{ Schema: map[string]*schema.Schema{ "expiration_time": &schema.Schema{ @@ -181,6 +183,12 @@ func resourceSqlDatabaseInstance() *schema.Resource { Type: schema.TypeBool, Optional: true, }, + "private_network": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + ValidateFunc: validateRegexp(privateNetworkLinkRegex), + DiffSuppressFunc: compareSelfLinkRelativePaths, + }, }, }, }, @@ -624,6 +632,7 @@ func expandIpConfiguration(configured []interface{}) *sqladmin.IpConfiguration { return &sqladmin.IpConfiguration{ Ipv4Enabled: _ipConfiguration["ipv4_enabled"].(bool), RequireSsl: _ipConfiguration["require_ssl"].(bool), + PrivateNetwork: _ipConfiguration["private_network"].(string), AuthorizedNetworks: expandAuthorizedNetworks(_ipConfiguration["authorized_networks"].(*schema.Set).List()), ForceSendFields: []string{"Ipv4Enabled", "RequireSsl"}, } @@ -877,8 +886,9 @@ func flattenDatabaseFlags(databaseFlags []*sqladmin.DatabaseFlags) []map[string] func flattenIpConfiguration(ipConfiguration *sqladmin.IpConfiguration) interface{} { data := map[string]interface{}{ - "ipv4_enabled": ipConfiguration.Ipv4Enabled, - "require_ssl": ipConfiguration.RequireSsl, + "ipv4_enabled": ipConfiguration.Ipv4Enabled, + "private_network": ipConfiguration.PrivateNetwork, + "require_ssl": ipConfiguration.RequireSsl, } if ipConfiguration.AuthorizedNetworks != nil { diff --git a/website/docs/r/sql_database_instance.html.markdown b/website/docs/r/sql_database_instance.html.markdown index 661462e7..280dbee2 100644 --- a/website/docs/r/sql_database_instance.html.markdown +++ b/website/docs/r/sql_database_instance.html.markdown @@ -241,7 +241,7 @@ The optional `settings.ip_configuration` subblock supports: * `require_ssl` - (Optional) True if mysqld should default to `REQUIRE X509` for users connecting over IP. -* `private_network` - (Optional, [Beta](https://terraform.io/docs/providers/google/provider_versions.html)) The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. +* `private_network` - (Optional) The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. The optional `settings.ip_configuration.authorized_networks[]` sublist supports: