govuk-connect 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/govuk_connect/cli.rb +47 -41
- data/lib/govuk_connect/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: caebe6cb74e7454207be9c5415c147d5afc710bc2767b3784a0a314cba233762
|
4
|
+
data.tar.gz: 11cddb0747edba0ccb1a96ba45cbc454a4a19f37ef46395bc057a9eb7814ec52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bec29749ec1eb4024f91bffd6147594796b165556f98b5bfcb9c2be4a0b983cd01681ae9e3938e54c75a0d344661a8dc3bf198d4d7a59040fc4108cd2e4af19f
|
7
|
+
data.tar.gz: 2cb2274d0ef354af3639b76d4b0464f5b9fe2c663805e21177f9fa8a82e41b7b932aad46ce020418f136da1149154617ebfd6a34c00a70a8d0ab2e06fe4768ca
|
data/lib/govuk_connect/cli.rb
CHANGED
@@ -75,10 +75,13 @@ class GovukConnect::CLI
|
|
75
75
|
"sidekiq-monitoring" => "Setup port forwarding to the Sidekiq Monitoring application.",
|
76
76
|
}.freeze
|
77
77
|
|
78
|
-
RABBITMQ_PORT =
|
78
|
+
RABBITMQ_PORT = 15_672
|
79
79
|
SIDEKIQ_MONITORING_PORT = 3211
|
80
80
|
|
81
81
|
JUMPBOXES = {
|
82
|
+
test: {
|
83
|
+
aws: "jumpbox.pink.test.govuk.digital",
|
84
|
+
},
|
82
85
|
ci: {
|
83
86
|
carrenza: "ci-jumpbox.integration.publishing.service.gov.uk",
|
84
87
|
},
|
@@ -96,7 +99,7 @@ class GovukConnect::CLI
|
|
96
99
|
}.freeze
|
97
100
|
|
98
101
|
def log(message)
|
99
|
-
warn message if
|
102
|
+
warn message if @verbose
|
100
103
|
end
|
101
104
|
|
102
105
|
def print_empty_line
|
@@ -125,10 +128,12 @@ class GovukConnect::CLI
|
|
125
128
|
costs[0] = i
|
126
129
|
nw = i - 1 # j == 0; nw is lev(i-1, j)
|
127
130
|
(1..string2.length).each do |j|
|
128
|
-
costs[j]
|
129
|
-
costs[j] + 1,
|
130
|
-
|
131
|
-
|
131
|
+
costs[j] = [
|
132
|
+
costs[j] + 1,
|
133
|
+
costs[j - 1] + 1,
|
134
|
+
string1[i - 1] == string2[j - 1] ? nw : nw + 1,
|
135
|
+
].min
|
136
|
+
nw = costs[j]
|
132
137
|
end
|
133
138
|
end
|
134
139
|
costs[string2.length]
|
@@ -176,7 +181,7 @@ class GovukConnect::CLI
|
|
176
181
|
tries = 0
|
177
182
|
|
178
183
|
while tries <= 10
|
179
|
-
port = rand(
|
184
|
+
port = rand(32_768...61_000)
|
180
185
|
|
181
186
|
return port if port_free? port
|
182
187
|
|
@@ -228,7 +233,7 @@ class GovukConnect::CLI
|
|
228
233
|
def ssh_username
|
229
234
|
@ssh_username ||= begin
|
230
235
|
if File.exist? config_file
|
231
|
-
config_ssh_username = YAML
|
236
|
+
config_ssh_username = YAML.load_file(config_file)["ssh_username"]
|
232
237
|
end
|
233
238
|
|
234
239
|
config_ssh_username || ENV["USER"]
|
@@ -237,7 +242,7 @@ class GovukConnect::CLI
|
|
237
242
|
|
238
243
|
def ssh_identity_file
|
239
244
|
@ssh_identity_file ||= begin
|
240
|
-
YAML
|
245
|
+
YAML.load_file(config_file)["ssh_identity_file"] if File.exist? config_file
|
241
246
|
end
|
242
247
|
end
|
243
248
|
|
@@ -257,13 +262,14 @@ class GovukConnect::CLI
|
|
257
262
|
log "debug: looking up classes in #{hosting}/#{environment}"
|
258
263
|
command = [
|
259
264
|
"ssh",
|
260
|
-
"-o",
|
265
|
+
"-o",
|
266
|
+
"ConnectTimeout=2", # Show a failure quickly
|
261
267
|
*ssh_identity_arguments,
|
262
268
|
user_at_host(
|
263
269
|
ssh_username,
|
264
270
|
jumpbox_for_environment_and_hosting(environment, hosting),
|
265
271
|
),
|
266
|
-
"govuk_node_list --classes"
|
272
|
+
"govuk_node_list --classes",
|
267
273
|
].join(" ")
|
268
274
|
|
269
275
|
log "debug: running command: #{command}"
|
@@ -287,13 +293,14 @@ class GovukConnect::CLI
|
|
287
293
|
def get_domains_for_node_class(target, environment, hosting, ssh_username)
|
288
294
|
command = [
|
289
295
|
"ssh",
|
290
|
-
"-o",
|
296
|
+
"-o",
|
297
|
+
"ConnectTimeout=2", # Show a failure quickly
|
291
298
|
*ssh_identity_arguments,
|
292
299
|
user_at_host(
|
293
300
|
ssh_username,
|
294
301
|
jumpbox_for_environment_and_hosting(environment, hosting),
|
295
302
|
),
|
296
|
-
"govuk_node_list -c #{target}"
|
303
|
+
"govuk_node_list -c #{target}",
|
297
304
|
].join(" ")
|
298
305
|
|
299
306
|
output, status = Open3.capture2(command)
|
@@ -327,12 +334,12 @@ class GovukConnect::CLI
|
|
327
334
|
hieradata_file = File.join(local_hieradata_root, "#{environment}.yaml")
|
328
335
|
log "debug: reading #{hieradata_file}"
|
329
336
|
|
330
|
-
environment_specific_hieradata = YAML
|
337
|
+
environment_specific_hieradata = YAML.load_file(hieradata_file)
|
331
338
|
|
332
339
|
if environment_specific_hieradata["node_class"]
|
333
340
|
environment_specific_hieradata["node_class"]
|
334
341
|
else
|
335
|
-
common_hieradata = YAML
|
342
|
+
common_hieradata = YAML.load_file(
|
336
343
|
File.join(local_hieradata_root, "common.yaml"),
|
337
344
|
)
|
338
345
|
|
@@ -511,7 +518,7 @@ class GovukConnect::CLI
|
|
511
518
|
app_name,
|
512
519
|
environment,
|
513
520
|
hosting,
|
514
|
-
|
521
|
+
)
|
515
522
|
|
516
523
|
unless node_class
|
517
524
|
error "error: application '#{app_name}' not found."
|
@@ -551,11 +558,11 @@ class GovukConnect::CLI
|
|
551
558
|
|
552
559
|
def ssh(
|
553
560
|
target,
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
561
|
+
environment,
|
562
|
+
command: false,
|
563
|
+
port_forward: false,
|
564
|
+
additional_arguments: []
|
565
|
+
)
|
559
566
|
log "debug: ssh to #{target} in #{environment}"
|
560
567
|
|
561
568
|
# Split something like aws/backend:2 in to :aws, 'backend', 2
|
@@ -627,14 +634,15 @@ class GovukConnect::CLI
|
|
627
634
|
ssh_command = [
|
628
635
|
"ssh",
|
629
636
|
*ssh_identity_arguments,
|
630
|
-
"-J",
|
637
|
+
"-J",
|
638
|
+
user_at_host(
|
631
639
|
ssh_username,
|
632
640
|
jumpbox_for_environment_and_hosting(environment, hosting),
|
633
641
|
),
|
634
642
|
user_at_host(
|
635
643
|
ssh_username,
|
636
644
|
ssh_target,
|
637
|
-
)
|
645
|
+
),
|
638
646
|
]
|
639
647
|
|
640
648
|
if command
|
@@ -647,7 +655,8 @@ class GovukConnect::CLI
|
|
647
655
|
|
648
656
|
ssh_command += [
|
649
657
|
"-N",
|
650
|
-
"-L",
|
658
|
+
"-L",
|
659
|
+
"#{localhost_port}:127.0.0.1:#{port_forward}",
|
651
660
|
]
|
652
661
|
|
653
662
|
info "Port forwarding setup, access:\n\n http://127.0.0.1:#{localhost_port}/\n\n"
|
@@ -679,14 +688,14 @@ class GovukConnect::CLI
|
|
679
688
|
uri = URI(url)
|
680
689
|
|
681
690
|
host_to_hosting_and_environment = {
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
691
|
+
"ci-alert.integration.publishing.service.gov.uk" => %i[carrenza ci],
|
692
|
+
"alert.integration.publishing.service.gov.uk" => %i[aws integration],
|
693
|
+
"alert.staging.govuk.digital" => %i[aws staging],
|
694
|
+
"alert.blue.staging.govuk.digital" => %i[aws staging],
|
695
|
+
"alert.staging.publishing.service.gov.uk" => %i[carrenza staging],
|
696
|
+
"alert.production.govuk.digital" => %i[aws production],
|
697
|
+
"alert.blue.production.govuk.digital" => %i[aws production],
|
698
|
+
"alert.publishing.service.gov.uk" => %i[carrenza production],
|
690
699
|
}
|
691
700
|
|
692
701
|
unless host_to_hosting_and_environment.key? uri.host
|
@@ -699,8 +708,6 @@ class GovukConnect::CLI
|
|
699
708
|
|
700
709
|
def parse_options(argv)
|
701
710
|
options = {}
|
702
|
-
|
703
|
-
# rubocop:disable Metrics/BlockLength
|
704
711
|
@option_parser = OptionParser.new do |opts|
|
705
712
|
opts.banner = USAGE_BANNER
|
706
713
|
|
@@ -723,7 +730,7 @@ class GovukConnect::CLI
|
|
723
730
|
options[:port_forward] = o
|
724
731
|
end
|
725
732
|
opts.on("-v", "--verbose", "Enable more detailed logging") do
|
726
|
-
|
733
|
+
@verbose = true
|
727
734
|
end
|
728
735
|
|
729
736
|
opts.on("-h", "--help", "Prints usage information and examples") do
|
@@ -751,7 +758,6 @@ class GovukConnect::CLI
|
|
751
758
|
exit
|
752
759
|
end
|
753
760
|
end
|
754
|
-
# rubocop:enable Metrics/BlockLength
|
755
761
|
|
756
762
|
@option_parser.parse!(argv)
|
757
763
|
|
@@ -842,19 +848,19 @@ class GovukConnect::CLI
|
|
842
848
|
|
843
849
|
def types
|
844
850
|
@types ||= {
|
845
|
-
"app-console" =>
|
851
|
+
"app-console" => proc do |target, environment, args, _options|
|
846
852
|
check_for_target(target)
|
847
853
|
check_for_additional_arguments("app-console", args)
|
848
854
|
govuk_app_command(target, environment, "console")
|
849
855
|
end,
|
850
856
|
|
851
|
-
"app-dbconsole" =>
|
857
|
+
"app-dbconsole" => proc do |target, environment, args, _options|
|
852
858
|
check_for_target(target)
|
853
859
|
check_for_additional_arguments("app-dbconsole", args)
|
854
860
|
govuk_app_command(target, environment, "dbconsole")
|
855
861
|
end,
|
856
862
|
|
857
|
-
"rabbitmq" =>
|
863
|
+
"rabbitmq" => proc do |target, environment, args, _options|
|
858
864
|
check_for_additional_arguments("rabbitmq", args)
|
859
865
|
|
860
866
|
target ||= "rabbitmq"
|
@@ -876,7 +882,7 @@ class GovukConnect::CLI
|
|
876
882
|
)
|
877
883
|
end,
|
878
884
|
|
879
|
-
"sidekiq-monitoring" =>
|
885
|
+
"sidekiq-monitoring" => proc do |target, environment, args, _options|
|
880
886
|
check_for_additional_arguments("sidekiq-monitoring", args)
|
881
887
|
ssh(
|
882
888
|
target || "backend",
|
@@ -885,7 +891,7 @@ class GovukConnect::CLI
|
|
885
891
|
)
|
886
892
|
end,
|
887
893
|
|
888
|
-
"ssh" =>
|
894
|
+
"ssh" => proc do |target, environment, args, options|
|
889
895
|
check_for_target(target)
|
890
896
|
|
891
897
|
if options.key? :hosting
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk-connect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Government Digital Service
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: climate_control
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 3.
|
61
|
+
version: 3.16.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 3.
|
68
|
+
version: 3.16.0
|
69
69
|
description: Command line tool to connect to GOV.UK infrastructure
|
70
70
|
email:
|
71
71
|
- govuk-dev@digital.cabinet-office.gov.uk
|
@@ -82,7 +82,7 @@ homepage: https://github.com/alphagov/govuk-connect
|
|
82
82
|
licenses:
|
83
83
|
- MIT
|
84
84
|
metadata: {}
|
85
|
-
post_install_message:
|
85
|
+
post_install_message:
|
86
86
|
rdoc_options: []
|
87
87
|
require_paths:
|
88
88
|
- lib
|
@@ -98,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
98
|
version: '0'
|
99
99
|
requirements: []
|
100
100
|
rubygems_version: 3.0.3
|
101
|
-
signing_key:
|
101
|
+
signing_key:
|
102
102
|
specification_version: 4
|
103
103
|
summary: govuk-connect command line tool
|
104
104
|
test_files: []
|