gclouder 0.1.13 → 0.2.0

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
  SHA1:
3
- metadata.gz: 5c73e111c08a0c24e449a66300c9115b0192d9a6
4
- data.tar.gz: 5635bd82f72b7cc8415e0e6dd740574daa9d5a55
3
+ metadata.gz: 4ebf2e74c77329fd25f72de4e0b98868203dde63
4
+ data.tar.gz: 9177c204fae1466ceccf232c2c3213dfabc01438
5
5
  SHA512:
6
- metadata.gz: f73700e41355989d96ed631482d3ed5fb53b45f5212101dcfadbe4622cc6bad923dfe3e81621d852a9bf9e9f635229e9d736ce1cc6df6a911a7238dcd4a8288c
7
- data.tar.gz: 1b936d25971460cdccd18fa8310e644cf9391b083b06799e181df43437d60c615f219a2de5c2ad95b638076f783d9be1585b2d2f94e27898a4a7dc79b1285fbc
6
+ metadata.gz: 411b55ad710b8614d253a215cd7cd6417c4551bec15f2388de5bf56a0405ea1976b3a52b6ec5bd8779e38b639007d4ba3db7225975ec85ecff125461002f2f50
7
+ data.tar.gz: 164ae2f92206253ee8fdf7d6af54c070a5de5b5a8b7764456576d691d552ffc4a783a14b3a3378301b97af1e441aca5af380f6bab8bfa4632d1bb161f5f8f58c
@@ -38,7 +38,7 @@ network:
38
38
  num_nodes:
39
39
  type: String
40
40
  required: false
41
- default: 3
41
+ default: 1
42
42
  password:
43
43
  type: String
44
44
  required: false
@@ -17,7 +17,16 @@ machine_type:
17
17
  num_nodes:
18
18
  type: String
19
19
  required: false
20
- default: 3
20
+ default: 1
21
+ enable_autoscaling:
22
+ type: Boolean
23
+ required: false
24
+ min_nodes:
25
+ type: Integer
26
+ required: false
27
+ max_nodes:
28
+ type: Integer
29
+ required: false
21
30
  scopes:
22
31
  type: Array
23
32
  required: false
@@ -37,9 +37,12 @@ module GClouder
37
37
 
38
38
  [
39
39
  "disk_size",
40
+ "enable_autoscaling",
40
41
  "enable_cloud_endpoints",
41
42
  "image_type",
42
43
  "machine_type",
44
+ "max_nodes",
45
+ "min_nodes",
43
46
  "num_nodes",
44
47
  "scopes",
45
48
  "zone",
@@ -55,6 +58,12 @@ module GClouder
55
58
  "zone",
56
59
  "node_pool",
57
60
  ]
61
+ when :autoscale_cluster
62
+ [
63
+ "enable_autoscaling",
64
+ "max_nodes",
65
+ "min_nodes",
66
+ ]
58
67
  else
59
68
  raise StandardError, "invalid context supplied when querying config object: #{context}"
60
69
  end
@@ -40,7 +40,8 @@ module GClouder
40
40
  info cluster["name"], heading: true, indent: 3
41
41
  cluster["node_pools"].each do |pool|
42
42
  NodePool.create(cluster, pool)
43
- NodePool.resize(cluster, pool) if Resource.resource?("container clusters", cluster["name"], silent: true)
43
+ NodePool.resize(cluster, pool)
44
+ NodePool.autoscale(cluster, pool)
44
45
  end
45
46
  end
46
47
  end
@@ -142,6 +143,7 @@ module GClouder
142
143
  end
143
144
 
144
145
  def self.resize(cluster, pool)
146
+ return if !pool["num_nodes"] or pool["enable_autoscaling"]
145
147
  config = pool.context(:resize_cluster)
146
148
  zone = pool["zone"]
147
149
 
@@ -170,6 +172,26 @@ module GClouder
170
172
  end
171
173
  end
172
174
 
175
+ def self.autoscale(cluster, pool)
176
+ return if !pool["enable_autoscaling"]
177
+
178
+ if !check_exists?(cluster["name"], pool["name"], pool["zone"])
179
+ info "skipping autoscale for non-existant cluster/nodepool: #{cluster["name"]}/#{pool["name"]}", indent: 5
180
+ return
181
+ end
182
+
183
+ autoscaling = gcloud("container node-pools list --cluster #{cluster["name"]} --zone #{cluster["zone"]} | jq '.[] | select(.name == \"#{pool["name"]}\") | .autoscaling'", force: true)
184
+ if pool["min_nodes"] != autoscaling["minNodeCount"] or pool["max_nodes"] != autoscaling["maxNodeCount"]
185
+ config = pool.context(:autoscale_cluster)
186
+ parameters = hash_to_args(config)
187
+
188
+ add "Updating autoscale constraints: Min: #{autoscaling["minNodeCount"]} -> #{pool["min_nodes"]} : Max: #{autoscaling["maxNodeCount"]} -> #{pool["max_nodes"]}", indent: 5
189
+ gcloud("container clusters update #{cluster["name"]} --node-pool #{pool["name"]} #{parameters} --zone #{cluster["zone"]}")
190
+ else
191
+ true
192
+ end
193
+ end
194
+
173
195
  def self.calculate_number_of_zones(pool)
174
196
  pool.key?("additional_zones") ? (pool["additional_zones"].count + 1) : 1
175
197
  end
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  module GClouder
4
- VERSION = "0.1.13"
4
+ VERSION = "0.2.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gclouder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.13
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Wilson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-07-24 00:00:00.000000000 Z
12
+ date: 2017-08-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: trollop