vcloud-network-configurator 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. data/.gitignore +2 -0
  2. data/Gemfile +4 -0
  3. data/README.md +116 -0
  4. data/Rakefile +25 -0
  5. data/bin/vcloud_configure_edge_gateway +5 -0
  6. data/docs/find_network_url.md +56 -0
  7. data/docs/find_organisation_edgegateway_uuid.md +58 -0
  8. data/jenkins.sh +6 -0
  9. data/lib/component/firewall.rb +82 -0
  10. data/lib/component/load_balancer.rb +181 -0
  11. data/lib/component/nat.rb +73 -0
  12. data/lib/vcloud_network_configurator.rb +64 -0
  13. data/lib/vcloud_network_configurator/configure_task.rb +22 -0
  14. data/lib/vcloud_network_configurator/edge_gateway.rb +51 -0
  15. data/lib/vcloud_network_configurator/vcloud_auth_request.rb +39 -0
  16. data/lib/vcloud_network_configurator/vcloud_check_for_configure_task_request.rb +26 -0
  17. data/lib/vcloud_network_configurator/vcloud_configure_request.rb +51 -0
  18. data/lib/vcloud_network_configurator/vcloud_settings.rb +22 -0
  19. data/lib/vcloud_network_configurator/version.rb +1 -0
  20. data/spec/component/firewall.xml +45 -0
  21. data/spec/component/firewall_spec.rb +115 -0
  22. data/spec/component/lb.xml +567 -0
  23. data/spec/component/load_balancer_spec.rb +67 -0
  24. data/spec/component/nat.xml +146 -0
  25. data/spec/component/nat_spec.rb +28 -0
  26. data/spec/integration/authorization_failed_spec.rb +26 -0
  27. data/spec/integration/happy_path_firewall_spec.rb +74 -0
  28. data/spec/integration/happy_path_loadbalancer_spec.rb +173 -0
  29. data/spec/integration/happy_path_nat_spec.rb +78 -0
  30. data/spec/integration/test_data/happy_path_auth_response.xml +30 -0
  31. data/spec/integration/test_data/rules_dir/common_firewall.rb +6 -0
  32. data/spec/integration/test_data/rules_dir/common_lb.rb +10 -0
  33. data/spec/integration/test_data/rules_dir/common_nat.rb +0 -0
  34. data/spec/integration/test_data/rules_dir/preview/firewall.rb +0 -0
  35. data/spec/integration/test_data/rules_dir/preview/interfaces.yaml +2 -0
  36. data/spec/integration/test_data/rules_dir/preview/lb.rb +0 -0
  37. data/spec/integration/test_data/rules_dir/preview/nat.rb +4 -0
  38. data/spec/spec_helper.rb +9 -0
  39. data/spec/vcloud_network_configurator/configure_task_spec.rb +59 -0
  40. data/spec/vcloud_network_configurator/edge_gateway_spec.rb +41 -0
  41. data/spec/vcloud_network_configurator/vcloud_auth_request_spec.rb +20 -0
  42. data/spec/vcloud_network_configurator/vcloud_settings_spec.rb +19 -0
  43. data/vcloud-network-configurator.gemspec +33 -0
  44. metadata +212 -0
@@ -0,0 +1,78 @@
1
+ require 'spec_helper'
2
+ require 'vcloud_network_configurator'
3
+
4
+ describe "happy path for nat configurations" do
5
+
6
+ before :each do
7
+ WebMock.disable_net_connect!
8
+ WebMock.reset!
9
+
10
+ session_url = "https://super%40preview:man@www.vcloud.eggplant.com/sessions"
11
+ edge_gateway_configure_url = "https://www.vcloud.eggplant.com/admin/edgeGateway/123321/action/configureServices"
12
+ task_url = "https://www.vcloud.eggplant.com/api/tasks/10"
13
+
14
+ stub_request(:post, session_url).
15
+ with(:headers => {'Accept'=>'application/*+xml;version=5.1', 'User-Agent'=>'Ruby'}).
16
+ to_return(:status => 200,
17
+ :body => File.read('spec/integration/test_data/happy_path_auth_response.xml'),
18
+ :headers => { 'x-vcloud-authorization' => '123321'})
19
+
20
+ stub_request(:post, edge_gateway_configure_url).
21
+ with(:body => configure_nat_xml,
22
+ :headers => { 'Accept'=>'application/*+xml;version=5.1',
23
+ 'Content-Type'=>'application/vnd.vmware.admin.edgeGatewayServiceConfiguration+xml',
24
+ 'User-Agent'=>'Ruby',
25
+ 'X-Vcloud-Authorization'=>'123321' }).
26
+ to_return(:status => 202, :body => configure_task_xml)
27
+
28
+ stub_request(:get, task_url).
29
+ with(:headers => {'Accept'=>'application/*+xml;version=5.1', 'User-Agent'=>'Ruby', 'X-Vcloud-Authorization'=>'123321'}).
30
+ to_return(:status => 200, :body => configure_task_xml, :headers => {})
31
+ end
32
+
33
+ it "should configure edgegateway successfully" do
34
+ args = ["-u", "super", "-p", "man", "-U", "123321", "-d",
35
+ "spec/integration/test_data/rules_dir", "-e", "preview",
36
+ "-c", "nat", "https://www.vcloud.eggplant.com"]
37
+
38
+ configurator = VcloudNetworkConfigurator.new(args)
39
+ configurator.execute.should be_true
40
+ end
41
+ end
42
+
43
+ def configure_task_xml
44
+ %q{<Task href="https://www.vcloud.eggplant.com/api/tasks/10" status="success"></Task>}
45
+ end
46
+
47
+ def configure_nat_xml
48
+ %q{<?xml version="1.0" encoding="UTF-8"?>
49
+ <EdgeGatewayServiceConfiguration xmlns="http://www.vmware.com/vcloud/v1.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vmware.com/vcloud/v1.5 http://vendor-api-url.net/v1.5/schema/master.xsd">
50
+ <NatService>
51
+ <IsEnabled>true</IsEnabled>
52
+ <NatRule>
53
+ <RuleType>SNAT</RuleType>
54
+ <IsEnabled>true</IsEnabled>
55
+ <Id>65538</Id>
56
+ <GatewayNatRule>
57
+ <Interface type="application/vnd.vmware.admin.network+xml" name="VDC-1" href="http://interface.vdc-1/19237"/>
58
+ <OriginalIp>internal-ip</OriginalIp>
59
+ <TranslatedIp>external-ip</TranslatedIp>
60
+ </GatewayNatRule>
61
+ </NatRule>
62
+ <NatRule>
63
+ <RuleType>DNAT</RuleType>
64
+ <IsEnabled>true</IsEnabled>
65
+ <Id>65539</Id>
66
+ <GatewayNatRule>
67
+ <Interface type="application/vnd.vmware.admin.network+xml" name="VDC-1" href="http://interface.vdc-1/19237"/>
68
+ <OriginalIp>external-ip</OriginalIp>
69
+ <OriginalPort>22</OriginalPort>
70
+ <TranslatedIp>internal-ip</TranslatedIp>
71
+ <TranslatedPort>22</TranslatedPort>
72
+ <Protocol>tcp</Protocol>
73
+ </GatewayNatRule>
74
+ </NatRule>
75
+ </NatService>
76
+ </EdgeGatewayServiceConfiguration>
77
+ }
78
+ end
@@ -0,0 +1,30 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <Session
3
+ xmlns="http://www.vmware.com/vcloud/v1.5"
4
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
+ href="https://vcloud.example.com/api/session/"
6
+ org="System"
7
+ type="application/vnd.vmware.vcloud.session+xml"
8
+ user="vcloud"
9
+ xsi:schemaLocation="http://www.vmware.com/vcloud/v1.5 http://https://vcloud.example.com/api/v1.5/schema/master.xsd">
10
+ <Link
11
+ href="https://vcloud.example.com/api/org/"
12
+ rel="down"
13
+ type="application/vnd.vmware.vcloud.orgList+xml"/>
14
+ <Link
15
+ href="https://vcloud.example.com/api/admin/"
16
+ rel="down"
17
+ type="application/vnd.vmware.admin.vcloud+xml"/>
18
+ <Link
19
+ href="https://vcloud.example.com/api/admin/extension"
20
+ rel="down"
21
+ type="application/vnd.vmware.admin.vmwExtension+xml"/>
22
+ <Link
23
+ href="https://vcloud.example.com/api/query"
24
+ rel="down"
25
+ type="application/vnd.vmware.vcloud.query.queryList+xml"/>
26
+ <Link
27
+ href="https://vcloud.example.com/api/entity/"
28
+ rel="entityResolver"
29
+ type="application/vnd.vmware.vcloud.entity+xml"/>
30
+ </Session>
@@ -0,0 +1,6 @@
1
+ firewall do
2
+ rule "allow all boxes to access peppers box on port 22" do
3
+ source :ip => '172.10.0.0/24'
4
+ destination :ip => '172.11.0.1', :port => 22
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ load_balancer do
2
+ configure "Frontend" do
3
+ pool ["20.2.0.1", "20.3.0.2"] do
4
+ http
5
+ https
6
+ end
7
+
8
+ virtual_server :name => "VDC-1", :interface => "VDC-1", :ip => "20.1.0.2"
9
+ end
10
+ end
@@ -0,0 +1,2 @@
1
+ interfaces:
2
+ VDC-1: http://interface.vdc-1/19237
@@ -0,0 +1,4 @@
1
+ nat do
2
+ snat :interface => "VDC-1", :original => { :ip => "internal-ip" }, :translated => { :ip => "external-ip" }, :desc => "description"
3
+ dnat :interface => "VDC-1", :original => { :ip => "external-ip", :port => 22 }, :translated => { :ip => "internal-ip", :port => 22 }, :desc => "SSH"
4
+ end
@@ -0,0 +1,9 @@
1
+ specdir=File.dirname(__FILE__)
2
+ $:.unshift File.join(specdir, '../lib')
3
+ $:.unshift File.join(specdir, '..')
4
+
5
+ require 'webmock/rspec'
6
+ require 'rspec'
7
+
8
+ ENV["GEM_ENV"] = "test"
9
+
@@ -0,0 +1,59 @@
1
+ require 'spec_helper'
2
+ require 'vcloud_network_configurator/configure_task'
3
+
4
+ describe ConfigureTask do
5
+
6
+ describe "#url" do
7
+ it "should extract url from xml" do
8
+ ConfigureTask.new(fixture_xml).url.
9
+ should == "https://vendor-api-url.net/task/123321"
10
+ end
11
+ end
12
+
13
+ describe "#complete?" do
14
+ it "should return false id status not success" do
15
+ ConfigureTask.new(fixture_xml).should_not be_complete
16
+ end
17
+
18
+ it "should return false id status not success" do
19
+ success_xml = fixture_xml.gsub("status=\"running\"", "status=\"success\"")
20
+ ConfigureTask.new(success_xml).should be_complete
21
+ end
22
+ end
23
+
24
+ describe "#error?" do
25
+ it "should error out if error code provided" do
26
+ error_xml = fixture_xml.gsub("</Task>",
27
+ "<Error majorErrorCode=\"Bazinga\"></Task>")
28
+ ConfigureTask.new(error_xml).should be_error
29
+ end
30
+
31
+ end
32
+
33
+ end
34
+
35
+ def fixture_xml
36
+ %q{
37
+ <?xml version="1.0" encoding="UTF-8"?>
38
+ <Task xmlns="http://www.vmware.com/vcloud/v1.5" status="running"
39
+ startTime="2013-07-19T14:46:52.943+01:00"
40
+ serviceNamespace="com.vmware.vcloud"
41
+ operationName="networkConfigureEdgeGatewayServices"
42
+ operation="Updating services EdgeGateway GDS Development Gateway"
43
+ expiryTime="2013-10-17T14:46:52.943+01:00" cancelRequested="false" name="task"
44
+ id="urn:vcloud:task:0e38b845-92fb-47e7-bc89-1fa29547f487"
45
+ type="application/vnd.vmware.vcloud.task+xml"
46
+ href="https://vendor-api-url.net/task/123321"
47
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
48
+ xsi:schemaLocation="http://www.vmware.com/vcloud/v1.5 http://vendor-api-url.net/v1.5/schema/master.xsd">
49
+ <Link rel="task:cancel"
50
+ href="https://vendor-api-url.net/task/123321/action/cancel"/>
51
+ <User type="application/vnd.vmware.admin.user+xml" name="gsingh"
52
+ href="https://vendor-api-url.net/admin/user/2020202"/>
53
+ <Organization type="application/vnd.vmware.vcloud.org+xml"
54
+ name="GDS-Development"
55
+ href="https://vendor-api-url.net/org/9999999"/>
56
+ <Progress>0</Progress>
57
+ <Details/>
58
+ </Task>}
59
+ end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+ require 'vcloud_network_configurator/edge_gateway'
3
+
4
+ describe EdgeGateway do
5
+ it "should abort if vcloud api couldn't authenticate" do
6
+ auth_request = mock(:authenticated? => false)
7
+ VcloudAuthRequest.should_receive(:new).and_return(auth_request)
8
+ auth_request.should_receive(:submit).and_return(mock())
9
+
10
+ eg = EdgeGateway.new({:api_url => 'eggplant.com', :edge_gateway_uuid => '123321'})
11
+ lambda { eg.apply_configuration }.should raise_error(SystemExit)
12
+ end
13
+
14
+ it "should authorize and configure changes" do
15
+ vs = mock()
16
+ VcloudSettings.should_receive(:new).
17
+ with({url: 'eggplant.com', edge_gateway_uuid: '123321' }).and_return(vs)
18
+
19
+ auth_request = mock(:authenticated? => true, :submit => true)
20
+ VcloudAuthRequest.should_receive(:new).with(vs, "bringle@gds-aubergine", "eggplant").
21
+ and_return(auth_request)
22
+ auth_request.should_receive(:auth_response).and_return({'x-vcloud-authorization' => '123213'})
23
+
24
+ VcloudConfigureRequest.should_receive(:new).
25
+ with(vs, '123213', 'farm', 'firewall', 'path/to/dir').
26
+ and_return(mock(:submit => true, :success? => true, :response_body => nil))
27
+
28
+ EdgeGateway.any_instance.stub(:check_for_success => true)
29
+
30
+ eg = EdgeGateway.new({:api_url => 'eggplant.com',
31
+ :org_edgegateway_uuid => '123321',
32
+ :username => 'bringle',
33
+ :password => 'eggplant',
34
+ :environment => 'farm',
35
+ :organization => 'gds-aubergine',
36
+ :component => 'firewall',
37
+ :rules_directory => 'path/to/dir',
38
+ })
39
+ eg.apply_configuration
40
+ end
41
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+ require 'vcloud_network_configurator/vcloud_auth_request'
3
+
4
+ describe VcloudAuthRequest do
5
+
6
+ context "submit an auth request" do
7
+ before :each do
8
+ stub_request(:post, "https://super:man@www.foo.bar/sessions").
9
+ with(:headers => { 'Accept' => 'application/*+xml;version=5.1' })
10
+ end
11
+
12
+ it "should return response received" do
13
+ vcloud_settings = VcloudSettings.new({ :url => "https://www.foo.bar" })
14
+ request = VcloudAuthRequest.new vcloud_settings, "super", "man"
15
+
16
+ request.submit
17
+ request.should be_authenticated
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+ require 'vcloud_network_configurator/vcloud_settings'
3
+
4
+ describe VcloudSettings do
5
+
6
+ it "should return session url" do
7
+ settings = VcloudSettings.new({:url => 'www.abra.ka.dabra/api',
8
+ :edge_gateway_uuid => 'sad-123g-12eda-12enas'})
9
+ settings.sessions_url.should == 'www.abra.ka.dabra/api/sessions'
10
+ end
11
+
12
+ it "should return edge_gateway_config_url" do
13
+ settings = VcloudSettings.new({:url => 'www.abra.ka.dabra/api',
14
+ :edge_gateway_uuid => 'sad-123g-12eda-12enas'})
15
+
16
+ settings.edge_gateway_config_url.should == 'www.abra.ka.dabra/api/admin/edgeGateway/sad-123g-12eda-12enas/action/configureServices'
17
+ end
18
+
19
+ end
@@ -0,0 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "vcloud_network_configurator/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "vcloud-network-configurator"
7
+ s.version = VERSION
8
+ s.authors = ["Garima Singh"]
9
+ s.email = ["igarimasingh@gmail.com"]
10
+ s.homepage = "https://github.com/alphagov/vcloud-network-configurator"
11
+ s.summary = %q{Configure firewall, NAT and load balancer for vcloud}
12
+ s.description = "It allows one to right rules for firewall, NAT and load " +
13
+ "balancer using vcloud API and configure them on the vendor end"
14
+
15
+ s.rubyforge_project = "vcloud-network-configurator"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_development_dependency "rake"
23
+ s.add_development_dependency "minitest"
24
+ s.add_development_dependency "mocha"
25
+ s.add_development_dependency "webmock"
26
+ s.add_development_dependency "rspec", "~> 2.11.0"
27
+ s.add_development_dependency "equivalent-xml", "~> 0.2.9"
28
+ s.add_development_dependency "gem_publisher", "~> 1.3.0"
29
+ s.add_runtime_dependency "parallel"
30
+ s.add_runtime_dependency "highline"
31
+ s.add_runtime_dependency "nokogiri", "~> 1.5.0"
32
+ end
33
+
metadata ADDED
@@ -0,0 +1,212 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vcloud-network-configurator
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - Garima Singh
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2013-08-07 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rake
17
+ requirement: &id001 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: minitest
28
+ requirement: &id002 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: mocha
39
+ requirement: &id003 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: "0"
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: webmock
50
+ requirement: &id004 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: "0"
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: *id004
59
+ - !ruby/object:Gem::Dependency
60
+ name: rspec
61
+ requirement: &id005 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ~>
65
+ - !ruby/object:Gem::Version
66
+ version: 2.11.0
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *id005
70
+ - !ruby/object:Gem::Dependency
71
+ name: equivalent-xml
72
+ requirement: &id006 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.2.9
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: *id006
81
+ - !ruby/object:Gem::Dependency
82
+ name: gem_publisher
83
+ requirement: &id007 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ~>
87
+ - !ruby/object:Gem::Version
88
+ version: 1.3.0
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: *id007
92
+ - !ruby/object:Gem::Dependency
93
+ name: parallel
94
+ requirement: &id008 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: "0"
100
+ type: :runtime
101
+ prerelease: false
102
+ version_requirements: *id008
103
+ - !ruby/object:Gem::Dependency
104
+ name: highline
105
+ requirement: &id009 !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: "0"
111
+ type: :runtime
112
+ prerelease: false
113
+ version_requirements: *id009
114
+ - !ruby/object:Gem::Dependency
115
+ name: nokogiri
116
+ requirement: &id010 !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ~>
120
+ - !ruby/object:Gem::Version
121
+ version: 1.5.0
122
+ type: :runtime
123
+ prerelease: false
124
+ version_requirements: *id010
125
+ description: It allows one to right rules for firewall, NAT and load balancer using vcloud API and configure them on the vendor end
126
+ email:
127
+ - igarimasingh@gmail.com
128
+ executables:
129
+ - vcloud_configure_edge_gateway
130
+ extensions: []
131
+
132
+ extra_rdoc_files: []
133
+
134
+ files:
135
+ - .gitignore
136
+ - Gemfile
137
+ - README.md
138
+ - Rakefile
139
+ - bin/vcloud_configure_edge_gateway
140
+ - docs/find_network_url.md
141
+ - docs/find_organisation_edgegateway_uuid.md
142
+ - jenkins.sh
143
+ - lib/component/firewall.rb
144
+ - lib/component/load_balancer.rb
145
+ - lib/component/nat.rb
146
+ - lib/vcloud_network_configurator.rb
147
+ - lib/vcloud_network_configurator/configure_task.rb
148
+ - lib/vcloud_network_configurator/edge_gateway.rb
149
+ - lib/vcloud_network_configurator/vcloud_auth_request.rb
150
+ - lib/vcloud_network_configurator/vcloud_check_for_configure_task_request.rb
151
+ - lib/vcloud_network_configurator/vcloud_configure_request.rb
152
+ - lib/vcloud_network_configurator/vcloud_settings.rb
153
+ - lib/vcloud_network_configurator/version.rb
154
+ - spec/component/firewall.xml
155
+ - spec/component/firewall_spec.rb
156
+ - spec/component/lb.xml
157
+ - spec/component/load_balancer_spec.rb
158
+ - spec/component/nat.xml
159
+ - spec/component/nat_spec.rb
160
+ - spec/integration/authorization_failed_spec.rb
161
+ - spec/integration/happy_path_firewall_spec.rb
162
+ - spec/integration/happy_path_loadbalancer_spec.rb
163
+ - spec/integration/happy_path_nat_spec.rb
164
+ - spec/integration/test_data/happy_path_auth_response.xml
165
+ - spec/integration/test_data/rules_dir/common_firewall.rb
166
+ - spec/integration/test_data/rules_dir/common_lb.rb
167
+ - spec/integration/test_data/rules_dir/common_nat.rb
168
+ - spec/integration/test_data/rules_dir/preview/firewall.rb
169
+ - spec/integration/test_data/rules_dir/preview/interfaces.yaml
170
+ - spec/integration/test_data/rules_dir/preview/lb.rb
171
+ - spec/integration/test_data/rules_dir/preview/nat.rb
172
+ - spec/spec_helper.rb
173
+ - spec/vcloud_network_configurator/configure_task_spec.rb
174
+ - spec/vcloud_network_configurator/edge_gateway_spec.rb
175
+ - spec/vcloud_network_configurator/vcloud_auth_request_spec.rb
176
+ - spec/vcloud_network_configurator/vcloud_settings_spec.rb
177
+ - vcloud-network-configurator.gemspec
178
+ homepage: https://github.com/alphagov/vcloud-network-configurator
179
+ licenses: []
180
+
181
+ post_install_message:
182
+ rdoc_options: []
183
+
184
+ require_paths:
185
+ - lib
186
+ required_ruby_version: !ruby/object:Gem::Requirement
187
+ none: false
188
+ requirements:
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ hash: -3951837720681967727
192
+ segments:
193
+ - 0
194
+ version: "0"
195
+ required_rubygems_version: !ruby/object:Gem::Requirement
196
+ none: false
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ hash: -3951837720681967727
201
+ segments:
202
+ - 0
203
+ version: "0"
204
+ requirements: []
205
+
206
+ rubyforge_project: vcloud-network-configurator
207
+ rubygems_version: 1.8.24
208
+ signing_key:
209
+ specification_version: 3
210
+ summary: Configure firewall, NAT and load balancer for vcloud
211
+ test_files: []
212
+