vcloud-edge_gateway 0.5.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/.travis.yml +0 -3
- data/CHANGELOG.md +30 -0
- data/CONTRIBUTING.md +66 -0
- data/README.md +16 -8
- data/Rakefile +1 -1
- data/bin/vcloud-configure-edge +2 -29
- data/bin/vcloud-edge-configure +5 -0
- data/jenkins.sh +7 -0
- data/jenkins_integration_tests.sh +7 -0
- data/lib/vcloud/edge_gateway/cli.rb +137 -0
- data/lib/vcloud/edge_gateway/configuration_differ.rb +2 -1
- data/lib/vcloud/edge_gateway/configure.rb +9 -5
- data/lib/vcloud/edge_gateway/edge_gateway_configuration.rb +36 -30
- data/lib/vcloud/edge_gateway/version.rb +1 -1
- data/lib/vcloud/edge_gateway.rb +1 -0
- data/spec/integration/README.md +38 -0
- data/spec/integration/edge_gateway/{firewall_service_spec.rb → configure_firewall_spec.rb} +14 -43
- data/spec/integration/edge_gateway/{load_balancer_service_spec.rb → configure_load_balancer_spec.rb} +26 -32
- data/spec/integration/edge_gateway/{nat_service_spec.rb → configure_nat_spec.rb} +32 -44
- data/spec/integration/edge_gateway/{edge_gateway_services_spec.rb → configure_services_spec.rb} +26 -28
- data/spec/integration/vcloud_tools_testing_config.yaml.template +8 -0
- data/spec/spec_helper.rb +26 -15
- data/spec/support/integration_helper.rb +8 -20
- data/spec/vcloud/edge_gateway/cli_spec.rb +221 -0
- data/spec/vcloud/edge_gateway/configure_spec.rb +81 -0
- data/spec/vcloud/edge_gateway/edge_gateway_configuration_spec.rb +75 -0
- data/vcloud-edge_gateway.gemspec +3 -1
- metadata +59 -15
@@ -0,0 +1,221 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class CommandRun
|
4
|
+
attr_accessor :stdout, :stderr, :exitstatus
|
5
|
+
|
6
|
+
def initialize(args)
|
7
|
+
out = StringIO.new
|
8
|
+
err = StringIO.new
|
9
|
+
|
10
|
+
$stdout = out
|
11
|
+
$stderr = err
|
12
|
+
|
13
|
+
begin
|
14
|
+
Vcloud::EdgeGateway::Cli.new(args).run
|
15
|
+
@exitstatus = 0
|
16
|
+
rescue SystemExit => e
|
17
|
+
# Capture exit(n) value.
|
18
|
+
@exitstatus = e.status
|
19
|
+
end
|
20
|
+
|
21
|
+
@stdout = out.string.strip
|
22
|
+
@stderr = err.string.strip
|
23
|
+
|
24
|
+
$stdout = STDOUT
|
25
|
+
$stderr = STDERR
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe Vcloud::EdgeGateway::Cli do
|
30
|
+
subject { CommandRun.new(args) }
|
31
|
+
|
32
|
+
describe "normal usage" do
|
33
|
+
let(:mock_configure) {
|
34
|
+
double(:configure, :update => {})
|
35
|
+
}
|
36
|
+
|
37
|
+
context "when given a single config file" do
|
38
|
+
let(:args) { %w{config.yaml} }
|
39
|
+
|
40
|
+
it "should pass single argument, call update without any args, and exit normally" do
|
41
|
+
expect(Vcloud::EdgeGateway::Configure).to receive(:new).
|
42
|
+
with('config.yaml').and_return(mock_configure)
|
43
|
+
expect(mock_configure).to receive(:update).with(no_args)
|
44
|
+
expect(subject.exitstatus).to eq(0)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context "when given --template-vars and config file" do
|
49
|
+
let(:args) { %w{--template-vars vars.yaml config.yaml} }
|
50
|
+
|
51
|
+
it "should pass two arguments and exit normally" do
|
52
|
+
expect(Vcloud::EdgeGateway::Configure).to receive(:new).
|
53
|
+
with('config.yaml', 'vars.yaml').and_return(mock_configure)
|
54
|
+
expect(mock_configure).to receive(:update)
|
55
|
+
expect(subject.exitstatus).to eq(0)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context "when given --dry-run and config file" do
|
60
|
+
let(:args) { %w{--dry-run config.yaml} }
|
61
|
+
|
62
|
+
it "should call update(true) and exit normally" do
|
63
|
+
expect(Vcloud::EdgeGateway::Configure).to receive(:new).
|
64
|
+
with('config.yaml').and_return(mock_configure)
|
65
|
+
expect(mock_configure).to receive(:update).with(true)
|
66
|
+
expect(subject.exitstatus).to eq(0)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context "when asked to display version" do
|
71
|
+
let(:args) { %w{--version} }
|
72
|
+
|
73
|
+
it "should not call Configure" do
|
74
|
+
expect(Vcloud::EdgeGateway::Configure).not_to receive(:new)
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should print version and exit normally" do
|
78
|
+
expect(subject.stdout).to eq(Vcloud::EdgeGateway::VERSION)
|
79
|
+
expect(subject.exitstatus).to eq(0)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context "when asked to display help" do
|
84
|
+
let(:args) { %w{--help} }
|
85
|
+
|
86
|
+
it "should not call Configure" do
|
87
|
+
expect(Vcloud::EdgeGateway::Configure).not_to receive(:new)
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should print usage and exit normally" do
|
91
|
+
expect(subject.stderr).to match(/\AUsage: \S+ \[options\] config_file\n/)
|
92
|
+
expect(subject.exitstatus).to eq(0)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "diff output" do
|
98
|
+
shared_examples "diff with stdout contents" do |expected_stdout|
|
99
|
+
it "should output diff to stdout" do
|
100
|
+
expect(Vcloud::EdgeGateway::Configure).to receive(:new).
|
101
|
+
with('config.yaml').and_return(mock_configure)
|
102
|
+
expect(subject.stdout).to eq(expected_stdout.chomp)
|
103
|
+
expect(subject.exitstatus).to eq(0)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
context "when diff is empty" do
|
108
|
+
let(:mock_configure) {
|
109
|
+
double(:configure, :update => {})
|
110
|
+
}
|
111
|
+
|
112
|
+
context "when given config (colour doesn't matter)" do
|
113
|
+
let(:args) { %w{config.yaml} }
|
114
|
+
|
115
|
+
it_behaves_like "diff with stdout contents", ""
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
context "when diff contains two services with three types of changes" do
|
120
|
+
shared_examples "diff with colour output" do
|
121
|
+
include_examples "diff with stdout contents", <<-EOS.chomp
|
122
|
+
\033[31m- FirewallService.IsEnabled: true\033[0m
|
123
|
+
\033[32m+ FirewallService.LogDefaultAction: false\033[0m
|
124
|
+
\033[31m- NatService.IsEnabled: true\033[0m
|
125
|
+
\033[32m+ NatService.IsEnabled: false\033[0m
|
126
|
+
EOS
|
127
|
+
end
|
128
|
+
|
129
|
+
shared_examples "diff without colour output" do
|
130
|
+
include_examples "diff with stdout contents", <<-EOS.chomp
|
131
|
+
- FirewallService.IsEnabled: true
|
132
|
+
+ FirewallService.LogDefaultAction: false
|
133
|
+
- NatService.IsEnabled: true
|
134
|
+
+ NatService.IsEnabled: false
|
135
|
+
EOS
|
136
|
+
end
|
137
|
+
|
138
|
+
let(:mock_configure) {
|
139
|
+
double(:configure, :update => {
|
140
|
+
:FirewallService => [
|
141
|
+
["-", "IsEnabled", "true"],
|
142
|
+
["+", "LogDefaultAction", "false"],
|
143
|
+
],
|
144
|
+
:NatService => [
|
145
|
+
["~", "IsEnabled", "true", "false"],
|
146
|
+
],
|
147
|
+
})
|
148
|
+
}
|
149
|
+
|
150
|
+
context "STDOUT is not redirected" do
|
151
|
+
before(:each) {
|
152
|
+
STDOUT.stub(:tty?).and_return(true)
|
153
|
+
}
|
154
|
+
|
155
|
+
context "when colour argument is not specified" do
|
156
|
+
let(:args) { %w{config.yaml} }
|
157
|
+
|
158
|
+
it_behaves_like "diff with colour output"
|
159
|
+
end
|
160
|
+
|
161
|
+
context "when given --no-colour" do
|
162
|
+
let(:args) { %w{--no-colour config.yaml} }
|
163
|
+
|
164
|
+
it_behaves_like "diff without colour output"
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
context "STDOUT is redirected" do
|
169
|
+
before(:each) {
|
170
|
+
STDOUT.stub(:tty?).and_return(false)
|
171
|
+
}
|
172
|
+
|
173
|
+
context "when colour argument is not specified" do
|
174
|
+
let(:args) { %w{config.yaml} }
|
175
|
+
|
176
|
+
it_behaves_like "diff without colour output"
|
177
|
+
end
|
178
|
+
|
179
|
+
context "when given --colour" do
|
180
|
+
let(:args) { %w{--colour config.yaml} }
|
181
|
+
|
182
|
+
it_behaves_like "diff with colour output"
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
describe "incorrect usage" do
|
189
|
+
shared_examples "print usage and exit abnormally" do |error|
|
190
|
+
it "should not call Configure" do
|
191
|
+
expect(Vcloud::EdgeGateway::Configure).not_to receive(:new)
|
192
|
+
end
|
193
|
+
|
194
|
+
it "should print error message and usage" do
|
195
|
+
expect(subject.stderr).to match(/\A\S+: #{error}\nUsage: \S+/)
|
196
|
+
end
|
197
|
+
|
198
|
+
it "should exit abnormally for incorrect usage" do
|
199
|
+
expect(subject.exitstatus).to eq(2)
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
context "when run without any arguments" do
|
204
|
+
let(:args) { %w{} }
|
205
|
+
|
206
|
+
it_behaves_like "print usage and exit abnormally", "must supply config_file"
|
207
|
+
end
|
208
|
+
|
209
|
+
context "when given a multiple config files" do
|
210
|
+
let(:args) { %w{one.yaml two.yaml} }
|
211
|
+
|
212
|
+
it_behaves_like "print usage and exit abnormally", "must supply config_file"
|
213
|
+
end
|
214
|
+
|
215
|
+
context "when given an unrecognised argument" do
|
216
|
+
let(:args) { %w{--this-is-garbage} }
|
217
|
+
|
218
|
+
it_behaves_like "print usage and exit abnormally", "invalid option: --this-is-garbage"
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Vcloud::EdgeGateway::Configure do
|
4
|
+
describe 'dry_run' do
|
5
|
+
let(:expected_log_message) {
|
6
|
+
/: Dry run\. Skipping\.$/
|
7
|
+
}
|
8
|
+
let(:mock_edgegateway) {
|
9
|
+
double(:edgegateway,
|
10
|
+
:interfaces => 'chocolate cake',
|
11
|
+
:vcloud_attributes => {
|
12
|
+
:Configuration => {
|
13
|
+
:EdgeGatewayServiceConfiguration => 'ice cream cone',
|
14
|
+
}
|
15
|
+
}
|
16
|
+
)
|
17
|
+
}
|
18
|
+
|
19
|
+
before(:each) {
|
20
|
+
Vcloud::Core::EdgeGateway.stub(:get_by_name).and_return(mock_edgegateway)
|
21
|
+
|
22
|
+
mock_configloader = double(:configloader,
|
23
|
+
:load_config => { :gateway => 'pickle' }
|
24
|
+
)
|
25
|
+
Vcloud::Core::ConfigLoader.stub(:new).and_return(mock_configloader)
|
26
|
+
|
27
|
+
mock_configuration = double(:configuration,
|
28
|
+
:update_required? => true,
|
29
|
+
:config => 'slice of swiss cheese',
|
30
|
+
:diff => ['slice of salami'],
|
31
|
+
)
|
32
|
+
Vcloud::EdgeGateway::EdgeGatewayConfiguration.stub(:new).and_return(mock_configuration)
|
33
|
+
}
|
34
|
+
|
35
|
+
context "when false (default)" do
|
36
|
+
let(:subject) {
|
37
|
+
Vcloud::EdgeGateway::Configure.new('lollipop.yaml').update
|
38
|
+
}
|
39
|
+
|
40
|
+
it "should call update_configuration" do
|
41
|
+
expect(mock_edgegateway).to receive(:update_configuration).with('slice of swiss cheese')
|
42
|
+
subject
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should not log message about dry run" do
|
46
|
+
mock_edgegateway.stub(:update_configuration)
|
47
|
+
expect(Vcloud::Core.logger).not_to receive(:info).with(expected_log_message)
|
48
|
+
subject
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should return diff" do
|
52
|
+
mock_edgegateway.stub(:update_configuration)
|
53
|
+
expect(subject).to eq(['slice of salami'])
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context "when true" do
|
58
|
+
let(:subject) {
|
59
|
+
Vcloud::EdgeGateway::Configure.new('lollipop.yaml').update(true)
|
60
|
+
}
|
61
|
+
|
62
|
+
it "should not call update_configuration" do
|
63
|
+
Vcloud::Core.logger.stub(:info)
|
64
|
+
expect(mock_edgegateway).not_to receive(:update_configuration)
|
65
|
+
subject
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should log message about dry run" do
|
69
|
+
mock_edgegateway.stub(:update_configuration)
|
70
|
+
expect(Vcloud::Core.logger).to receive(:info).with(expected_log_message)
|
71
|
+
subject
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should return diff" do
|
75
|
+
Vcloud::Core.logger.stub(:info)
|
76
|
+
mock_edgegateway.stub(:update_configuration)
|
77
|
+
expect(subject).to eq(['slice of salami'])
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -83,6 +83,14 @@ module Vcloud
|
|
83
83
|
expect(proposed_load_balancer_config).to eq(expected_load_balancer_config)
|
84
84
|
end
|
85
85
|
|
86
|
+
it "proposed diff contains changes for all services" do
|
87
|
+
diff = @proposed_config.diff
|
88
|
+
expect(diff.keys).to eq([:FirewallService, :NatService, :LoadBalancerService])
|
89
|
+
expect(diff[:FirewallService]).to have_at_least(1).items
|
90
|
+
expect(diff[:NatService]).to have_at_least(1).items
|
91
|
+
expect(diff[:LoadBalancerService]).to have_at_least(1).items
|
92
|
+
end
|
93
|
+
|
86
94
|
end
|
87
95
|
|
88
96
|
context "firewall config has changed and nat has not, load_balancer absent" do
|
@@ -121,6 +129,12 @@ module Vcloud
|
|
121
129
|
expect(@proposed_config.config.key?(:LoadBalancerService)).to be(false)
|
122
130
|
end
|
123
131
|
|
132
|
+
it "proposed diff contains changes for firewall service" do
|
133
|
+
diff = @proposed_config.diff
|
134
|
+
expect(diff.keys).to eq([:FirewallService])
|
135
|
+
expect(diff[:FirewallService]).to have_at_least(1).items
|
136
|
+
end
|
137
|
+
|
124
138
|
end
|
125
139
|
|
126
140
|
context "firewall config has changed and nat & load_balancer configs are absent" do
|
@@ -159,6 +173,12 @@ module Vcloud
|
|
159
173
|
expect(@proposed_config.config.key?(:LoadBalancerService)).to be(false)
|
160
174
|
end
|
161
175
|
|
176
|
+
it "proposed diff contains changes for firewall service" do
|
177
|
+
diff = @proposed_config.diff
|
178
|
+
expect(diff.keys).to eq([:FirewallService])
|
179
|
+
expect(diff[:FirewallService]).to have_at_least(1).items
|
180
|
+
end
|
181
|
+
|
162
182
|
end
|
163
183
|
|
164
184
|
context "load_balancer config has changed and firewall & nat have not" do
|
@@ -199,6 +219,12 @@ module Vcloud
|
|
199
219
|
expect(@proposed_config.config.key?(:FirewallService)).to be(false)
|
200
220
|
end
|
201
221
|
|
222
|
+
it "proposed diff contains changes for load balancer service" do
|
223
|
+
diff = @proposed_config.diff
|
224
|
+
expect(diff.keys).to eq([:LoadBalancerService])
|
225
|
+
expect(diff[:LoadBalancerService]).to have_at_least(1).items
|
226
|
+
end
|
227
|
+
|
202
228
|
end
|
203
229
|
|
204
230
|
context "load_balancer & firewall config have changed and nat has not" do
|
@@ -240,6 +266,13 @@ module Vcloud
|
|
240
266
|
expect(proposed_firewall_config).to eq(expected_firewall_config)
|
241
267
|
end
|
242
268
|
|
269
|
+
it "proposed diff contains changes for firewall and load balancer services" do
|
270
|
+
diff = @proposed_config.diff
|
271
|
+
expect(diff.keys).to eq([:FirewallService, :LoadBalancerService])
|
272
|
+
expect(diff[:FirewallService]).to have_at_least(1).items
|
273
|
+
expect(diff[:LoadBalancerService]).to have_at_least(1).items
|
274
|
+
end
|
275
|
+
|
243
276
|
end
|
244
277
|
|
245
278
|
|
@@ -279,6 +312,12 @@ module Vcloud
|
|
279
312
|
expect(@proposed_config.config.key?(:FirewallService)).to be(false)
|
280
313
|
end
|
281
314
|
|
315
|
+
it "proposed diff contains changes for load balancer service" do
|
316
|
+
diff = @proposed_config.diff
|
317
|
+
expect(diff.keys).to eq([:LoadBalancerService])
|
318
|
+
expect(diff[:LoadBalancerService]).to have_at_least(1).items
|
319
|
+
end
|
320
|
+
|
282
321
|
end
|
283
322
|
|
284
323
|
context "all configs are present but haven't changed" do
|
@@ -310,6 +349,10 @@ module Vcloud
|
|
310
349
|
expect(@proposed_config.config.empty?).to be(true)
|
311
350
|
end
|
312
351
|
|
352
|
+
it "proposed diff contains no changes" do
|
353
|
+
expect(@proposed_config.diff).to eq({})
|
354
|
+
end
|
355
|
+
|
313
356
|
end
|
314
357
|
|
315
358
|
context "firewall config has not changed and nat & load_balancer config is absent" do
|
@@ -339,6 +382,10 @@ module Vcloud
|
|
339
382
|
expect(@proposed_config.config.empty?).to be(true)
|
340
383
|
end
|
341
384
|
|
385
|
+
it "proposed diff contains no changes" do
|
386
|
+
expect(@proposed_config.diff).to eq({})
|
387
|
+
end
|
388
|
+
|
342
389
|
end
|
343
390
|
|
344
391
|
context "no service config is present" do
|
@@ -367,6 +414,10 @@ module Vcloud
|
|
367
414
|
expect(@proposed_config.config.empty?).to be(true)
|
368
415
|
end
|
369
416
|
|
417
|
+
it "proposed diff contains no changes" do
|
418
|
+
expect(@proposed_config.diff).to eq({})
|
419
|
+
end
|
420
|
+
|
370
421
|
end
|
371
422
|
|
372
423
|
context "when there is a missing remote LoadBalancerService, we can still update NatService" do
|
@@ -404,6 +455,12 @@ module Vcloud
|
|
404
455
|
expect(@proposed_config.config.key?(:FirewallService)).to be(false)
|
405
456
|
end
|
406
457
|
|
458
|
+
it "proposed diff contains changes for nat service" do
|
459
|
+
diff = @proposed_config.diff
|
460
|
+
expect(diff.keys).to eq([:NatService])
|
461
|
+
expect(diff[:NatService]).to have_at_least(1).items
|
462
|
+
end
|
463
|
+
|
407
464
|
end
|
408
465
|
|
409
466
|
context "there is no remote FirewallService config, but we are trying to update it" do
|
@@ -441,6 +498,12 @@ module Vcloud
|
|
441
498
|
expect(@proposed_config.config.key?(:NatService)).to be(false)
|
442
499
|
end
|
443
500
|
|
501
|
+
it "proposed diff contains changes for firewall service" do
|
502
|
+
diff = @proposed_config.diff
|
503
|
+
expect(diff.keys).to eq([:FirewallService])
|
504
|
+
expect(diff[:FirewallService]).to have_at_least(1).items
|
505
|
+
end
|
506
|
+
|
444
507
|
end
|
445
508
|
|
446
509
|
context "there is no remote NatService config, but we are trying to update it" do
|
@@ -478,6 +541,12 @@ module Vcloud
|
|
478
541
|
expect(@proposed_config.config.key?(:FirewallService)).to be(false)
|
479
542
|
end
|
480
543
|
|
544
|
+
it "proposed diff contains changes for nat service" do
|
545
|
+
diff = @proposed_config.diff
|
546
|
+
expect(diff.keys).to eq([:NatService])
|
547
|
+
expect(diff[:NatService]).to have_at_least(1).items
|
548
|
+
end
|
549
|
+
|
481
550
|
end
|
482
551
|
|
483
552
|
context "there is no remote LoadBalancer config, but we are trying to update it" do
|
@@ -515,6 +584,12 @@ module Vcloud
|
|
515
584
|
expect(@proposed_config.config.key?(:FirewallService)).to be(false)
|
516
585
|
end
|
517
586
|
|
587
|
+
it "proposed diff contains changes for load balancer service" do
|
588
|
+
diff = @proposed_config.diff
|
589
|
+
expect(diff.keys).to eq([:LoadBalancerService])
|
590
|
+
expect(diff[:LoadBalancerService]).to have_at_least(1).items
|
591
|
+
end
|
592
|
+
|
518
593
|
end
|
519
594
|
|
520
595
|
def test_firewall_config
|
data/vcloud-edge_gateway.gemspec
CHANGED
@@ -24,10 +24,12 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_runtime_dependency 'fog', '>= 1.21.0'
|
25
25
|
s.add_runtime_dependency 'vcloud-core', '~> 0.2.0'
|
26
26
|
s.add_runtime_dependency 'hashdiff'
|
27
|
+
s.add_development_dependency 'pry'
|
27
28
|
s.add_development_dependency 'rake'
|
28
29
|
s.add_development_dependency 'rspec', '~> 2.14.1'
|
29
|
-
s.add_development_dependency 'rubocop'
|
30
|
+
s.add_development_dependency 'rubocop', '~> 0.23.0'
|
30
31
|
s.add_development_dependency 'simplecov', '~> 0.8.2'
|
31
32
|
s.add_development_dependency 'gem_publisher', '1.2.0'
|
33
|
+
s.add_development_dependency 'vcloud-tools-tester', '0.0.5'
|
32
34
|
end
|
33
35
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vcloud-edge_gateway
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-06-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fog
|
@@ -59,6 +59,22 @@ dependencies:
|
|
59
59
|
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: pry
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
62
78
|
- !ruby/object:Gem::Dependency
|
63
79
|
name: rake
|
64
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -96,17 +112,17 @@ dependencies:
|
|
96
112
|
requirement: !ruby/object:Gem::Requirement
|
97
113
|
none: false
|
98
114
|
requirements:
|
99
|
-
- -
|
115
|
+
- - ~>
|
100
116
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
117
|
+
version: 0.23.0
|
102
118
|
type: :development
|
103
119
|
prerelease: false
|
104
120
|
version_requirements: !ruby/object:Gem::Requirement
|
105
121
|
none: false
|
106
122
|
requirements:
|
107
|
-
- -
|
123
|
+
- - ~>
|
108
124
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
125
|
+
version: 0.23.0
|
110
126
|
- !ruby/object:Gem::Dependency
|
111
127
|
name: simplecov
|
112
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -139,22 +155,41 @@ dependencies:
|
|
139
155
|
- - '='
|
140
156
|
- !ruby/object:Gem::Version
|
141
157
|
version: 1.2.0
|
158
|
+
- !ruby/object:Gem::Dependency
|
159
|
+
name: vcloud-tools-tester
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
162
|
+
requirements:
|
163
|
+
- - '='
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: 0.0.5
|
166
|
+
type: :development
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - '='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 0.0.5
|
142
174
|
description: Tool to configure a VMware vCloud Edge Gateway. Uses vcloud-core.
|
143
175
|
email:
|
144
176
|
- anna.shipman@digital.cabinet-office.gov.uk
|
145
177
|
executables:
|
146
178
|
- vcloud-configure-edge
|
179
|
+
- vcloud-edge-configure
|
147
180
|
extensions: []
|
148
181
|
extra_rdoc_files: []
|
149
182
|
files:
|
150
183
|
- .gitignore
|
151
184
|
- .travis.yml
|
152
185
|
- CHANGELOG.md
|
186
|
+
- CONTRIBUTING.md
|
153
187
|
- Gemfile
|
154
188
|
- LICENSE.txt
|
155
189
|
- README.md
|
156
190
|
- Rakefile
|
157
191
|
- bin/vcloud-configure-edge
|
192
|
+
- bin/vcloud-edge-configure
|
158
193
|
- examples/vcloud-configure-edge/firewall-rules.yaml
|
159
194
|
- examples/vcloud-configure-edge/loadbalancer-rules.yaml
|
160
195
|
- examples/vcloud-configure-edge/nat-rules.yaml
|
@@ -164,6 +199,7 @@ files:
|
|
164
199
|
- jenkins.sh
|
165
200
|
- jenkins_integration_tests.sh
|
166
201
|
- lib/vcloud/edge_gateway.rb
|
202
|
+
- lib/vcloud/edge_gateway/cli.rb
|
167
203
|
- lib/vcloud/edge_gateway/configuration_differ.rb
|
168
204
|
- lib/vcloud/edge_gateway/configuration_generator/firewall_service.rb
|
169
205
|
- lib/vcloud/edge_gateway/configuration_generator/id_ranges.rb
|
@@ -179,6 +215,11 @@ files:
|
|
179
215
|
- lib/vcloud/edge_gateway/schema/load_balancer_service.rb
|
180
216
|
- lib/vcloud/edge_gateway/schema/nat_service.rb
|
181
217
|
- lib/vcloud/edge_gateway/version.rb
|
218
|
+
- spec/integration/README.md
|
219
|
+
- spec/integration/edge_gateway/configure_firewall_spec.rb
|
220
|
+
- spec/integration/edge_gateway/configure_load_balancer_spec.rb
|
221
|
+
- spec/integration/edge_gateway/configure_nat_spec.rb
|
222
|
+
- spec/integration/edge_gateway/configure_services_spec.rb
|
182
223
|
- spec/integration/edge_gateway/data/firewall_config.yaml.mustache
|
183
224
|
- spec/integration/edge_gateway/data/firewall_config_updated_rule.yaml.mustache
|
184
225
|
- spec/integration/edge_gateway/data/firewall_rule_order_test.yaml.mustache
|
@@ -192,12 +233,10 @@ files:
|
|
192
233
|
- spec/integration/edge_gateway/data/nat_and_firewall_config.yaml.mustache
|
193
234
|
- spec/integration/edge_gateway/data/nat_and_firewall_plus_load_balancer_config.yaml.mustache
|
194
235
|
- spec/integration/edge_gateway/data/nat_config.yaml.mustache
|
195
|
-
- spec/integration/
|
196
|
-
- spec/integration/edge_gateway/firewall_service_spec.rb
|
197
|
-
- spec/integration/edge_gateway/load_balancer_service_spec.rb
|
198
|
-
- spec/integration/edge_gateway/nat_service_spec.rb
|
236
|
+
- spec/integration/vcloud_tools_testing_config.yaml.template
|
199
237
|
- spec/spec_helper.rb
|
200
238
|
- spec/support/integration_helper.rb
|
239
|
+
- spec/vcloud/edge_gateway/cli_spec.rb
|
201
240
|
- spec/vcloud/edge_gateway/configuration_differ_shared_examples.rb
|
202
241
|
- spec/vcloud/edge_gateway/configuration_differ_spec.rb
|
203
242
|
- spec/vcloud/edge_gateway/configuration_generator/data/load_balancer_http-input.yaml
|
@@ -212,6 +251,7 @@ files:
|
|
212
251
|
- spec/vcloud/edge_gateway/configuration_generator/firewall_service_spec.rb
|
213
252
|
- spec/vcloud/edge_gateway/configuration_generator/load_balancer_service_spec.rb
|
214
253
|
- spec/vcloud/edge_gateway/configuration_generator/nat_service_spec.rb
|
254
|
+
- spec/vcloud/edge_gateway/configure_spec.rb
|
215
255
|
- spec/vcloud/edge_gateway/edge_gateway_configuration_spec.rb
|
216
256
|
- spec/vcloud/edge_gateway/firewall_configuration_differ_spec.rb
|
217
257
|
- spec/vcloud/edge_gateway/firewall_schema_validation_spec.rb
|
@@ -242,7 +282,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
242
282
|
version: '0'
|
243
283
|
segments:
|
244
284
|
- 0
|
245
|
-
hash: -
|
285
|
+
hash: -2937222901484224799
|
246
286
|
requirements: []
|
247
287
|
rubyforge_project:
|
248
288
|
rubygems_version: 1.8.23
|
@@ -250,6 +290,11 @@ signing_key:
|
|
250
290
|
specification_version: 3
|
251
291
|
summary: Tool to configure a VMware vCloud Edge Gateway
|
252
292
|
test_files:
|
293
|
+
- spec/integration/README.md
|
294
|
+
- spec/integration/edge_gateway/configure_firewall_spec.rb
|
295
|
+
- spec/integration/edge_gateway/configure_load_balancer_spec.rb
|
296
|
+
- spec/integration/edge_gateway/configure_nat_spec.rb
|
297
|
+
- spec/integration/edge_gateway/configure_services_spec.rb
|
253
298
|
- spec/integration/edge_gateway/data/firewall_config.yaml.mustache
|
254
299
|
- spec/integration/edge_gateway/data/firewall_config_updated_rule.yaml.mustache
|
255
300
|
- spec/integration/edge_gateway/data/firewall_rule_order_test.yaml.mustache
|
@@ -263,12 +308,10 @@ test_files:
|
|
263
308
|
- spec/integration/edge_gateway/data/nat_and_firewall_config.yaml.mustache
|
264
309
|
- spec/integration/edge_gateway/data/nat_and_firewall_plus_load_balancer_config.yaml.mustache
|
265
310
|
- spec/integration/edge_gateway/data/nat_config.yaml.mustache
|
266
|
-
- spec/integration/
|
267
|
-
- spec/integration/edge_gateway/firewall_service_spec.rb
|
268
|
-
- spec/integration/edge_gateway/load_balancer_service_spec.rb
|
269
|
-
- spec/integration/edge_gateway/nat_service_spec.rb
|
311
|
+
- spec/integration/vcloud_tools_testing_config.yaml.template
|
270
312
|
- spec/spec_helper.rb
|
271
313
|
- spec/support/integration_helper.rb
|
314
|
+
- spec/vcloud/edge_gateway/cli_spec.rb
|
272
315
|
- spec/vcloud/edge_gateway/configuration_differ_shared_examples.rb
|
273
316
|
- spec/vcloud/edge_gateway/configuration_differ_spec.rb
|
274
317
|
- spec/vcloud/edge_gateway/configuration_generator/data/load_balancer_http-input.yaml
|
@@ -283,6 +326,7 @@ test_files:
|
|
283
326
|
- spec/vcloud/edge_gateway/configuration_generator/firewall_service_spec.rb
|
284
327
|
- spec/vcloud/edge_gateway/configuration_generator/load_balancer_service_spec.rb
|
285
328
|
- spec/vcloud/edge_gateway/configuration_generator/nat_service_spec.rb
|
329
|
+
- spec/vcloud/edge_gateway/configure_spec.rb
|
286
330
|
- spec/vcloud/edge_gateway/edge_gateway_configuration_spec.rb
|
287
331
|
- spec/vcloud/edge_gateway/firewall_configuration_differ_spec.rb
|
288
332
|
- spec/vcloud/edge_gateway/firewall_schema_validation_spec.rb
|