terraspace_plugin_google 0.3.0 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1e63e836f63ed2b6731dbdf64bdd6a7635bacea437bb0e6430f5723552f83899
4
- data.tar.gz: b7c5eb01564d29cae316d07bf52310bd4c110500d869392135a26275b196068f
3
+ metadata.gz: f70f3d2b05883b51424fcf33c4054ec87245a6194907501ece79d203d4004752
4
+ data.tar.gz: d98024a5205b2385d16761193ea367d302ba1cc2c57fef710f647cd3d49d2e54
5
5
  SHA512:
6
- metadata.gz: dbc69e11cc8e24f636ea4fe3d9996d13d4d373dd7678018d2bf078e0a971762e55be7b61ec2cc0b39bfe321ffa9b0113715bc0075aa6110cf071c98774b39d11
7
- data.tar.gz: 3aa893e192eb8004641bb0131da7ee2fffcb97b07d58ca09674ad5d5935806d7103e892538aae9896457a35b5241a73822bc59045cfdfc7d8506c49d08fc8308
6
+ metadata.gz: 11ec0a19248922068b38c68990477de03c8fcdd1c6bdc7eb9b8b583deb35a0a46a0f36c0319d7feb2fcf2913536b1e468d5c57c985c92cdfca7aba5379b6e16a
7
+ data.tar.gz: 30ea996f68cdd59da9902fd57dec0b89a643e272c5c04c7d9db407a9439aa5ef0c4ef89ae577ac0b9163b3aedb04df0d35debf3a7b43f4be63c719a69f09ede8
data/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
5
5
 
6
+ ## [0.3.4] - 2022-01-11
7
+ - [#10](https://github.com/boltops-tools/terraspace_provider_google/pull/10) set GOOGLE_CLOUD_PROJECT while keeping backwards compatibility
8
+
9
+ ## [0.3.3] - 2022-01-04
10
+ - [#9](https://github.com/boltops-tools/terraspace_provider_google/pull/9) google_secret support expansion automatically
11
+
12
+ ## [0.3.2] - 2021-11-25
13
+ - [#8](https://github.com/boltops-tools/terraspace_provider_google/pull/8) update example templates to include bucket location which is now required
14
+
15
+ ## [0.3.1] - 2021-11-13
16
+ - [#7](https://github.com/boltops-tools/terraspace_provider_google/pull/7) get google project number via api
17
+
6
18
  ## [0.3.0] - 2020-11-15
7
19
  - [#5](https://github.com/boltops-tools/terraspace_provider_google/pull/5) helper and secrets support
8
20
  - google secret
@@ -1,4 +1,5 @@
1
1
  resource "google_storage_bucket" "this" {
2
2
  name = var.name
3
3
  uniform_bucket_level_access = var.uniform_bucket_level_access
4
+ location = var.location
4
5
  }
@@ -8,3 +8,9 @@ variable "uniform_bucket_level_access" {
8
8
  type = bool
9
9
  default = false
10
10
  }
11
+
12
+ variable "location" {
13
+ description = "location"
14
+ type = string
15
+ default = "US"
16
+ }
@@ -7,4 +7,5 @@ module "bucket" {
7
7
 
8
8
  name = "bucket-${random_pet.this.id}"
9
9
  uniform_bucket_level_access = var.uniform_bucket_level_access
10
+ location = var.location
10
11
  }
@@ -3,3 +3,9 @@ variable "uniform_bucket_level_access" {
3
3
  type = bool
4
4
  default = false
5
5
  }
6
+
7
+ variable "location" {
8
+ description = "location"
9
+ type = string
10
+ default = "US"
11
+ }
@@ -1,3 +1,4 @@
1
+ require "google-cloud-resource_manager"
1
2
  require "google-cloud-secret_manager"
2
3
  require "google/cloud/storage"
3
4
 
@@ -14,5 +15,10 @@ module TerraspacePluginGoogle
14
15
  Google::Cloud::Storage.new
15
16
  end
16
17
  memoize :storage
18
+
19
+ def resource_manager
20
+ Google::Cloud.new.resource_manager
21
+ end
22
+ memoize :resource_manager
17
23
  end
18
24
  end
@@ -4,11 +4,19 @@ module TerraspacePluginGoogle::Interfaces::Helper
4
4
  class Secret
5
5
  include TerraspacePluginGoogle::Clients
6
6
  include TerraspacePluginGoogle::Logging
7
+ extend Memoist
7
8
 
8
- def initialize(options={})
9
- @options = options
9
+ def initialize(mod, options={})
10
+ @mod, @options = mod, options
10
11
  @base64 = options[:base64]
11
- @project_id = options[:google_project] || ENV['GOOGLE_PROJECT'] || raise("GOOGLE_PROJECT env variable is not set. It's required.")
12
+ @project_id = options[:google_project] || ENV['GOOGLE_CLOUD_PROJECT'] || ENV['GOOGLE_PROJECT'] || raise("GOOGLE_PROJECT env variable is not set. It's required.")
13
+ # So google sdk newer versions use GOOGLE_CLOUD_PROJECT instead of GOOGLE_PROJECT
14
+ # Found out between google-cloud-storage-1.35.0 and google-cloud-storage-1.28.0
15
+ # Though it seems like an library underneath that with the change.
16
+ # Keeping backwards compatibility to not create breakage users who already have GOOGLE_PROJECT
17
+ # But then setting GOOGLE_CLOUD_PROJECT so it works with the SDK.
18
+ # For users, who set GOOGLE_CLOUD_PROJECT that will work also.
19
+ ENV['GOOGLE_CLOUD_PROJECT'] ||= @project_id
12
20
  end
13
21
 
14
22
  def fetch(short_name, version: "latest")
@@ -18,6 +26,7 @@ module TerraspacePluginGoogle::Interfaces::Helper
18
26
  end
19
27
 
20
28
  def fetch_value(short_name, version="latest")
29
+ short_name = expansion(short_name) if expand?
21
30
  name = "projects/#{project_number}/secrets/#{short_name}/versions/#{version}"
22
31
  version = secret_manager_service.access_secret_version(name: name)
23
32
  version.payload.data
@@ -25,19 +34,28 @@ module TerraspacePluginGoogle::Interfaces::Helper
25
34
  logger.info "WARN: secret #{name} not found".color(:yellow)
26
35
  logger.info e.message
27
36
  "NOT FOUND #{name}" # simple string so Kubernetes YAML is valid
37
+ rescue Google::Cloud::InvalidArgumentError => e
38
+ logger.info "WARN: secret #{name} not found".color(:yellow)
39
+ logger.info e.message
40
+ "NOT FOUND #{name}" # simple string so Kubernetes YAML is valid
28
41
  end
29
42
 
30
- # TODO: Get the project from the list project api instead. Unsure where the docs are for this.
31
- # If someone knows, let me know.
32
- # Right now grabbing the first secret to then be able to get the google project number
43
+ private
33
44
  @@project_number = nil
34
45
  def project_number
35
46
  return @@project_number if @@project_number
47
+ project = resource_manager.project(@project_id)
48
+ @@project_number = project.project_number
49
+ end
50
+
51
+ delegate :expansion, to: :expander
52
+ def expander
53
+ TerraspacePluginGoogle::Interfaces::Expander.new(@mod)
54
+ end
55
+ memoize :expander
36
56
 
37
- parent = "projects/#{@project_id}"
38
- resp = secret_manager_service.list_secrets(parent: parent) # note: page_size doesnt seem to get respected
39
- name = resp.first.name # IE: projects/111111111111/secrets/demo-dev-db_host
40
- @@project_number = name.split('/')[1]
57
+ def expand?
58
+ !(@options[:expansion] == false || @options[:expand] == false)
41
59
  end
42
60
  end
43
61
  end
@@ -3,7 +3,7 @@ module TerraspacePluginGoogle::Interfaces
3
3
  include Terraspace::Plugin::Helper::Interface
4
4
 
5
5
  def google_secret(name, options={})
6
- Secret.new(options).fetch(name)
6
+ Secret.new(@mod, options).fetch(name)
7
7
  end
8
8
  cache_helper :google_secret
9
9
  end
@@ -1,3 +1,3 @@
1
1
  module TerraspacePluginGoogle
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.4"
3
3
  end
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.add_dependency "gcp_data"
26
26
  spec.add_dependency "google-cloud-storage"
27
+ spec.add_dependency "google-cloud-resource_manager"
27
28
  spec.add_dependency "google-cloud-secret_manager"
28
29
  spec.add_dependency "memoist"
29
30
  spec.add_dependency "zeitwerk"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terraspace_plugin_google
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-15 00:00:00.000000000 Z
11
+ date: 2022-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gcp_data
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: google-cloud-resource_manager
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: google-cloud-secret_manager
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -155,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
169
  - !ruby/object:Gem::Version
156
170
  version: '0'
157
171
  requirements: []
158
- rubygems_version: 3.1.4
172
+ rubygems_version: 3.2.32
159
173
  signing_key:
160
174
  specification_version: 4
161
175
  summary: Terraspace Google Cloud Plugin