souls 1.9.11 → 1.9.12

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
  SHA256:
3
- metadata.gz: f30491de141e0ea11f97bdb7a03b14cbe70ac161f7e480ff7ea235cf730324ca
4
- data.tar.gz: 53f3b274ba7834e0279be8b304ff669183861c282125db8d5576f22cd5168f61
3
+ metadata.gz: 30e75a60a55603333c57c9cfbd45ec5c9a16854cda31c29d1a840439c221967f
4
+ data.tar.gz: 2019911a647b0784122a025f8225b8b277544bbe96055e6851277e2da7974ebc
5
5
  SHA512:
6
- metadata.gz: fd53298937c0438c4b6542483fe195f63322218802e16b5c52e7147b1d60bf11a2af259b730e3016a2f11ae812df717ad15460ff9a1c40e67a49f851b25c8cba
7
- data.tar.gz: 267823450763ccb227c9f258965603ee60c359f14404d16b0ae4e8b941051a61da67cda2b5d5bf07875bcf937f44c415a4ef8599dcf31b9d0851a1b4a4f1c14c
6
+ metadata.gz: d75036d900131455cd301b3170b51a778c99bae004123e9be4ffc0ace011bcdc98848a931ad76713cf4a8f10afe57bca4d7e41ecf14bd328e9fbdd5696fd46fc
7
+ data.tar.gz: e5d25f3dfd8617030124e34de5e0c1ad374099e5a57da3c4bdf44c63354adc72e907d106e3cb9173dab7d29093f8d26f77104386e43e6ed45d309a33932ffd75
@@ -1,4 +1,5 @@
1
1
  require_relative "graphql/souls_query"
2
+ require_relative "utils/souls_logger"
2
3
 
3
4
  module Souls
4
5
  end
@@ -0,0 +1,55 @@
1
+ module Souls
2
+ module SoulsLogger
3
+ class Configuration
4
+ attr_accessor :logger
5
+
6
+ def initialize
7
+ @logger = nil
8
+ end
9
+ end
10
+
11
+ class << self
12
+ attr_writer :configuration
13
+ end
14
+
15
+ def self.configuration
16
+ @configuration ||= Configuration.new
17
+ end
18
+
19
+ def self.configure
20
+ yield(configuration)
21
+ end
22
+
23
+ def self.critical_log(message)
24
+ entry = write_log(message)
25
+ entry.critical!
26
+
27
+ configuration.logger.write_entries(entry)
28
+ end
29
+
30
+ def self.warning_log(message)
31
+ entry = write_log(message)
32
+ entry.warning!
33
+
34
+ configuration.logger.write_entries(entry)
35
+ end
36
+
37
+ def self.info_log(message)
38
+ entry = write_log(message)
39
+ entry.info!
40
+
41
+ configuration.logger.write_entries(entry)
42
+ end
43
+
44
+ def self.write_log(message)
45
+ entry = configuration.logger.entry
46
+ entry.payload = "#{message}\n #{message.backtrace.join("\n")}"
47
+ entry.log_name = "error"
48
+ entry.resource.type = "cloud_run_revision"
49
+ entry.resource.labels[:service_name] = "souls"
50
+ entry.resource.labels[:revision_name] = Souls::VERSION
51
+
52
+ entry
53
+ end
54
+ end
55
+ end
@@ -95,8 +95,7 @@ module Souls
95
95
  "roles/storage.admin",
96
96
  "roles/storage.objectAdmin",
97
97
  "roles/cloudscheduler.admin",
98
- "roles/appengine.appCreator",
99
- "roles/cloudscheduler.admin"
98
+ "roles/appengine.appCreator"
100
99
  ]
101
100
  roles.each do |role|
102
101
  add_service_account_role(role: role)
@@ -15,14 +15,44 @@ module Souls
15
15
  require("./app")
16
16
  Souls::Gcloud.new.config_set
17
17
  project_id = Souls.configuration.project_id
18
+
19
+ schedules_list = current_schedules
20
+
18
21
  Queries::BaseQuery.all_schedules.each do |k, v|
19
22
  worker_name = FileUtils.pwd.split("/").last
20
- job_name = "#{worker_name}_#{k.to_s.underscore}"
21
- system("gcloud scheduler jobs delete #{job_name} -q >/dev/null 2>&1")
22
- system(
23
- <<~COMMAND)
24
- gcloud scheduler jobs create pubsub #{job_name} --project=#{project_id} --quiet --schedule="#{v}" --topic="#{k}" --attributes="" --message-body="#{k}"
25
- COMMAND
23
+ job_name = "#{worker_name}_#{k.to_s.underscore}".to_sym
24
+
25
+ if schedules_list.include?(job_name)
26
+ schedule = schedules_list[job_name]
27
+ schedules_list.delete(job_name)
28
+ next if schedule == v
29
+
30
+ system(
31
+ <<~COMMAND)
32
+ gcloud scheduler jobs update pubsub #{job_name} --project=#{project_id} --quiet --schedule="#{v}" --topic="#{k}" --attributes="" --message-body="#{k}"
33
+ COMMAND
34
+ else
35
+ system(
36
+ <<~COMMAND)
37
+ gcloud scheduler jobs create pubsub #{job_name} --project=#{project_id} --quiet --schedule="#{v}" --topic="#{k}" --attributes="" --message-body="#{k}"
38
+ COMMAND
39
+ end
40
+ end
41
+
42
+ schedule_list.each do |k, _|
43
+ system("gcloud scheduler jobs delete #{k} -q >/dev/null 2>&1")
44
+ end
45
+ end
46
+
47
+ private
48
+
49
+ def current_schedules
50
+ current_schedules = {}
51
+ `gcloud scheduler jobs list`.split("\n")[1..].each do |line|
52
+ columns = line.split(/\t| {2,}/)
53
+ job_name = columns[0].to_sym
54
+ crontab = columns[2].split(" (")[0]
55
+ current_schedules[job_name] = crontab
26
56
  end
27
57
  end
28
58
  end
@@ -105,16 +105,38 @@ module Souls
105
105
  end
106
106
 
107
107
  desc "assgin_ip", "Add Current Grobal IP to White List"
108
- def assign_ip(instance_name: "", ip: "")
109
- ip = `curl inet-ip.info` if ip.blank?
110
- project_id = Souls.configuration.project_id if instance_name.blank?
111
- instance_name = Souls.configuration.instance_name if instance_name.blank?
108
+ method_option :ip, default: "", aliases: "--ip", desc: "Adding IP to Google Cloud SQL White List: e.g.'11.11.1.1'"
109
+ def assign_ip
110
+ project_id = Souls.configuration.project_id
111
+ instance_name = Souls.configuration.instance_name
112
+ ips = []
113
+ ip =
114
+ if options[:ip].blank?
115
+ `curl inet-ip.info`.strip
116
+ else
117
+ options[:ip].strip
118
+ end
119
+ ips << ip
120
+ cloud_sql = JSON.parse(
121
+ `curl -X GET \
122
+ -H "Authorization: Bearer "$(gcloud auth print-access-token) \
123
+ "https://sqladmin.googleapis.com/v1/projects/#{project_id}/instances/#{instance_name}?fields=settings"`
124
+ )
125
+ unless cloud_sql["settings"]["ipConfiguration"]["authorizedNetworks"].blank?
126
+ white_ips =
127
+ cloud_sql["settings"]["ipConfiguration"]["authorizedNetworks"].map do |sql_ips|
128
+ sql_ips["value"]
129
+ end
130
+ ips = (ips + white_ips).uniq
131
+ end
132
+ ips = ips.join(",")
112
133
  system(
113
134
  "
114
135
  gcloud sql instances patch #{instance_name} \
115
136
  --project=#{project_id} \
116
137
  --assign-ip \
117
- --authorized-networks=#{ip}
138
+ --authorized-networks=#{ips} \
139
+ --quiet
118
140
  "
119
141
  )
120
142
  end
@@ -2,6 +2,7 @@ module Souls
2
2
  class Sync < Thor
3
3
  desc "pubsub", "Sync Worker Jobs & Google Cloud Pubsub Subscriptions"
4
4
  def pubsub
5
+ get_worker_endpoints
5
6
  Souls::Gcloud.new.config_set
6
7
  get_topics(workers: get_workers)
7
8
  puts(Paint["All Jobs Synced with PubSub Subscription!", :green])
@@ -9,6 +10,17 @@ module Souls
9
10
 
10
11
  private
11
12
 
13
+ def get_worker_endpoints
14
+ require("#{Souls.get_mother_path}/config/souls")
15
+ worker_paths = Souls.configuration.workers
16
+ worker_paths.each do |worker|
17
+ endpoint = worker[:endpoint]
18
+ unless endpoint.include?("https://")
19
+ raise(StandardError, "You need to set endpoint.\nPlease Run:\n\n$ souls sync conf\n\n")
20
+ end
21
+ end
22
+ end
23
+
12
24
  def get_topics(workers: {})
13
25
  project_id = Souls.configuration.project_id
14
26
  pubsub = Google::Cloud::Pubsub.new(project_id: project_id)
data/lib/souls/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Souls
2
- VERSION = "1.9.11".freeze
2
+ VERSION = "1.9.12".freeze
3
3
  public_constant :VERSION
4
4
  end
@@ -1 +1 @@
1
- 1.9.11
1
+ 1.9.12
@@ -1 +1 @@
1
- 1.9.11
1
+ 1.9.12
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: souls
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.11
4
+ version: 1.9.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - POPPIN-FUMI
@@ -130,6 +130,7 @@ files:
130
130
  - lib/souls.rb
131
131
  - lib/souls/app/graphql/souls_query.rb
132
132
  - lib/souls/app/index.rb
133
+ - lib/souls/app/utils/souls_logger.rb
133
134
  - lib/souls/cli.rb
134
135
  - lib/souls/cli/cli_exception.rb
135
136
  - lib/souls/cli/console/index.rb