Commit Graph

493 Commits

Author SHA1 Message Date
Paddy 17a92b65c2 provider/google: remove deprecated account_file field.
Remove the shims for the long-deprecated account_file field in the
Google provider.
2017-03-13 21:58:39 -07:00
Paddy 3b71036877 provider/google: remove the backend region field
Remove the field region on compute_backend_service as it has been
deprecated a while now and was never used to begin with.
2017-03-13 17:25:32 -07:00
Paddy 023ede0c26 provider/google: fix single port diff cycle
When specifying a single port in port_range, the API would accept it as
input, but would return it as {PORT}-{PORT}. Terraform would then see
this as different, even though (semantically) it's the same.

This commit adds a test that exposes the diff cycle created by this, and
an inline DiffSuppressFunc to resolve it.

Fixes #9051.
2017-03-13 17:03:20 -07:00
Paddy 4c41729f98 Update with @danawillow's feedback.
* Make our regexes more permissive (though still separated out for
  readability, despite being identical)
* Add a helper that will improve readability while sanity testing our
  regex results.
2017-03-13 16:39:42 -07:00
Paddy 630b245770 provider/google: Remove deprecated project fields.
Remove the deprecated fields from google_project, and drop all the logic
that went into supporting them. Tests still pass after one minor change.
2017-03-13 16:19:53 -07:00
Paddy 1a55aecc79 Merge pull request #12486 from hashicorp/paddy_4336_instance_manager_api_bug
provider/google: fix container instance group URLs
2017-03-13 11:15:17 -07:00
tpoindessous 9a2e9914de providers/google : google_compute_disk.go : Minor correction : "Deleting disk" message in Delete method (#12521)
* WIP: added a new resource type : google_compute_snapshot

* [WIP]: added a test acceptance for google_compute_snapshot

* Cleanup

* Minor correction : "Deleting disk" message in Delete method

* Error in merge action

* Error in merge action
2017-03-08 17:34:49 +02:00
Paddy 6cce8d6c1a provider/google: fix container instance group URLs
Google Container Engine's cluster API returned instance group manager
URLs when it meant to return instance group URLs. See #4336 for details
about the bug.

While this is undeniably an upstream problem, this PR:

* detects the error, meaning it will work as expected when the API is
  fixed.
* corrects the error by requesting the instance group manager, then
  retrieving its instance group URL, and using that instead.
* adds a test that exercises the error and the solution, to ensure it is
  functioning properly.
2017-03-06 21:14:32 -08:00
Dana Hoffman 322044695b provider/google: initial commit for node pool resource (#11802)
provider/google: initial commit for node pool resource
2017-03-06 14:59:24 -08:00
Paddy 6de8e25b16 Merge pull request #12434 from hashicorp/paddy_fix_gcp_storage_region_test
provider/google: add location to storage tests.
2017-03-03 16:58:18 -08:00
Paddy 6531ef57e1 provider/google: log the op name in sql op errors.
To aid in tracking down the error that's causing
TestAccGoogleSqlDatabaseInstance_basic to fail (it's claiming an op
can't be found?) I've added the op name (which is unique) to the error
output for op errors.
2017-03-03 16:45:25 -08:00
Paddy a318cd9d61 provider/google: add location to storage tests.
Add location to storage tests that need it, which fixes the failing
TestAccStorageStorageClass test.
2017-03-03 15:51:36 -08:00
Paddy 3cb5107bd2 provider/google: retry storage creation/deletion on rate limiting
Our GCP storage tests are really flaky right now due to rate limiting.
In theory, this could also impact Terraform users that are
deleting/creating large numbers of Google Cloud Storage buckets at once.

To fix, I'm detecting the specific error code that GCP returns when it's
a rate limit error, and using that with resource.Retry to try the
request again.
2017-03-02 16:42:28 -08:00
Paddy 9b1da31ca4 provider/google: ignore expanded v collapsed policies in diff
When comparing the config and state for google_project_iam_policy,
always merge the bindings down to a common representation, to avoid a
perpetual diff.

Fixes #11763.
2017-03-02 14:00:45 -08:00
Dana Hoffman 75eb9209b7 provider/google: fix url map test and update logic (#12317) 2017-03-01 09:47:12 +00:00
Paddy 6868ba72c7 Update the docs for resolveImage.
Update the explanation of the logic being followed in resolveImage.
2017-02-23 22:09:07 -08:00
Paddy 90254b9451 provider/google: update image resolution code.
Add tests that ensure that image syntax resolves to API input the way we
want it to.

Add a lot of different input forms for images, to more closely map to
what the API accepts, so anything that's valid input to the API should
also be valid input in a config.

Stop resolving image families to specific image URLs, allowing things
like instance templates to evolve over time as new images are pushed.
2017-02-23 21:55:30 -08:00
Paddy 73565af503 Merge branch 'master' into paddy_10984_better_image_resolution 2017-02-23 15:12:47 -08:00
Evan Brown facc50d308 providers/google: google_project supports billing account (#11653)
* Vendor google.golang.org/api/cloudbilling/v1

* providers/google: Add cloudbilling client

* providers/google: google_project supports billing account

This change allows a Terraform user to set and update the billing
account associated with their project.

* providers/google: Testing project billing account

This change adds optional acceptance tests for project billing accounts.
GOOGLE_PROJECT_BILLING_ACCOUNT and GOOGLE_PROJECT_BILLING_ACCOUNT_2
must be set in the environment for the tests to run; otherwise, they
will be skipped.

Also includes a few code cleanups per review.

* providers/google: Improve project billing error message
2017-02-20 19:32:24 +02:00
Dana Hoffman 069467edc1 provider/google: Write the raw disk encryption key in the state file to avoid diffs on plan (#12068) 2017-02-20 19:28:32 +02:00
Paddy 27c185e1c9 Merge pull request #12044 from sbadia/gcs_storage_class
doc: gcs - Update storage_class documentation and tests
2017-02-17 16:13:29 -08:00
Mike Fowler bfdeae0e33 provider/google-cloud: Add maintenance window (#12042)
* provider/google-cloud: Add maintenance window

Allows specification of the `maintenance_window` within the `settings`
block. This controls when Google will restart a database in order to
apply updates. It is also possible to select an `update_track` to
relatively control updating between instances in the same project.

* Adjustments as suggested in code review.
2017-02-18 01:33:47 +02:00
Sebastien Badia e15f1628c2
doc: gcs - Update storage_class documentation and tests
`STANDARD` storage_class is now replaced by `MULTI_REGIONAL` depending
the bucket location. Same for `DURABLE_REDUCED_AVAILABILITY` replaced
by `REGIONAL`.

refs: https://cloud.google.com/storage/docs/storage-classes#standard
2017-02-17 15:59:25 +01:00
Paddy 50ee426b72 Check for errors when deleting project metadata.
Our delete operation for google_compute_project_metadata didn't check an
error when making the call to delete metadata, which led to a panic in
our tests. This is also probably indicative of why our tests
failed/metadata got left dangling.
2017-02-16 02:36:03 -08:00
Dana Hoffman 917e00f2ae Merge pull request #11631 from drebes/lts_fix
provider/google: make local_traffic_selector computed now that we rea…
2017-02-15 12:57:25 -08:00
Roberto Jung Drebes 4b184853a1 provider/google: make local_traffic_selector computed now that we read it back from server 2017-02-15 19:48:44 +01:00
Radek Simko 76c40ac451
provider/google: Add google_compute_zones data source 2017-02-15 09:50:25 +00:00
Dana Hoffman ccb3674c04 Merge pull request #11840 from danawillow/gke-version
provider/google: Update node version in container cluster test
2017-02-09 16:33:43 -08:00
Dana Hoffman b18e7bcfd2 provider/google: Update node version in container cluster test 2017-02-09 16:14:00 -08:00
Dana Hoffman df0210401d provider/google: set subnetwork_project to computed 2017-02-08 15:26:47 -08:00
Dana Hoffman 0a60142080 Merge pull request #11650 from danawillow/google-container
provider/google: set additional_zones to computed and disallow the original zone from appearing in the list
2017-02-08 15:12:08 -08:00
Paddy 6257aff676 provider/google: update DNS names in tests.
Our DNS tests were using terraform.test as a DNS name, which GCP was
erroring on, as we haven't proven we own the domain (and can't, as we
don't). To solve this, I updated the tests to use hashicorptest.com,
which we _do_ own, and which we have proven ownership of. The tests now
pass.
2017-02-08 10:24:04 -08:00
Dana Hoffman a3ca05a3c9 provider/google: always set additional_zones on read 2017-02-07 19:21:00 -08:00
Dana Hoffman 260e803880 providers/google: disallow specifying the original zone in additional_zones, change field to computed 2017-02-07 11:02:02 -08:00
Jake Champlin 1ab17bf5d3 Merge pull request #11735 from hashicorp/paddy_11728_with_tests
Revert backwards incompatibility in google_project.policy_data
2017-02-07 11:50:59 -05:00
Paddy faa640dfe8 Add a test that would have caught backwards incompatibility.
Add a test that would have caught the backwards incompatibility where
project IAM bindings aren't merged, but are overwritten.
2017-02-06 22:27:28 -08:00
Dana Hoffman 32c71b88a4 Merge pull request #11548 from zopanix/patch-1
Added forceNew on accessConfig in google_compute_instance_template
2017-02-06 17:19:55 -08:00
Evan Brown 7d5c405c96 providers/google: Fix google_project IAM bug
This changes removes read of the deprecated `policy_data` attr in
the `google_project` resource.

0.8.5 introduced new behavior that incorrectly read the `policy_data`
field during the read lifecycle event. This caused Terraform to
assume it owned not just policy defined in the data source, but
everything that was associated with the project. Migrating from 0.8.4
to 0.8.5, this would cause the config (partial) to be compared to the
state (complete, as it was read from the API) and assume some
policies had been explicitly deleted. Terraform would then delete them.

Fixes #11556
2017-02-06 14:16:22 -08:00
Matthew Frahry d421829aaa Add test to PR 9320 (#11645) 2017-02-03 11:50:57 +00:00
Dana Hoffman 3efe2c942c provider/google: only set additional zones on read if it had been set in the config 2017-02-02 17:37:03 -08:00
Dana Hoffman b16ef83b9a Merge pull request #11590 from evandbrown/google-cloud-sql-pw
providers/google: No default root user for SQL
2017-02-01 15:43:23 -08:00
Dana Hoffman cd246545af Merge pull request #11020 from drebes/remote_traffic_selector
provider/google: remote_traffic_selector for google_compute_vpn_tunnel
2017-02-01 13:04:06 -08:00
Mike Fowler 23e01de515 provider/google-cloud: Add second generation disk specification options (#11571)
* Add second generation disk specification options.

* Adjust test check to match resource read behaviour.
2017-02-01 16:20:31 +00:00
Evan Brown 860019048d providers/google: No default root user for SQL
Cloud SQL Gen 2 instances come with a default 'root'@'%' user on
creation. This change automatically deletes that user after creation. A
Terraform user must use the google_sql_user to create a user with
appropriate host and password.
2017-01-31 22:21:11 -08:00
Christophe van de Kerchove 5842383c77 This should resolve #11547
This should force terraform to recreate the resource after updating it.
2017-01-31 09:33:29 -05:00
Dana Hoffman f7e2147655 Merge pull request #11477 from gh-mlfowler/google-sql2-slave
provider/google: Fix master_instance_name to prevent slave rebuilds
2017-01-30 14:17:56 -08:00
Dana Hoffman 55ca64a095 provider/google: allow instance group managers in region other than project (#11294) 2017-01-30 11:35:35 +00:00
Paddy 95e01ad35b Merge branch 'master' into paddy_10984_better_image_resolution 2017-01-29 23:56:00 -08:00
Christoph Blecker b5e8d62b14 Fix vet errors in providers (#11496) 2017-01-29 15:59:55 +00:00
Roberto Jung Drebes 4dc9007e8e provider/google: acceptance tests for traffic selectors 2017-01-28 00:55:17 +01:00
Roberto Jung Drebes b41efe7dc7 provider/google: remote_traffic_selector for google_compute_vpn_tunnel 2017-01-28 00:09:58 +01:00
Mike Fowler b2ac5e9b64 Fix master_instance_name to prevent slave rebuilds 2017-01-27 21:06:46 +00:00
Evan Brown b9e9e777c8 providers/google: Support managing projects
Add support for creating, updating, and deleting projects, as well as
their enabled services and their IAM policies.

Various concessions were made for backwards compatibility, and will be
removed in 0.9 or 0.10.
2017-01-25 14:59:50 -08:00
Paddy 59e632435e Start adding tests for image resolution.
Add tests that show what we want image input strings to resolve to, so
we can test that behaviour.
2017-01-23 16:45:06 -08:00
Zach Gershman df027d9e3c removes region param from google_compute_backend_service (#10903)
* removes region param from backend_service

- this param was not being used in this service
- you need a regional_backend_service if you want to pass this

* deprecated region instead of outright removing

* put session affinity formatting back
2017-01-18 23:10:43 +00:00
Dana Hoffman 6558224de1 Merge pull request #11018 from unguiculus/feature/additional_zones
provider/google: [GKE] Allow additional zones to be configured
2017-01-18 10:10:13 -08:00
Dana Hoffman 006e9b1b3c Merge pull request #11228 from cblecker/rbs-sessionaffinity
provider/google: Add support for session_affinity to google_compute_region_backend_service
2017-01-18 10:06:02 -08:00
Dana Hoffman 449a98a398 providers/google: Add support for encrypting a disk (#11167)
* providers/google: add support for encrypting a disk

* providers/google: Add docs for encrypting disks

* providers/google: CSEK small fixes: sensitive params and mismatched state files
2017-01-18 13:49:48 +00:00
Christoph Blecker 73bd728fe5 Add support for session_affinity to google_compute_region_backend_service 2017-01-17 16:32:58 -08:00
Reinhard Nägele 69316a8726 Add 'ForceNew: true' to additional_zones 2017-01-13 19:39:35 +01:00
Reinhard Nägele 17e8e94fb8 Fix if condition in test 2017-01-13 19:37:59 +01:00
Reinhard Nägele 722fad6d94 Add test for additional zones existance 2017-01-13 17:03:28 +01:00
Reinhard Nägele 776bc47df3 Merge remote-tracking branch 'upstream' into feature/additional_zones 2017-01-13 16:44:09 +01:00
zbikmarc 77037bed2c providers/google: Add subnetwork_project field to enable cross-project networking in instance templates (#11110)
* Add subnetwork_project field to allow for XPN in GCE instance templates

* Missing os import

* Removing unneeded check

* fix formatting

* Add subnetwork_project to read
2017-01-12 16:05:13 +02:00
Paddy 690db74d4a Read update_strategy before overwriting it. (#11013)
As brought up in #10174, our update_strategy property for instance group
managers in GCP would always be set to "RESTART" on read, even if the
user asked for them to be "NONE" in the config.

This adds a test to ensure that the user wishes were respected, which
fails until we check for update_strategy in the ResourceData before we
update it within the Read function. Because the update_strategy property
doesn't map to anything in the API, we never need to read it from
anywhere but the config, which means the ResourceData should be
considered authoritative by the time we get to the Read function.

The fix for this was provided by @JDiPierro in #10198 originally, but
was missing tests, so it got squashed into this.
2017-01-09 23:15:50 +00:00
Reinhard Nägele 038d330365 [GKE] Allow additional zones to be configured 2017-01-04 07:37:57 +01:00
Paddy e6349aee4f Remove create_timeout backwards incompatibilities.
A new create_timeout attribute was added that had some backwards
incompatibilities, and as per discussion in #10823, it was determined we
could make upgrading to 0.8.x easier by fixing them, without really
losing any functionality.

Because create_timeout is not something stored or transmitted to the
API, it's not something we need a ForceNew on. Also, because an update
wouldn't result in an API call, we can add a state migration to avoid a
false positive diff that requires people to plan and apply but doesn't
actually make an API call.
2016-12-19 23:49:53 -08:00
Christoph Blecker b7faae4bac Use node_version during google_container_cluster creation (#10817) 2016-12-18 13:50:46 +00:00
stack72 9aebe3344a
provider/google: Moving the XPN EnvVar check into provider_test.go to stop failed build 2016-12-13 19:29:23 +00:00
stack72 4f256a54db
Merge branch 'google-xpn' of https://github.com/danawillow/terraform 2016-12-13 19:15:54 +00:00
Christoph Blecker fa8921f8f4 Add support for name_prefix to google_compute_ssl_certificate 2016-12-12 15:57:58 -08:00
James Bardin 5b0bc3b25e wrong printf verb 2016-12-12 15:03:21 -05:00
Paddy 8d046c766c Merge pull request #10453 from danawillow/google-ilb
providers/google: Add support for Internal Load Balancing
2016-12-12 09:47:20 -08:00
Dana Hoffman 2ad3042877 fix tests 2016-12-08 19:59:03 -08:00
Dana Hoffman 985b4e2b66 use conflictswith for health check instead of separate type field 2016-12-08 13:35:57 -08:00
Dana Hoffman 35664ff0e1 log id of health check that still exists on destroy 2016-12-08 10:40:09 -08:00
Paddy e1a5805833 Fix instance/template metadata support
Update our instance template to include metadata_startup_script, to
match our instance resource. Also, we've resolved the diff errors around
metadata.startup-script, and people want to use that to create startup
scripts that don't force a restart when they're changed, so let's stop
disallowing it.

Also, we had a bunch of calls to `schema.ResourceData.Set` that ignored
the errors, so I added error handling for those calls. It's mostly
bundled with this code because I couldn't be sure whether it was the
root of bugs or not, so I took care of it while addressing the startup
script issue.
2016-12-05 02:45:28 -08:00
Dana Hoffman 0e03f59e4a remove loadBalancingScheme as an option in RegionBackendService since it can only be INTERNAL 2016-12-01 12:27:36 -08:00
Dana Hoffman fd2b1fcbd6 add one more test for updating a health check 2016-12-01 12:27:35 -08:00
Dana Hoffman 77f0ef4fc1 fix bugs in health check and its tests 2016-12-01 12:27:35 -08:00
Dana Hoffman 20ee56be07 Add the other HealthCheck types 2016-12-01 12:27:34 -08:00
Dana Hoffman adafa722e7 clean up RegionBackendService and tests 2016-12-01 12:27:34 -08:00
Dana Hoffman 39809fca76 use v1 apis instead of beta 2016-12-01 12:27:33 -08:00
Dana Hoffman a04ed894d1 First set of changes to enable internal load balancing using beta apis 2016-12-01 11:14:21 -08:00
Paddy 7054fdfa13 providers/google: make projects importable.
This change doesn't make much sense now, as projects are read-only
anyways, so there's not a lot that importing really does for you--you
can already reference pre-existing projects just by defining them in
your config.

But as we discussed #10425, this change made more and more sense. In a
world where projects can be created, we can no longer reference
pre-existing projects just by defining them in config. We get that
ability back by making projects importable.
2016-12-01 10:38:27 -08:00
Benjamin Pineau f2a3c5da82 provider/google: allow session affinity for compute_backend_service
Google's Backend Services gives users control over the session affinity modes.
Let's allow Terraform users to leverage this option.
We don't change the default value ("NONE", as provided by Google).
2016-11-30 23:50:50 +01:00
Evan Brown d357e75201 Merge pull request #10117 from cblecker/f-gke-node-scopes
provider/google: Add support for scope aliases to google_container_cluster
2016-11-18 20:19:26 -08:00
Evan Brown 3920460220 Merge pull request #10081 from aditya87/google_compute_image_timeout
Added create timeout for compute images and instances
2016-11-17 12:56:02 -08:00
Evan Brown a32fe2d47f Resolve review feedback 2016-11-17 09:49:22 -08:00
Christoph Blecker 190f167bb2
Add support for scope aliases to google_container_cluster 2016-11-14 15:50:24 -08:00
Evan Brown 4bdf65c36f Fix spacing inconsistencies 2016-11-14 11:12:55 -08:00
Evan Brown 1612d6a78f Fix go vet issue 2016-11-14 09:59:44 -08:00
Evan Brown 9a188049a7 providers/google: random resource names in SA test 2016-11-14 09:42:11 -08:00
Evan Brown 5423349b68 providers/google: Create and delete Service Accounts 2016-11-13 20:47:20 -08:00
Aditya Anchuri 49c7d272a3 Added create timeout for compute images and instances
- Prevents the corresponding terraform resource from timing out when the
  images or instances take longer than the default of 4 minutes to be
  created
2016-11-12 18:30:02 -08:00
Paddy 8ba6ed708a provider/google: throw an error for invalid disks
When configuring an instance's attached disk, if the attached disk has
both the disk and type attributes set, it would previously cause
terraform to crash with a nil pointer exception. The root cause was that
we only instantiate the InitializeParams property of the disk if its
disk attribute isn't set, and we try to write to the InitializeParams
property when the type attribute is set. So setting both caused the
InitializeParams property to not be initialized, then written to.

Now we throw an error explaining that the configuration can't have both
the disk and the type set.

Fixes #6495.
2016-11-07 16:11:00 -08:00
Christoph Blecker af7cd57a4a Search configured project image families (#9243)
* Search configured project image families

* Clarify documentation around google_compute_instance image families

* Acceptance test for private instance family creation
2016-11-01 21:00:12 +00:00
Christoph Blecker 45f441fdb4 Add support for default-internet-gateway alias for google_compute_route (#9676) 2016-11-01 13:45:36 +00:00
Christoph Blecker ca8cd4b1f0 Add support for using source_disk to google_compute_image (#9614) 2016-11-01 10:32:47 +00:00
Dan Wendorf 781725348e provider/google Support MySQL 5.7 instances (#9673)
* provider/google Document MySQL versions for second generation instances

Google Cloud SQL has first-gen and second-gen instances with different
supported versions of MySQL.

* provider/google Increase SQL Admin operation timeout to 10 minutes

Creating SQL instances for MySQL 5.7 can take over 7 minutes,
so the timeout needs to be increased to allow the
google_sql_database_instance resource to successfully create.
2016-10-28 14:41:03 +02:00