vcloud-edge_gateway 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.2.4 (2014-05-01)
2
+
3
+ - Use pessimistic version dependency for vcloud-core
4
+
1
5
  ## 0.2.3 (2014-04-22)
2
6
 
3
7
  Bugfixes:
data/README.md CHANGED
@@ -25,63 +25,43 @@ To configure an Edge Gateway:
25
25
 
26
26
  $ vcloud-configure-edge input.yaml
27
27
 
28
- ### Credentials
28
+ ## Credentials
29
29
 
30
- vCloud Edge Gateway is based around [fog]. To use it you'll need to give it credentials that allow it to talk to a VMware
31
- environment. Fog offers two ways to do this.
30
+ vCloud Edge Gateway is based around [fog](http://fog.io/). To use it you'll need to give it
31
+ credentials that allow it to talk to a vCloud Director environment.
32
32
 
33
- #### 1. Create a `.fog` file containing your credentials
33
+ 1. Create a '.fog' file in your home directory.
34
34
 
35
- To use this method, you need a `.fog` file in your home directory.
35
+ For example:
36
36
 
37
- For example:
38
-
39
- test:
40
- vcloud_director_username: 'username@org_name'
41
- vcloud_director_password: 'password'
42
- vcloud_director_host: 'host.api.example.com'
43
-
44
- Unfortunately current usage of fog requires the password in this file. Multiple sets of credentials can be specified in the fog file, using the following format:
45
-
46
- test:
47
- vcloud_director_username: 'username@org_name'
48
- vcloud_director_password: 'password'
49
- vcloud_director_host: 'host.api.example.com'
50
-
51
- test2:
52
- vcloud_director_username: 'username@org_name'
53
- vcloud_director_password: 'password'
54
- vcloud_director_host: 'host.api.vendor.net'
55
-
56
- You can then pass the `FOG_CREDENTIAL` environment variable at the start of your command. The value of the `FOG_CREDENTIAL` environment variable is the name of the credential set in your fog file which you wish to use. For instance:
37
+ test_credentials:
38
+ vcloud_director_host: 'host.api.example.com'
39
+ vcloud_director_username: 'username@org_name'
40
+ vcloud_director_password: ''
57
41
 
58
- $ FOG_CREDENTIAL=test2 vcloud-configure-edge input.yaml
42
+ 2. Obtain a session token. First, curl the API:
59
43
 
60
- To understand more about `.fog` files, visit the 'Credentials' section here => http://fog.io/about/getting_started.html.
44
+ curl -D- -d '' \
45
+ -H 'Accept: application/*+xml;version=5.1' -u '<username>@<org_name>' \
46
+ https://<host.api.example.com>/api/sessions
61
47
 
62
- #### 2. Log on externally and supply your session token
48
+ This will prompt for your password.
63
49
 
64
- You can choose to log on externally by interacting independently with the API and supplying your session token to the
65
- tool by setting the `FOG_VCLOUD_TOKEN` ENV variable. This option reduces the risk footprint by allowing the user to
66
- store their credentials in safe storage. The default token lifetime is '30 minutes idle' - any activity extends the life by another 30 mins.
50
+ From the headers returned, the value of the `x-vcloud-authorization` header is your
51
+ session token, and this will be valid for 30 minutes idle - any activity will extend
52
+ its life by another 30 minutes.
67
53
 
68
- A basic example of this would be the following:
54
+ 3. Specify your credentials and session token at the beginning of the command. For example:
69
55
 
70
- curl
71
- -D-
72
- -d ''
73
- -H 'Accept: application/*+xml;version=5.1' -u '<user>@<org>'
74
- https://host.com/api/sessions
56
+ FOG_CREDENTIAL=test_credentials \
57
+ FOG_VCLOUD_TOKEN=AAAABBBBBCCCCCCDDDDDDEEEEEEFFFFF= \
58
+ vcloud-configure-edge input.yaml
75
59
 
76
- This will prompt for your password.
60
+ You may find it easier to export one or both of the values as environment variables.
77
61
 
78
- From the headers returned, select the header below
62
+ **NB** It is also possible to sidestep the need for the session token by saving your
63
+ password in the fog file. This is **not recommended**.
79
64
 
80
- x-vcloud-authorization: AAAABBBBBCCCCCCDDDDDDEEEEEEFFFFF=
81
-
82
- Use token as ENV var FOG_VCLOUD_TOKEN
83
-
84
- $ FOG_VCLOUD_TOKEN=AAAABBBBBCCCCCCDDDDDDEEEEEEFFFFF= vcloud-configure-edge input.yaml
85
65
 
86
66
  ### Configure edge gateway services
87
67
 
@@ -414,6 +394,15 @@ cat edges.out | jq '
414
394
 
415
395
  You can find full configuration examples in the `examples` folder.
416
396
 
397
+ ## The vCloud API
398
+
399
+ vCloud Tools currently use version 5.1 of the [vCloud API](http://pubs.vmware.com/vcd-51/index.jsp?topic=%2Fcom.vmware.vcloud.api.doc_51%2FGUID-F4BF9D5D-EF66-4D36-A6EB-2086703F6E37.html). Version 5.5 may work but is not currently supported. You should be able to access the 5.1 API in a 5.5 environment, and this *is* currently supported.
400
+
401
+ The default version is defined in [Fog](https://github.com/fog/fog/blob/244a049918604eadbcebd3a8eaaf433424fe4617/lib/fog/vcloud_director/compute.rb#L32).
402
+
403
+ If you want to be sure you are pinning to 5.1, or use 5.5, you can set the API version to use in your fog file, e.g.
404
+
405
+ `vcloud_director_api_version: 5.1`
417
406
 
418
407
  ## Debugging
419
408
 
data/Rakefile CHANGED
@@ -10,14 +10,19 @@ RSpec::Core::RakeTask.new(:spec) do |task|
10
10
  task.pattern = FileList['spec/vcloud/**/*_spec.rb']
11
11
  end
12
12
 
13
- task :default => [:spec]
13
+ task :default => [:rubocop, :spec]
14
14
 
15
15
  RSpec::Core::RakeTask.new('integration') do |t|
16
16
  t.pattern = FileList['spec/integration/**/*_spec.rb']
17
17
  end
18
18
 
19
19
  require "gem_publisher"
20
- task :publish_gem do |t|
20
+ task :publish_gem do
21
21
  gem = GemPublisher.publish_if_updated("vcloud-edge_gateway.gemspec", :rubygems)
22
22
  puts "Published #{gem}" if gem
23
23
  end
24
+
25
+ require 'rubocop/rake_task'
26
+ Rubocop::RakeTask.new(:rubocop) do |task|
27
+ task.options = ['--lint']
28
+ end
@@ -1,12 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- begin
4
- require 'rubygems'
5
- require 'methadone'
6
- gem 'vcloud-edge_gateway'
7
- rescue LoadError
8
- end
9
-
3
+ require 'methadone'
10
4
  require 'vcloud/edge_gateway'
11
5
 
12
6
  class App
data/jenkins.sh CHANGED
@@ -3,9 +3,6 @@ set -e
3
3
  bundle install --path "${HOME}/bundles/${JOB_NAME}"
4
4
  bundle exec rake
5
5
 
6
- ./scripts/generate_fog_conf_file.sh
7
- export FOG_RC=fog_integration_test.config
8
- bundle exec rake integration
9
- rm fog_integration_test.config
6
+ RUBYOPT="-r ./tools/fog_credentials" bundle exec rake integration
10
7
 
11
8
  bundle exec rake publish_gem
@@ -2,7 +2,4 @@
2
2
  set -e
3
3
  bundle install --path "${HOME}/bundles/${JOB_NAME}"
4
4
 
5
- ./scripts/generate_fog_conf_file.sh
6
- export FOG_RC=fog_integration_test.config
7
- bundle exec rake integration
8
- rm fog_integration_test.config
5
+ RUBYOPT="-r ./tools/fog_credentials" bundle exec rake integration
@@ -15,13 +15,13 @@ module Vcloud
15
15
  load_balancer_input_config[:enabled].to_s : 'true'
16
16
  vcloud_pools = []
17
17
  vcloud_virtual_servers = []
18
- if pools = load_balancer_input_config[:pools]
19
- pools.each do |pool_input_entry|
18
+ if load_balancer_input_config[:pools]
19
+ load_balancer_input_config[:pools].each do |pool_input_entry|
20
20
  vcloud_pools << generate_pool_entry(pool_input_entry)
21
21
  end
22
22
  end
23
- if virtual_servers = load_balancer_input_config[:virtual_servers]
24
- virtual_servers.each do |virtual_server_input_entry|
23
+ if load_balancer_input_config[:virtual_servers]
24
+ load_balancer_input_config[:virtual_servers].each do |virtual_server_input_entry|
25
25
  vcloud_virtual_servers << generate_virtual_server_entry(virtual_server_input_entry)
26
26
  end
27
27
  end
@@ -81,7 +81,7 @@ module Vcloud
81
81
  IsEnabled: 'false',
82
82
  Protocol: protocol.to_s.upcase,
83
83
  Port: default_port(protocol),
84
- Persistence: generate_virtual_server_persistence_section(protocol, nil)
84
+ Persistence: generate_virtual_server_persistence_section(nil)
85
85
  }
86
86
  if input_protocol_section
87
87
  vcloud_protocol_section[:IsEnabled] =
@@ -91,10 +91,7 @@ module Vcloud
91
91
  input_protocol_section.key?(:port) ?
92
92
  input_protocol_section[:port].to_s : default_port(protocol)
93
93
  vcloud_protocol_section[:Persistence] =
94
- generate_virtual_server_persistence_section(
95
- protocol,
96
- input_protocol_section[:persistence]
97
- )
94
+ generate_virtual_server_persistence_section(input_protocol_section[:persistence])
98
95
  end
99
96
  vcloud_protocol_section
100
97
  end
@@ -104,7 +101,7 @@ module Vcloud
104
101
  default_port_for[protocol]
105
102
  end
106
103
 
107
- def generate_virtual_server_persistence_section(protocol, input_persistence_section)
104
+ def generate_virtual_server_persistence_section(input_persistence_section)
108
105
  input_persistence_section = {} if input_persistence_section.nil?
109
106
  vcloud_persistence_section = { Method: '' }
110
107
  if input_persistence_section.key?(:method)
@@ -174,9 +171,9 @@ module Vcloud
174
171
  vcloud_pool_service_port[:Port] =
175
172
  input_pool_service_port.key?(:port) ?
176
173
  input_pool_service_port[:port].to_s : default_port(mode)
177
- if health_check = input_pool_service_port[:health_check]
174
+ if input_pool_service_port[:health_check]
178
175
  vcloud_pool_service_port[:HealthCheckPort] =
179
- health_check.key?(:port) ? health_check[:port].to_s : ''
176
+ input_pool_service_port[:health_check].fetch(:port, '').to_s
180
177
  vcloud_pool_service_port[:HealthCheck] =
181
178
  generate_pool_healthcheck(mode, input_pool_service_port[:health_check])
182
179
  end
@@ -33,11 +33,11 @@ module Vcloud
33
33
  end
34
34
 
35
35
  def populate_gateway_nat_rule(rule)
36
- raise "Must supply a :network_id parameter" unless net_id = rule[:network_id]
36
+ raise "Must supply a :network_id parameter" unless rule[:network_id]
37
37
  edge_gw_interface = @edge_gateway_interfaces.find do |interface|
38
- interface.network_id == net_id
38
+ interface.network_id == rule[:network_id]
39
39
  end
40
- raise "unable to find gateway network interface with id #{net_id}" unless edge_gw_interface
40
+ raise "unable to find gateway network interface with id #{rule[:network_id]}" unless edge_gw_interface
41
41
  gateway_nat_rule = {}
42
42
  gateway_nat_rule[:Interface] = populate_nat_interface(edge_gw_interface)
43
43
  gateway_nat_rule[:OriginalIp] = rule[:original_ip]
@@ -1,6 +1,6 @@
1
1
  module Vcloud
2
2
  module EdgeGateway
3
- VERSION = '0.2.3'
3
+ VERSION = '0.2.4'
4
4
  end
5
5
  end
6
6
 
@@ -126,7 +126,7 @@ module Vcloud
126
126
  differ = config_differ.new(local, remote)
127
127
  expect(differ.diff).to eq(output)
128
128
  end
129
- end
129
+ end
130
130
 
131
131
  end
132
132
  end
@@ -0,0 +1,17 @@
1
+ # Initialiser for getting vCloud credentials into Fog from Jenkins build
2
+ # parameters, without needing to write them to disk. To be used with:
3
+ #
4
+ # RUBYOPT="-r ./tools/fog_credentials" bundle exec integration
5
+ #
6
+ # Replace with FOG_VCLOUD_TOKEN support when we have a tool:
7
+ #
8
+ # https://www.pivotaltracker.com/story/show/68989754
9
+ #
10
+ require 'bundler/setup'
11
+ require 'fog'
12
+
13
+ Fog.credentials = {
14
+ :vcloud_director_host => ENV['API_HOST'],
15
+ :vcloud_director_username => ENV['API_USERNAME'],
16
+ :vcloud_director_password => ENV['API_PASSWORD'],
17
+ }
@@ -22,10 +22,11 @@ Gem::Specification.new do |s|
22
22
  s.required_ruby_version = '>= 1.9.2'
23
23
 
24
24
  s.add_runtime_dependency 'fog', '>= 1.21.0'
25
- s.add_runtime_dependency 'vcloud-core', '>= 0.0.12'
25
+ s.add_runtime_dependency 'vcloud-core', '~> 0.0.12'
26
26
  s.add_runtime_dependency 'hashdiff'
27
27
  s.add_development_dependency 'rake'
28
28
  s.add_development_dependency 'rspec', '~> 2.14.1'
29
+ s.add_development_dependency 'rubocop'
29
30
  s.add_development_dependency 'simplecov', '~> 0.8.2'
30
31
  s.add_development_dependency 'gem_publisher', '1.2.0'
31
32
  end
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.2.3
4
+ version: 0.2.4
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-04-22 00:00:00.000000000 Z
12
+ date: 2014-05-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fog
@@ -32,7 +32,7 @@ dependencies:
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
- - - ! '>='
35
+ - - ~>
36
36
  - !ruby/object:Gem::Version
37
37
  version: 0.0.12
38
38
  type: :runtime
@@ -40,7 +40,7 @@ dependencies:
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ! '>='
43
+ - - ~>
44
44
  - !ruby/object:Gem::Version
45
45
  version: 0.0.12
46
46
  - !ruby/object:Gem::Dependency
@@ -91,6 +91,22 @@ dependencies:
91
91
  - - ~>
92
92
  - !ruby/object:Gem::Version
93
93
  version: 2.14.1
94
+ - !ruby/object:Gem::Dependency
95
+ name: rubocop
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
94
110
  - !ruby/object:Gem::Dependency
95
111
  name: simplecov
96
112
  requirement: !ruby/object:Gem::Requirement
@@ -159,7 +175,6 @@ files:
159
175
  - lib/vcloud/schema/firewall_service.rb
160
176
  - lib/vcloud/schema/load_balancer_service.rb
161
177
  - lib/vcloud/schema/nat_service.rb
162
- - scripts/generate_fog_conf_file.sh
163
178
  - spec/erb_helper.rb
164
179
  - spec/integration/edge_gateway/data/firewall_config.yaml.erb
165
180
  - spec/integration/edge_gateway/data/firewall_config_updated_rule.yaml.erb
@@ -202,6 +217,7 @@ files:
202
217
  - spec/vcloud/edge_gateway/load_balancer_schema_validation_spec.rb
203
218
  - spec/vcloud/edge_gateway/nat_configuration_differ_spec.rb
204
219
  - spec/vcloud/edge_gateway/nat_schema_validation_spec.rb
220
+ - tools/fog_credentials.rb
205
221
  - vcloud-edge_gateway.gemspec
206
222
  homepage: http://github.com/alphagov/vcloud-edge_gateway
207
223
  licenses:
@@ -224,7 +240,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
224
240
  version: '0'
225
241
  segments:
226
242
  - 0
227
- hash: -981764383968782471
243
+ hash: 346937587144257703
228
244
  requirements: []
229
245
  rubyforge_project:
230
246
  rubygems_version: 1.8.23
@@ -1,6 +0,0 @@
1
- cat <<EOF >fog_integration_test.config
2
- default:
3
- vcloud_director_username: '$API_USERNAME'
4
- vcloud_director_password: '$API_PASSWORD'
5
- vcloud_director_host: '$API_HOST'
6
- EOF