gclouder 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f7311a9316efc730260a93a0b835151265579e08
4
- data.tar.gz: eda71d3ca4b1001f2ef5bd1e0e7f913f66b7d99c
3
+ metadata.gz: 2c516273470e35539fa6a910424577e69a14d5aa
4
+ data.tar.gz: 9b83e1ac431a504b01b6ae00fb1e9651c3def051
5
5
  SHA512:
6
- metadata.gz: 57f1d9ecd8560d94f2a542deb5c78fc4ece8e435b153ad19980ad1fdc0e267be1c0f081019eb69396600bb21d8dc0d27b0b4c95c6f2f96f89fcd1518a1a80b1c
7
- data.tar.gz: 403efac259b7d0036365ea05fd0bba0f22a44d644056eb313a7182a18e5f0e6930e2bfd8232fa2f29cf0d113de73fb898540329e59b16e5d71f0083e343b7dde
6
+ metadata.gz: 8b2d0b042a9c2bd01d772c3a04626043c3f2cb1eb1a1e1537ef070d6203d1cf4f52ed2409bc872577c2eaebb95d67806f0ffb73c580116673fd16ce5b07b64dc
7
+ data.tar.gz: 22107c3383753a45030193eb6ce9b9a64f2a7928d0d7ca93cf540aaa7fc0c556a98fd9ffa6c143d4f70f0b587bcd4f235dc73d8f0a967451b24a85887bd0f145
@@ -0,0 +1,30 @@
1
+ ---
2
+ name:
3
+ type: String
4
+ required: true
5
+ stage_bucket:
6
+ type: String
7
+ trigger_topic:
8
+ type: String
9
+ trigger_http:
10
+ type: Boolean
11
+ local_path:
12
+ type: String
13
+ source_url:
14
+ type: String
15
+ source_path:
16
+ type: String
17
+ source_branch:
18
+ type: String
19
+ source_tag:
20
+ type: String
21
+ source_revision:
22
+ type: String
23
+ memory:
24
+ type: String
25
+ timeout:
26
+ type: String
27
+ include_ignored_files:
28
+ type: String
29
+ entry-point:
30
+ type: String
@@ -11,7 +11,7 @@ module GClouder
11
11
  end
12
12
 
13
13
  def gsutil(command, args, force: false)
14
- info "# gsutil #{command} -p #{project['project_id']} #{args}" if cli_args[:debug]
14
+ info "# gsutil #{command} #{args}" if cli_args[:debug]
15
15
 
16
16
  return if cli_args[:dry_run] && !force
17
17
 
@@ -19,7 +19,7 @@ module GClouder
19
19
  end
20
20
 
21
21
  def gsutil_exec(command, args)
22
- shell("gsutil #{command} -p #{project['project_id']} #{args}")
22
+ shell("gsutil #{command} #{args}")
23
23
  end
24
24
  end
25
25
  end
@@ -11,7 +11,7 @@ module GClouder
11
11
  send action, "#{name} #{extra_info}", indent: indent
12
12
  end
13
13
 
14
- def self.resource?(resource, name, args = nil, filter_key: "name", filter: "#{filter_key} ~ ^#{name}$", project_id: nil, silent: false, extra_info: nil, indent: 3)
14
+ def self.resource?(resource, name, args = nil, filter_key: "name", filter_value: nil, filter: "#{filter_key} ~ ^#{filter_value || name}$", project_id: nil, silent: false, extra_info: nil, indent: 3)
15
15
  exists = \
16
16
  gcloud("#{resource} list --filter '#{filter}' #{args} | jq '. | length'", force: true, project_id: project_id) > 0
17
17
 
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ module GClouder
4
+ module Resources
5
+ module Functions
6
+ module Function
7
+ include GClouder::Config::CLIArgs
8
+ include GClouder::Logging
9
+ include GClouder::Resource::Cleaner
10
+ include GClouder::Config::Project
11
+
12
+ def self.header(stage = :ensure)
13
+ info "[#{stage}] functions / function", indent: 1, title: true
14
+ end
15
+
16
+ def self.ensure
17
+ return if Local.list.empty?
18
+ header
19
+
20
+ Local.list.each do |region, functions|
21
+ info region, indent: 2, heading: true
22
+ info
23
+ functions.each do |function|
24
+ Function.ensure(region, function)
25
+ end
26
+ end
27
+ end
28
+
29
+ def self.validate
30
+ return if Local.list.empty?
31
+ header :validate
32
+ Local.validate
33
+ end
34
+
35
+ module Local
36
+ include GClouder::Config::CLIArgs
37
+ include GClouder::Config::Project
38
+ include GClouder::Logging
39
+
40
+ def self.validate
41
+ Resources::Validate::Region.instances(
42
+ list,
43
+ required_keys: GClouder::Config::Arguments.required(%w(functions)),
44
+ permitted_keys: GClouder::Config::Arguments.permitted(%w(functions))
45
+ )
46
+ end
47
+
48
+ def self.list
49
+ Resources::Region.instances(path: %w(functions))
50
+ end
51
+ end
52
+
53
+ module Remote
54
+ def self.list
55
+ Resources::Remote.instances(
56
+ path: %w(beta functions)
57
+ )
58
+ end
59
+ end
60
+
61
+ module Function
62
+ include GClouder::GCloud
63
+
64
+ def self.ensure(region, function)
65
+ filter_value = "projects/#{project['project_id']}/locations/#{region}/functions/#{function["name"]}"
66
+ type = Resource::resource?("beta functions", function["name"], filter_value: filter_value) ? "change" : "add"
67
+
68
+ Resource::feedback(type, "beta functions", function["name"])
69
+ gcloud "beta functions deploy #{function["name"]} #{hash_to_args(function)} --region=#{region}"
70
+ end
71
+
72
+ def self.purge(region, function)
73
+ Resource.purge :"beta functions", function["name"], "--region=#{region}"
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -7,6 +7,7 @@ module GClouder
7
7
  include GClouder::Logging
8
8
  include GClouder::Shell
9
9
  include GClouder::Resource::Cleaner
10
+ include GClouder::Config::Project
10
11
 
11
12
  def self.header(stage = :ensure)
12
13
  info "[#{stage}] storage / buckets", title: true, indent: 1
@@ -78,8 +79,7 @@ module GClouder
78
79
 
79
80
  return if cli_args[:dry_run]
80
81
 
81
- # Just use shell, as -p flag is not valid for 'defacl ch'.
82
- shell("gsutil defacl ch -u #{default_access} gs://#{bucket_name}")
82
+ gsutil "defacl ch", "-u #{default_access} gs://#{bucket_name}"
83
83
  end
84
84
 
85
85
  def self.check_exists?(region, bucket_name)
@@ -93,8 +93,7 @@ module GClouder
93
93
  end
94
94
 
95
95
  add "#{bucket["name"]} [#{bucket["default_access"]}]"
96
- gsutil "mb", "-l #{region} gs://#{bucket["name"]}"
97
-
96
+ gsutil "mb", "-p #{project['project_id']} -l #{region} gs://#{bucket["name"]}"
98
97
 
99
98
  setDefaultAccess bucket["name"], bucket["default_access"] if bucket.key?("default_access")
100
99
  end
@@ -41,7 +41,8 @@ module GClouder
41
41
  permitted_and_required_keys = {
42
42
  "bucket"=>{"type"=>"String", "required"=>true},
43
43
  "topic"=>{"type"=>"String", "required"=>true},
44
- "events"=>{"type"=>"Array", "required"=>false}
44
+ "events"=>{"type"=>"Array", "required"=>false},
45
+ "prefix"=>{"type"=>"String", "required"=>false}
45
46
  }
46
47
 
47
48
  Resources::Validate::Region.instances(
@@ -80,8 +81,12 @@ module GClouder
80
81
  if notification.has_key?("events")
81
82
  event_type_args = "-e #{notification["events"].join(",")}"
82
83
  end
84
+ prefix_arg = ""
85
+ if notification.has_key?("prefix")
86
+ prefix_arg = "-p #{notification["prefix"]}"
87
+ end
83
88
 
84
- args = "-t #{notification["name"]} #{event_type_args} -f json gs://#{notification["bucket"]}"
89
+ args = "-t #{notification["name"]} #{prefix_arg} #{event_type_args} -f json gs://#{notification["bucket"]}"
85
90
 
86
91
  add "notification topic: #{notification["name"]}; bucket: #{notification["bucket"]}", indent: 4
87
92
  gsutil "notification create", args
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  module GClouder
4
- VERSION = "0.1.8"
4
+ VERSION = "0.1.9"
5
5
  end
data/lib/gclouder.rb CHANGED
@@ -80,6 +80,8 @@ require "gclouder/resources/pubsub/subscriptions"
80
80
 
81
81
  require "gclouder/resources/logging/sinks"
82
82
 
83
+ require "gclouder/resources/functions/function"
84
+
83
85
  module GClouder
84
86
  include GClouder::Logging
85
87
  include GClouder::Config::CLIArgs
@@ -253,6 +255,12 @@ module GClouder
253
255
  module: Resources::PubSub::Subscriptions,
254
256
  skip: [ :check ],
255
257
  },
258
+
259
+ {
260
+ name: "functions",
261
+ module: Resources::Functions::Function,
262
+ skip: [ :check, :clean ],
263
+ },
256
264
  ]
257
265
  end
258
266
 
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.8
4
+ version: 0.1.9
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-06-15 00:00:00.000000000 Z
12
+ date: 2017-06-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: trollop
@@ -187,6 +187,7 @@ files:
187
187
  - assets/arguments/container/node-pools.yml
188
188
  - assets/arguments/dns/managed-zones.yml
189
189
  - assets/arguments/dns/record-sets/transaction.yml
190
+ - assets/arguments/functions.yml
190
191
  - assets/defaults/compute/disks.yml
191
192
  - assets/mappings/file.yml
192
193
  - assets/mappings/property.yml
@@ -245,6 +246,7 @@ files:
245
246
  - lib/gclouder/resources/container/clusters.rb
246
247
  - lib/gclouder/resources/container/node_pools.rb
247
248
  - lib/gclouder/resources/dns.rb
249
+ - lib/gclouder/resources/functions/function.rb
248
250
  - lib/gclouder/resources/logging/sinks.rb
249
251
  - lib/gclouder/resources/project.rb
250
252
  - lib/gclouder/resources/project/iam_policy_binding.rb