souls 1.19.2 → 1.19.6

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: 7d34dd296dbaef9fa83496bd0852788632d5bab73be62f8f7d84c0744e375a22
4
- data.tar.gz: 81793aee8d0aaa76547323a6e3e45459886bcbd551f332b69025c020b3ff2388
3
+ metadata.gz: 0b5f7b94188e33045595ee50df3761dc486c786992aea9f803560f27500f4aae
4
+ data.tar.gz: 6d0659f46eb9ca1f9154c4cec5b97381cc04ca2f773b2bd1752eb82c0f6dac2e
5
5
  SHA512:
6
- metadata.gz: 385f0ad586025224e72bd16e9e189083dda45866de8a65354e8479968495867b5d7d42b06504e12de3716439b011536c02d5ac4771bda25420766cadc2085c17
7
- data.tar.gz: 83893626fca09f93ed3ac0ca9535da89e963e9a1de1e4a29b05272e096fd91a05f85c0e2a36dabc8ccadf63b60a1ffa15437ca39b83c56188edd8754f5269bb9
6
+ metadata.gz: 3ff3dcf7fa1cf290a4998ec3bf1428f2c4fc94973095e9d7a678ccd7b528fdbdaf5f8c5f58149784f97a0219467c992bc0ccbd75b989fefd428a88d0d248ec4a
7
+ data.tar.gz: 20e054999324d5d082544a4ca31e11bdde030aec3f664bf127df8a8912fbffa62864eb8ece8a701f75e0df37bf7126105438b44ef13c4d5ed4ab19836d85ab67
@@ -170,12 +170,12 @@ end
170
170
  bundle exec rake db:migrate RACK_ENV=test
171
171
  bundle exec rspec
172
172
 
173
- - name: Sync Tasks
174
- run: cd apps/#{worker_name} && souls gcloud scheduler sync_schedules --timezone=${{ secrets.TZ }}
175
-
176
173
  - name: Sync PubSub
177
174
  run: cd apps/#{worker_name} && souls sync pubsub
178
175
 
176
+ - name: Sync Tasks
177
+ run: cd apps/#{worker_name} && souls gcloud scheduler sync_schedules --timezone=${{ secrets.TZ }}
178
+
179
179
  - name: Configure Docker
180
180
  run: gcloud auth configure-docker --quiet
181
181
 
@@ -1,7 +1,6 @@
1
1
  module Template
2
2
  module Go
3
3
  def self.function(file_name)
4
- file_name.underscore.camelize
5
4
  <<~APP
6
5
  // Package p contains an HTTP Cloud Function.
7
6
  package p
@@ -17,7 +16,7 @@ module Template
17
16
 
18
17
  // HelloWorld prints the JSON encoded "message" field in the body
19
18
  // of the request or "Hello, World!" if there isn't one.
20
- func #{file_name}(w http.ResponseWriter, r *http.Request) {
19
+ func #{file_name.underscore.camelize}(w http.ResponseWriter, r *http.Request) {
21
20
  var d struct {
22
21
  Message string `json:"message"`
23
22
  }
@@ -1,7 +1,6 @@
1
1
  module Template
2
2
  module Nodejs
3
3
  def self.index(file_name)
4
- file_name.underscore.camelize(:lower)
5
4
  <<~APP
6
5
  const express = require('express');
7
6
  const bodyParser = require('body-parser');
@@ -20,7 +19,7 @@ module Template
20
19
  app.post('/souls-functions-post', (req, res)=>{
21
20
  res.json(req.body)
22
21
  });
23
- exports.#{file_name} = app;
22
+ exports.#{file_name.underscore.camelize(:lower)} = app;
24
23
  APP
25
24
  end
26
25
  end
@@ -1,9 +1,8 @@
1
1
  module Template
2
2
  module Python
3
3
  def self.main(file_name)
4
- file_name.underscore
5
4
  <<~APP
6
- def #{file_name}(request):
5
+ def #{file_name.underscore}(request):
7
6
  """Responds to any HTTP request.
8
7
  Args:
9
8
  request (flask.Request): HTTP request object.
@@ -2,23 +2,28 @@ module SOULs
2
2
  class Iam < Thor
3
3
  desc "setup_key", "Create Google Cloud IAM Service Account Key And Set All Permissions"
4
4
  def setup_key
5
- region = SOULs.configuration.region
6
- SOULs::Gcloud.new.auth_login
7
- SOULs::Upgrade.new.config
8
- create_service_account
9
- create_service_account_key
10
- SOULs::Gcloud.new.enable_permissions
11
- add_permissions
12
- begin
13
- system("gcloud app create --region=#{region} --quiet")
14
- rescue StandardError, error
15
- puts("gcloud app region is Already exist! - SOULs::Gcloud::Iam.setup_key")
16
- end
17
- begin
18
- set_gh_secret_json
19
- rescue StandardError
20
- export_key_to_console
5
+ Whirly.start(spinner: "clock", interval: 420, stop: "🎉") do
6
+ Whirly.status = "Setting up credentials and permissions..."
7
+ region = SOULs.configuration.region
8
+ SOULs::Gcloud.new.auth_login
9
+ SOULs::Upgrade.new.config
10
+ create_service_account
11
+ create_service_account_key
12
+ SOULs::Gcloud.new.enable_permissions
13
+ add_permissions
14
+ begin
15
+ system("gcloud app create --region=#{region} --quiet")
16
+ rescue StandardError, error
17
+ puts("gcloud app region is Already exist! - SOULs::Gcloud::Iam.setup_key")
18
+ end
19
+ begin
20
+ set_gh_secret_json
21
+ rescue StandardError
22
+ export_key_to_console
23
+ end
21
24
  end
25
+ SOULs::Painter.success("You're all set!")
26
+ true
22
27
  end
23
28
 
24
29
  private
@@ -62,6 +62,8 @@ module SOULs
62
62
  system("gcloud services enable cloudresourcemanager.googleapis.com")
63
63
  system("gcloud services enable translate.googleapis.com")
64
64
  system("gcloud services enable firestore.googleapis.com")
65
+ system("gcloud services enable cloudfunctions.googleapis.com")
66
+ system("gcloud services enable cloudbuild.googleapis.com")
65
67
  end
66
68
  end
67
69
  end
@@ -6,7 +6,6 @@ module SOULs
6
6
  def create_instance
7
7
  prompt = TTY::Prompt.new
8
8
  password = prompt.mask("Set DB PassWord:")
9
- app_name = SOULs.configuration.app
10
9
  project_id = SOULs.configuration.project_id
11
10
  instance_name = SOULs.configuration.instance_name
12
11
  region = SOULs.configuration.region if options[:region].blank?
@@ -20,43 +19,57 @@ module SOULs
20
19
  --database-version=#{db_type} --cpu=1 --memory=4096MB --zone=#{zone} \
21
20
  --root-password='#{password}' --database-flags cloudsql.iam_authentication=on"
22
21
  )
23
- instance_ip = `gcloud sql instances list | grep #{instance_name} | awk '{print $5}'`.strip
24
- Dir.chdir(SOULs.get_api_path.to_s) do
25
- file_path = ".env"
26
- File.open(file_path, "w") do |line|
27
- line.write(<<~TEXT)
28
- GOOGLE_AUTH_SUPPRESS_CREDENTIALS_WARNINGS=1
29
- SOULS_DB_HOST=#{instance_ip}
30
- SOULS_DB_PW=#{password}
31
- SOULS_DB_USER=postgres
32
- SOULS_GCP_PROJECT_ID=#{project_id}
33
- SOULS_SECRET_KEY_BASE='#{SecureRandom.base64(64)}'
34
- TZ="#{region_to_timezone(region: region)}"
35
- TEXT
36
- end
37
- end
38
- Dir.chdir(SOULs.get_mother_path.to_s) do
39
- file_path = ".env.production"
40
- File.open(file_path, "w") do |line|
41
- line.write(<<~TEXT)
42
- SOULS_DB_HOST="/cloudsql/#{project_id}:#{region}:#{instance_name}"
43
- SOULS_DB_PW=#{password}
44
- SOULS_DB_USER=postgres
45
- SOULS_APP_NAME=#{app_name}
46
- SOULS_GCP_PROJECT_ID=#{project_id}
47
- SOULS_GCP_REGION=#{region}
48
- SOULS_GCLOUDSQL_INSTANCE="#{project_id}:#{region}:#{instance_name}"
49
- SOULS_SECRET_KEY_BASE='#{SecureRandom.base64(64)}'
50
- TZ="#{region_to_timezone(region: region)}"
51
- TEXT
52
- end
53
- end
22
+ SOULs::Sql.new.env(password: password)
54
23
  SOULs::Github.new.secret_set
55
24
  Whirly.status = Paint["Cloud SQL #{instance_name} is successfully created! You can push to deploy!", :green]
56
25
  end
57
26
  true
58
27
  end
59
28
 
29
+ desc "env", "Generate .env.production file to deploy"
30
+ def env(password: "Password")
31
+ require(SOULs.get_mother_path.to_s + "/config/souls")
32
+ project_id = SOULs.configuration.project_id
33
+ instance_name = SOULs.configuration.instance_name
34
+ region = SOULs.configuration.region
35
+ app_name = SOULs.configuration.app
36
+ prompt = TTY::Prompt.new
37
+ db_password = password == "Password" ? prompt.mask("Set DB PassWord:") : password
38
+ instance_ip = `gcloud sql instances list --project=#{project_id} | grep #{instance_name} | awk '{print $5}'`.strip
39
+ Dir.chdir(SOULs.get_api_path.to_s) do
40
+ file_path = ".env"
41
+ File.open(file_path, "w") do |line|
42
+ line.write(<<~TEXT)
43
+ GOOGLE_AUTH_SUPPRESS_CREDENTIALS_WARNINGS=1
44
+ SOULS_DB_HOST=#{instance_ip}
45
+ SOULS_DB_PW=#{db_password}
46
+ SOULS_DB_USER=postgres
47
+ SOULS_GCP_PROJECT_ID=#{project_id}
48
+ SOULS_SECRET_KEY_BASE='#{SecureRandom.base64(64)}'
49
+ TZ="#{region_to_timezone(region: region)}"
50
+ TEXT
51
+ end
52
+ SOULs::Painter.create_file(file_path)
53
+ end
54
+ Dir.chdir(SOULs.get_mother_path.to_s) do
55
+ file_path = ".env.production"
56
+ File.open(file_path, "w") do |line|
57
+ line.write(<<~TEXT)
58
+ SOULS_DB_HOST="/cloudsql/#{project_id}:#{region}:#{instance_name}"
59
+ SOULS_DB_PW=#{db_password}
60
+ SOULS_DB_USER=postgres
61
+ SOULS_APP_NAME=#{app_name}
62
+ SOULS_GCP_PROJECT_ID=#{project_id}
63
+ SOULS_GCP_REGION=#{region}
64
+ SOULS_GCLOUDSQL_INSTANCE="#{project_id}:#{region}:#{instance_name}"
65
+ SOULS_SECRET_KEY_BASE='#{SecureRandom.base64(64)}'
66
+ TZ="#{region_to_timezone(region: region)}"
67
+ TEXT
68
+ end
69
+ SOULs::Painter.create_file(file_path)
70
+ end
71
+ end
72
+
60
73
  desc "list", "Show Cloud SQL Instances List"
61
74
  def list
62
75
  system("gcloud sql instances list")
@@ -111,6 +124,7 @@ module SOULs
111
124
  desc "assgin_ip", "Add Current Grobal IP to White List"
112
125
  method_option :ip, default: "", aliases: "--ip", desc: "Adding IP to Google Cloud SQL White List: e.g.'11.11.1.1'"
113
126
  def assign_ip
127
+ require(SOULs.get_mother_path.to_s + "/config/souls")
114
128
  project_id = SOULs.configuration.project_id
115
129
  instance_name = SOULs.configuration.instance_name
116
130
  ips = []
@@ -126,12 +140,15 @@ module SOULs
126
140
  -H "Authorization: Bearer "$(gcloud auth print-access-token) \
127
141
  "https://sqladmin.googleapis.com/v1/projects/#{project_id}/instances/#{instance_name}?fields=settings"`
128
142
  )
129
- unless cloud_sql["settings"]["ipConfiguration"]["authorizedNetworks"].blank?
143
+ begin
144
+ cloud_sql["settings"]["ipConfiguration"]["authorizedNetworks"].blank?
130
145
  white_ips =
131
146
  cloud_sql["settings"]["ipConfiguration"]["authorizedNetworks"].map do |sql_ips|
132
147
  sql_ips["value"]
133
148
  end
134
149
  ips = (ips + white_ips).uniq
150
+ rescue StandardError => e
151
+ puts(e)
135
152
  end
136
153
  ips = ips.join(",")
137
154
  Whirly.start(spinner: "clock", interval: 420, stop: "🎉") do
@@ -1,4 +1,3 @@
1
- require "google/cloud/pubsub"
2
1
  require_relative "./model"
3
2
  require_relative "./pubsub"
4
3
  require_relative "./conf"
@@ -10,7 +10,8 @@ module SOULs
10
10
  return false
11
11
  end
12
12
 
13
- url = `gcloud run services list |grep souls-#{project_id}-#{worker_name}| awk '{print $4}'`.strip
13
+ url = `gcloud run services list --platform=managed \
14
+ --project=#{project_id} |grep souls-#{project_id}-#{worker_name}| awk '{print $4}'`.strip
14
15
  return false if url.blank?
15
16
 
16
17
  worker_file_names = get_workers_file_paths
@@ -36,8 +37,9 @@ module SOULs
36
37
  souls_topics = topic_names.select { |n| n.include?("souls-#{worker_name}") }
37
38
 
38
39
  souls_topics.each do |name|
39
- value = workers[name.to_sym] || 0
40
- workers[name.to_sym] = value - 1
40
+ file_name = name.gsub("-", "_")
41
+ value = workers[file_name.to_sym] || 0
42
+ workers[file_name.to_sym] = value - 1
41
43
  end
42
44
 
43
45
  workers.each do |key, value|
@@ -56,7 +58,7 @@ module SOULs
56
58
  project_id = SOULs.configuration.project_id
57
59
  pubsub = Google::Cloud::Pubsub.new(project_id: project_id)
58
60
  topic = pubsub.create_topic(topic_id.to_s)
59
- puts("Topic #{topic.name} created.")
61
+ SOULs::Painter.success("Topic #{topic.name} created.")
60
62
  end
61
63
 
62
64
  def delete_topic(topic_id: "worker-mailer")
@@ -64,7 +66,7 @@ module SOULs
64
66
  pubsub = Google::Cloud::Pubsub.new(project_id: project_id)
65
67
  topic = pubsub.topic(topic_id.to_s)
66
68
  topic.delete
67
- puts("Topic #{topic_id} deleted.")
69
+ SOULs::Painter.error("Topic #{topic_id} deleted.")
68
70
  end
69
71
 
70
72
  def delete_subscription(topic_id: "worker-mailer")
@@ -78,7 +80,7 @@ module SOULs
78
80
  def create_push_subscription(worker_url:, topic_id: "worker-mailer")
79
81
  souls_endpoint = SOULs.configuration.endpoint
80
82
  subscription_id = "#{topic_id}-sub"
81
- endpoint = "#{worker_url}/#{souls_endpoint}"
83
+ endpoint = "#{worker_url}#{souls_endpoint}"
82
84
 
83
85
  project_id = SOULs.configuration.project_id
84
86
  pubsub = Google::Cloud::Pubsub.new(project_id: project_id)
@@ -86,7 +88,7 @@ module SOULs
86
88
  topic = pubsub.topic(topic_id)
87
89
  sub = topic.subscribe(subscription_id, endpoint: endpoint, deadline: 20)
88
90
  sub.expires_in = nil
89
- puts("Push subscription #{subscription_id} created.")
91
+ SOULs::Painter.success("Push subscription #{subscription_id} created.")
90
92
  end
91
93
 
92
94
  def get_workers_file_paths
data/lib/souls/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module SOULs
2
- VERSION = "1.19.2".freeze
2
+ VERSION = "1.19.6".freeze
3
3
  public_constant :VERSION
4
4
  end
@@ -1 +1 @@
1
- 1.19.2
1
+ 1.19.6
@@ -1 +1 @@
1
- 1.19.2
1
+ 1.19.6
data/lib/souls.rb CHANGED
@@ -9,6 +9,7 @@ require "whirly"
9
9
  require "tty-prompt"
10
10
  require "thor"
11
11
  require "resolv"
12
+ require "google/cloud/pubsub"
12
13
 
13
14
  module SOULs
14
15
  extend SOULs::Utils
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.19.2
4
+ version: 1.19.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - POPPIN-FUMI
@@ -124,6 +124,20 @@ dependencies:
124
124
  - - ">="
125
125
  - !ruby/object:Gem::Version
126
126
  version: 0.3.0
127
+ - !ruby/object:Gem::Dependency
128
+ name: httpclient
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: 2.8.3
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: 2.8.3
127
141
  - !ruby/object:Gem::Dependency
128
142
  name: thor
129
143
  requirement: !ruby/object:Gem::Requirement