neetob 0.4.36 → 0.4.37

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: cc7d55afff189bc98e13d58a1a96a89f01023e0a0eb83dffa5598a323e1d317c
4
- data.tar.gz: 1ad0bea3cf5ae695af01e5a9c9fdeb9c2820511d6da6132af99e46a4f4a75736
3
+ metadata.gz: 3e95983505b4153e2c0a6d3e8f47a0834a7d30b6118b2a1ac66b7432a193d9f9
4
+ data.tar.gz: 5b078e19065bd0ba80486f61c2b65da0b6811126870c6f685bfa0e0626300776
5
5
  SHA512:
6
- metadata.gz: 7b85b5a9a2ac2473c2e809e434f49fd9253445355355fa337531cb248f5d7c4e7125ecf3aeee5b6bba080d195ac8e1cf90c531acbc115ebc7237675d08198b5c
7
- data.tar.gz: 581dd4f46150c3a5b7b3f3809e258b0fef7d9726de0d9fdd49ce5f05fe2a8821cb9b36ff99ca3ac81d074e49777bf8198c60de3043fd3e100f19d7388d9826e7
6
+ metadata.gz: 1ab1c2e8352768f18fea89d65627394d6a63b1dd4e6535b936546109d8aafe6681f06be1b98fca746e66026ec5a487227491dd96fea986d450090470c0147eed
7
+ data.tar.gz: ae3a389104f6debfd48165fbb2c49da890bb1ad490fbbd8c90e1ec00a3f9bc3a3e1442ef9e72e7fc1fa29b05a055a7a9e038b52ab1cb66226e4442e9094eb86c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- neetob (0.4.36)
4
+ neetob (0.4.37)
5
5
  brakeman (~> 5.0)
6
6
  chronic
7
7
  dotenv (~> 2.8.1)
@@ -126,8 +126,8 @@ GEM
126
126
  minitest (>= 5.1)
127
127
  mutex_m
128
128
  tzinfo (~> 2.0)
129
- addressable (2.8.6)
130
- public_suffix (>= 2.0.2, < 6.0)
129
+ addressable (2.8.7)
130
+ public_suffix (>= 2.0.2, < 7.0)
131
131
  ansi (1.5.0)
132
132
  ast (2.4.2)
133
133
  base64 (0.2.0)
@@ -221,10 +221,11 @@ GEM
221
221
  mixpanel-ruby (2.3.0)
222
222
  mocha (2.0.2)
223
223
  ruby2_keywords (>= 0.0.5)
224
- multi_xml (0.6.0)
224
+ multi_xml (0.7.1)
225
+ bigdecimal (~> 3.1)
225
226
  multipart-post (2.4.1)
226
227
  mutex_m (0.2.0)
227
- neetodeploy (1.1.5)
228
+ neetodeploy (1.1.6)
228
229
  colorize
229
230
  dotenv (~> 2.8.1)
230
231
  httparty (~> 0.21.0)
@@ -293,7 +294,7 @@ GEM
293
294
  method_source (~> 1.0)
294
295
  psych (5.1.2)
295
296
  stringio
296
- public_suffix (5.0.5)
297
+ public_suffix (6.0.0)
297
298
  pundit (2.3.2)
298
299
  activesupport (>= 3.0.0)
299
300
  raabro (1.4.0)
@@ -445,7 +446,7 @@ GEM
445
446
  crack (>= 0.3.2)
446
447
  hashdiff (>= 0.4.0, < 2.0.0)
447
448
  webrick (1.8.1)
448
- websocket (1.2.10)
449
+ websocket (1.2.11)
449
450
  websocket-client-simple (0.8.0)
450
451
  event_emitter
451
452
  websocket
@@ -129,5 +129,13 @@ module Neetob
129
129
  all_available_packages = NeetoCompliance::NeetoRepos.nanos_frontend
130
130
  match_apps(packages || ["*"], all_available_packages)
131
131
  end
132
+
133
+ def print_success(str)
134
+ "\u001b[32m#{str}\u001b[0m"
135
+ end
136
+
137
+ def print_failure(str)
138
+ "\u001b[31m#{str}\u001b[0m"
139
+ end
132
140
  end
133
141
  end
@@ -19,7 +19,10 @@ module Neetob
19
19
 
20
20
  url = create_url(zone_id, "settings/always_use_https")
21
21
  response = get(url)
22
- ui.info("Always use HTTPS is turned #{response[:result][:value]}")
22
+ always_use_https = response[:result][:value] == "on" ?
23
+ print_success(response[:result][:value]) :
24
+ print_failure(response[:result][:value])
25
+ ui.info("Always use HTTPS is turned #{always_use_https}")
23
26
  end
24
27
  end
25
28
  end
@@ -69,8 +69,6 @@ module Neetob
69
69
  "neetotestify.net": "1bbb5bf2ea04121c57a3690d2f40c5dc",
70
70
  "neetotower.com": "9175d2e1bb19735b9b22c101ac162d31",
71
71
  "neetotower.net": "10f9eba21876cd174952b830aba0ba71",
72
- "neetotrail.com": "5c88708910e51c140b5f4c8d02e648fe",
73
- "neetotrail.net": "317026e5fd62381767b1e351dab24bd4",
74
72
  "neetotribe.com": "45eb5b7d96820cf7c375dcdaf608d4c7",
75
73
  "neetotribe.net": "f49cb0229b1d67d228da7ab39a17dde3",
76
74
  "neetowireframe.com": "d6d17a3dab91dc0ca4b9f4f65b086ccc",
@@ -82,6 +80,8 @@ module Neetob
82
80
  end
83
81
 
84
82
  def process(*args)
83
+ raise(StandardError, "CLOUDFLARE_API_KEY is not given") if ENV["CLOUDFLARE_API_KEY"].nil?
84
+
85
85
  run(*args)
86
86
  end
87
87
 
@@ -19,7 +19,10 @@ module Neetob
19
19
 
20
20
  url = create_url(zone_id, "bot_management")
21
21
  response = get(url)
22
- ui.info("Bot fight mode is turned #{response[:result][:fight_mode] ? "on" : "off"}")
22
+ ui.info(
23
+ "Bot fight mode is turned #{response[:result][:fight_mode] ?
24
+ print_success("on") :
25
+ print_failure("off")}")
23
26
  end
24
27
  end
25
28
  end
@@ -5,7 +5,7 @@ require_relative "ssl_mode"
5
5
  require_relative "min_tls_version"
6
6
  require_relative "always_use_https"
7
7
  require_relative "dns_proxy_status"
8
- require_relative "ensure_cloudflare_cdn"
8
+ require_relative "ensure_cdn"
9
9
  require_relative "bot_fight_mode"
10
10
 
11
11
  module Neetob
@@ -36,10 +36,10 @@ module Neetob
36
36
  DnsProxyStatus.new(options[:domain]).process
37
37
  end
38
38
 
39
- desc "ensure_cloudflare_cdn", "Check if an app is using Cloudflare CDN. App name is the app name in NeetoDeploy (Example: neeto-replay-web-production)"
39
+ desc "ensure_cdn", "Check if an app is using Cloudflare CDN. App name is the app name in NeetoDeploy (Example: neeto-replay-web-production)"
40
40
  option :app, type: :string, aliases: "-a", required: true, description: "App name (neeto-replay-web)"
41
- def ensure_cloudflare_cdn
42
- EnsureCloudflareCdn.new(options[:app]).process
41
+ def ensure_cdn
42
+ EnsureCdn.new(options[:app]).process
43
43
  end
44
44
 
45
45
  desc "bot_fight_mode", "Check if a domain has bot fight mode turned on or not."
@@ -25,7 +25,7 @@ module Neetob
25
25
  response[:result].each do |record|
26
26
  if record[:proxiable]
27
27
  ui.info(
28
- "DNS proxy is turned #{record[:proxied] ? "on" : "off"} " \
28
+ "DNS proxy is turned #{record[:proxied] ? print_success("on") : print_failure("off")} " \
29
29
  "for #{record[:type]} record #{record[:name]}")
30
30
  end
31
31
  end
@@ -5,7 +5,7 @@ require_relative "base"
5
5
  module Neetob
6
6
  class CLI
7
7
  module Cloudflare
8
- class EnsureCloudflareCdn < Base
8
+ class EnsureCdn < Base
9
9
  attr_accessor :app
10
10
 
11
11
  def initialize(app)
@@ -19,7 +19,10 @@ module Neetob
19
19
 
20
20
  url = create_url(zone_id, "settings/min_tls_version")
21
21
  response = get(url)
22
- ui.info("Minimum TLS version is set to #{response[:result][:value]}")
22
+ tls_version = response[:result][:value] == "1.2" ?
23
+ print_success(response[:result][:value]) :
24
+ print_failure(response[:result][:value])
25
+ ui.info("Minimum TLS version is set to #{tls_version}")
23
26
  end
24
27
  end
25
28
  end
@@ -19,7 +19,10 @@ module Neetob
19
19
 
20
20
  url = create_url(zone_id, "settings/ssl")
21
21
  response = get(url)
22
- ui.info("SSL Mode is set to #{response[:result][:value]}")
22
+ ssl_mode = response[:result][:value] == "full" ?
23
+ print_success(response[:result][:value]) :
24
+ print_failure(response[:result][:value])
25
+ ui.info("SSL Mode is set to #{ssl_mode}")
23
26
  end
24
27
  end
25
28
  end
@@ -22,9 +22,9 @@ module Neetob
22
22
  url = create_url(app)
23
23
  response = get(url)
24
24
  if response.any? { |addon| addon[:addon_service][:name] == "judoscale" }
25
- ui.success("Judoscale addon is enabled for #{app}")
25
+ ui.success("Judoscale addon is #{print_success('enabled')} for #{app}")
26
26
  else
27
- ui.error("Judoscale not present for #{app}")
27
+ ui.error("Judoscale #{print_failure('not present')} for #{app}")
28
28
  end
29
29
  end
30
30
 
@@ -16,7 +16,6 @@ module Neetob
16
16
  "neeto-invoice-web-production",
17
17
  "neeto-form-web-production",
18
18
  "neeto-runner-web-production",
19
- "neeto-course-web-production",
20
19
  "neeto-deploy-web-production"
21
20
  ],
22
21
  "neetodeploy": [
@@ -29,6 +28,7 @@ module Neetob
29
28
  "neeto-form-web-staging",
30
29
  "neeto-runner-web-staging",
31
30
  "neeto-course-web-staging",
31
+ "neeto-course-web-production",
32
32
  "neeto-ci-web-production",
33
33
  "neeto-code-web-production",
34
34
  "neeto-code-web-staging",
@@ -52,16 +52,257 @@ module Neetob
52
52
  "neeto-testify-web-staging",
53
53
  "neeto-tower-web-production",
54
54
  "neeto-tower-web-staging",
55
- "neeto-trail-web-production",
56
- "neeto-trail-web-staging",
57
55
  "neeto-wireframe-web-production",
58
- "neeto-wireframe-web-staging"
56
+ "neeto-wireframe-web-staging",
57
+ "neeto-publish-web-staging",
58
+ "neeto-publish-web-production"
59
59
  ]
60
60
  }
61
61
 
62
+ RESOURCES = {
63
+ "NeetoChat": {
64
+ "staging": {
65
+ dns: "neetochat.net",
66
+ app: "neeto-chat-web-staging"
67
+ },
68
+ "production": {
69
+ dns: "neetochat.com",
70
+ app: "neeto-chat-web-production"
71
+ }
72
+ },
73
+ "NeetoAuth": {
74
+ "staging": {
75
+ dns: "neetoauth.net",
76
+ app: "neeto-auth-web-staging"
77
+ },
78
+ "production": {
79
+ dns: "neetoauth.com",
80
+ app: "neeto-auth-web-production"
81
+ }
82
+ },
83
+ "NeetoCal": {
84
+ "staging": {
85
+ dns: "neetocal.net",
86
+ app: "neeto-cal-web-staging"
87
+ },
88
+ "production": {
89
+ dns: "neetocal.com",
90
+ app: "neeto-cal-web-production"
91
+ }
92
+ },
93
+ "NeetoDesk": {
94
+ "staging": {
95
+ dns: "neetodesk.net",
96
+ app: "neeto-desk-web-staging"
97
+ },
98
+ "production": {
99
+ dns: "neetodesk.com",
100
+ app: "neeto-desk-web-production"
101
+ }
102
+ },
103
+ "NeetoKB": {
104
+ "staging": {
105
+ dns: "neetokb.net",
106
+ app: "neeto-kb-web-staging"
107
+ },
108
+ "production": {
109
+ dns: "neetokb.com",
110
+ app: "neeto-kb-web-production"
111
+ }
112
+ },
113
+ "NeetoInvoice": {
114
+ "staging": {
115
+ dns: "neetoinvoice.net",
116
+ app: "neeto-invoice-web-staging"
117
+ },
118
+ "production": {
119
+ dns: "neetoinvoice.com",
120
+ app: "neeto-invoice-web-production"
121
+ }
122
+ },
123
+ "NeetoForm": {
124
+ "staging": {
125
+ dns: "neetoform.net",
126
+ app: "neeto-form-web-staging"
127
+ },
128
+ "production": {
129
+ dns: "neetoform.com",
130
+ app: "neeto-form-web-production"
131
+ }
132
+ },
133
+ "NeetoRunner": {
134
+ "staging": {
135
+ dns: "neetorunner.net",
136
+ app: "neeto-runner-web-staging"
137
+ },
138
+ "production": {
139
+ dns: "neetorunner.com",
140
+ app: "neeto-runner-web-production"
141
+ }
142
+ },
143
+ "NeetoCourse": {
144
+ "staging": {
145
+ dns: "neetocourse.net",
146
+ app: "neeto-course-web-staging"
147
+ },
148
+ "production": {
149
+ dns: "neetocourse.com",
150
+ app: "neeto-course-web-production"
151
+ }
152
+ },
153
+ "NeetoDeploy": {
154
+ "production": {
155
+ dns: "neetodeploy.com",
156
+ app: "neeto-deploy-web-production"
157
+ }
158
+ },
159
+ "NeetoCi": {
160
+ "production": {
161
+ dns: "neetoci.com",
162
+ app: "neeto-ci-web-production"
163
+ }
164
+ },
165
+ "NeetoCode": {
166
+ "staging": {
167
+ dns: "neetocode.net",
168
+ app: "neeto-code-web-staging"
169
+ },
170
+ "production": {
171
+ dns: "neetocode.com",
172
+ app: "neeto-code-web-production"
173
+ }
174
+ },
175
+ "NeetoCrm": {
176
+ "staging": {
177
+ dns: "neetocrm.net",
178
+ app: "neeto-crm-web-staging"
179
+ },
180
+ "production": {
181
+ dns: "neetocrm.com",
182
+ app: "neeto-crm-web-production"
183
+ }
184
+ },
185
+ "NeetoGit": {
186
+ "staging": {
187
+ dns: "neetogit.net",
188
+ app: "neeto-git-web-staging"
189
+ },
190
+ "production": {
191
+ dns: "neetogit.com",
192
+ app: "neeto-git-web-production"
193
+ }
194
+ },
195
+ "NeetoInvisible": {
196
+ "staging": {
197
+ dns: "neetoinvisible.net",
198
+ app: "neeto-invisible-web-staging"
199
+ },
200
+ "production": {
201
+ dns: "neetoinvisible.com",
202
+ app: "neeto-invisible-web-production"
203
+ }
204
+ },
205
+ "NeetoPlanner": {
206
+ "staging": {
207
+ dns: "neetoplanner.net",
208
+ app: "neeto-planner-web-staging"
209
+ },
210
+ "production": {
211
+ dns: "neetoplanner.com",
212
+ app: "neeto-planner-web-production"
213
+ }
214
+ },
215
+ "NeetoPublish": {
216
+ "staging": {
217
+ dns: "neetopublish.net",
218
+ app: "neeto-publish-web-staging"
219
+ },
220
+ "production": {
221
+ dns: "neetopublish.com",
222
+ app: "neeto-publish-web-production"
223
+ }
224
+ },
225
+ "NeetoQuiz": {
226
+ "staging": {
227
+ dns: "neetoquiz.net",
228
+ app: "neeto-quiz-web-staging"
229
+ },
230
+ "production": {
231
+ dns: "neetoquiz.com",
232
+ app: "neeto-quiz-web-production"
233
+ }
234
+ },
235
+ "NeetoRecord": {
236
+ "staging": {
237
+ dns: "neetorecord.net",
238
+ app: "neeto-record-web-staging"
239
+ },
240
+ "production": {
241
+ dns: "neetorecord.com",
242
+ app: "neeto-record-web-production"
243
+ }
244
+ },
245
+ "NeetoReplay": {
246
+ "staging": {
247
+ dns: "neetoreplay.net",
248
+ app: "neeto-replay-web-staging"
249
+ },
250
+ "production": {
251
+ dns: "neetoreplay.com",
252
+ app: "neeto-replay-web-production"
253
+ }
254
+ },
255
+ "NeetoSite": {
256
+ "staging": {
257
+ dns: "neetosite.net",
258
+ app: "neeto-site-web-staging"
259
+ },
260
+ "production": {
261
+ dns: "neetosite.com",
262
+ app: "neeto-site-web-production"
263
+ }
264
+ },
265
+ "NeetoTestify": {
266
+ "staging": {
267
+ dns: "neetotestify.net",
268
+ app: "neeto-testify-web-staging"
269
+ },
270
+ "production": {
271
+ dns: "neetotestify.com",
272
+ app: "neeto-testify-web-production"
273
+ }
274
+ },
275
+ "NeetoTower": {
276
+ "staging": {
277
+ dns: "neetotower.net",
278
+ app: "neeto-tower-web-staging"
279
+ },
280
+ "production": {
281
+ dns: "neetotower.com",
282
+ app: "neeto-tower-web-production"
283
+ }
284
+ },
285
+ "NeetoWireframe": {
286
+ "staging": {
287
+ dns: "neetowireframe.net",
288
+ app: "neeto-wireframe-web-staging"
289
+ },
290
+ "production": {
291
+ dns: "neetowireframe.com",
292
+ app: "neeto-wireframe-web-production"
293
+ }
294
+ }
295
+ }
296
+
62
297
  def initialize
63
298
  super()
64
299
  end
300
+
301
+ private
302
+
303
+ def is_heroku(app_name)
304
+ APPS_LIST[:heroku].include?(app_name)
305
+ end
65
306
  end
66
307
  end
67
308
  end
@@ -17,26 +17,29 @@ module Neetob
17
17
  "YARN_CACHE",
18
18
  "YARN_PRODUCTION"
19
19
  ]
20
-
21
20
  REQUIRED_KEYS_HEROKU = [
22
21
  "HEROKU_APP_NAME"
23
22
  ]
24
-
25
23
  REQUIRED_KEYS_NEETODEPLOY = [
26
- "NODE_OPTIONS",
27
24
  "NEETODEPLOY_APP_NAME"
28
25
  ]
26
+ attr_reader :app
29
27
 
30
- def initialize
28
+ def initialize(app = nil)
31
29
  super()
30
+ @app = app
32
31
  end
33
32
 
34
33
  def run
35
- APPS_LIST[:heroku].each do |app|
36
- check_envs_heroku(app)
37
- end
38
- APPS_LIST[:neetodeploy].each do |app|
39
- check_envs_neetodeploy(app)
34
+ if app.nil?
35
+ APPS_LIST[:heroku].each do |app|
36
+ check_envs_heroku(app)
37
+ end
38
+ APPS_LIST[:neetodeploy].each do |app|
39
+ check_envs_neetodeploy(app)
40
+ end
41
+ else
42
+ is_heroku(app) ? check_envs_heroku(app) : check_envs_neetodeploy(app)
40
43
  end
41
44
  end
42
45
 
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "base"
4
+
5
+ module Neetob
6
+ class CLI
7
+ module Sre
8
+ class Checklist < Base
9
+ attr_accessor :app, :environment
10
+
11
+ def initialize(app, environment)
12
+ super()
13
+ @app = app
14
+ @environment = environment
15
+ end
16
+
17
+ def run
18
+ raise(StandardError, "Environment should be staging or production.") unless environments.include?(environment)
19
+
20
+ app_info = RESOURCES[app.to_sym][environment.to_sym]
21
+ domain = app_info[:dns]
22
+ app_name = app_info[:app]
23
+
24
+ ui.info "Validating the SRE checklist for #{app} in the #{environment} environment..."
25
+ ui.info "SSL mode"
26
+ ui.info `neetob cloudflare ssl_mode -d #{domain} | sed 's/^/ /'`
27
+ ui.info "Validating CDN"
28
+ ui.info `neetob cloudflare ensure_cdn -a #{app_name} | sed 's/^/ /'`
29
+ ui.info "DNS Proxy status"
30
+ ui.info `neetob cloudflare dns_proxy -d #{domain} | sed 's/^/ /'`
31
+ ui.info "Minimum TLS version"
32
+ ui.info `neetob cloudflare min_tls_version -d #{domain} | sed 's/^/ /'`
33
+ ui.info "HTTPS redirect"
34
+ ui.info `neetob cloudflare always_use_https -d #{domain} | sed 's/^/ /'`
35
+ ui.info "Bot fight mode"
36
+ ui.info `neetob cloudflare bot_fight_mode -d #{domain} | sed 's/^/ /'`
37
+ if is_heroku(app_name)
38
+ ui.info "Heroku maintenance time"
39
+ ui.info `neetob heroku maintenance_window -a #{app_name} | sed 's/^/ /'`
40
+ ui.info "Heroku stack"
41
+ ui.info `neetob heroku stack -a #{app_name} | sed 's/^/ /'`
42
+ ui.info "Heroku autoscaling enabled"
43
+ ui.info `neetob heroku autoscaling_config -a #{app_name} | sed 's/^/ /'`
44
+ else
45
+ ui.info "NeetoDeploy autoscaling status"
46
+ ui.info `neetodeploy autoscaling_config list -a #{app_name} | sed 's/^/ /'`
47
+ ui.info "Scheduled exports status"
48
+ ui.info `neetodeploy addon scheduled_exports_enabled -a #{app_name} | sed 's/^/ /'`
49
+ end
50
+ ui.info "Validating essential envs"
51
+ ui.info `neetob sre check_essential_env -a #{app_name} | sed 's/^/ /'`
52
+ end
53
+
54
+ private
55
+
56
+ def environments
57
+ ["staging", "production"]
58
+ end
59
+
60
+ def pretty_print(command)
61
+ ui.info `echo #{command} | sed 's/^/ /'`
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -3,14 +3,30 @@
3
3
  require "thor"
4
4
 
5
5
  require_relative "check_essential_env"
6
+ require_relative "checklist"
7
+ require_relative "report"
6
8
 
7
9
  module Neetob
8
10
  class CLI
9
11
  module Sre
10
12
  class Commands < Thor
11
- desc "check_essential_env", "Confirm whether essential environment variables are set for all Neeto apps"
13
+ desc "check_essential_env", "Validate essential envs for all Neeto apps or for a single app you specify"
14
+ option :app, type: :string, aliases: :a, desc: "App name for validating essential envs for a single app, ex: neeto-deploy-web-production"
12
15
  def check_essential_env
13
- CheckEssentialEnv.new.run
16
+ CheckEssentialEnv.new(options[:app]).run
17
+ end
18
+
19
+ desc "checklist", "Validate the Neeto SRE checklist for a single app"
20
+ option :app, type: :string, aliases: :a, desc: "App name, ex: NeetoChat", required: true
21
+ option :environment, type: :string, aliases: :e, desc: "Environment (staging/production)", required: true
22
+ def checklist
23
+ Checklist.new(options[:app], options[:environment]).run
24
+ end
25
+
26
+ desc "report", "Validate the Neeto SRE checklist for all apps"
27
+ option :environment, type: :string, aliases: :e, desc: "Environment (staging/production)", required: true
28
+ def report
29
+ Report.new(options[:environment]).run
14
30
  end
15
31
  end
16
32
  end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "base"
4
+
5
+ module Neetob
6
+ class CLI
7
+ module Sre
8
+ class Report < Base
9
+ attr_accessor :environment
10
+
11
+ def initialize(environment)
12
+ super()
13
+ @environment = environment
14
+ end
15
+
16
+ def run
17
+ raise(StandardError, "Environment should be staging or production.") unless environments.include?(environment)
18
+
19
+ RESOURCES.each do |product, values|
20
+ next if environment == "staging" && [:NeetoDeploy, :NeetoCi].include?(product)
21
+
22
+ ui.info "Processing for #{product}"
23
+ ui.info `neetob sre checklist -a #{product} -e #{environment}`
24
+ ui.info "\n\n"
25
+ end
26
+ end
27
+
28
+ private
29
+
30
+ def environments
31
+ ["staging", "production"]
32
+ end
33
+
34
+ def pretty_print(command)
35
+ ui.info `echo #{command} | sed 's/^/ /'`
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Neetob
4
- VERSION = "0.4.36"
4
+ VERSION = "0.4.37"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neetob
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.36
4
+ version: 0.4.37
5
5
  platform: ruby
6
6
  authors:
7
7
  - Udai Gupta
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-15 00:00:00.000000000 Z
11
+ date: 2024-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -176,7 +176,7 @@ files:
176
176
  - lib/neetob/cli/cloudflare/bot_fight_mode.rb
177
177
  - lib/neetob/cli/cloudflare/commands.rb
178
178
  - lib/neetob/cli/cloudflare/dns_proxy_status.rb
179
- - lib/neetob/cli/cloudflare/ensure_cloudflare_cdn.rb
179
+ - lib/neetob/cli/cloudflare/ensure_cdn.rb
180
180
  - lib/neetob/cli/cloudflare/min_tls_version.rb
181
181
  - lib/neetob/cli/cloudflare/ssl_mode.rb
182
182
  - lib/neetob/cli/code/audit.rb
@@ -233,7 +233,9 @@ files:
233
233
  - lib/neetob/cli/neeto_deploy/scheduled_exports.rb
234
234
  - lib/neetob/cli/sre/base.rb
235
235
  - lib/neetob/cli/sre/check_essential_env.rb
236
+ - lib/neetob/cli/sre/checklist.rb
236
237
  - lib/neetob/cli/sre/commands.rb
238
+ - lib/neetob/cli/sre/report.rb
237
239
  - lib/neetob/cli/sub_command_base.rb
238
240
  - lib/neetob/cli/ui.rb
239
241
  - lib/neetob/cli/users/audit.rb