skyscape-vpn 0.0.5 → 0.0.6

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
  SHA1:
3
- metadata.gz: a072a576f027e00aa7e7bf038869fea21d8d1db9
4
- data.tar.gz: 44e3fb53bddf8988d1943f20e06d1f906a29e7b0
3
+ metadata.gz: 720bcec1ef57ecf8b0469df5d5ca8ffa165dc17f
4
+ data.tar.gz: 6cc1064bf36c23779dd4163a93bfad57bd49e9d6
5
5
  SHA512:
6
- metadata.gz: 83c23fb510ec1d01e42825db7e5ff5c3fb8ecc1aed79dcd56287464eb12282f203fa1f4936d32fac4569b5fe9e4273eaadcb2aec6c4c10ee66e087ebc539135a
7
- data.tar.gz: bb61d511315c1467cc06e76d27501c559d40843f10441557bac5d3d90a8b53c4f25738f12bb0d19b2b309314ac38a3e1eb1d4afd417657976254ee4a20702d88
6
+ metadata.gz: 396fad116c41556655d409130cde94edc9f8cc1d2af54f69d02df040f1340f565b6c770e47107761da61f2b76c75dd8b3cf1a657dc4bb09772cab1258d5e4bff
7
+ data.tar.gz: 926c0f5cbe2963086094748c0ce40801e00801c9272562897f245745210ec0ccae7d993a3b61930bcd19f11a5ef366af8a34a5cc45bd7303060db3711bdd3d8d
data/README.md CHANGED
@@ -1,36 +1,149 @@
1
- # Skyscape::Vpn
1
+ #Skyscape IPSec VPN Configuration Tool
2
+
3
+ This command line tool allows Skyscape customers using vShield Edge firewalls to configure IPSec tunnels using a configuration file written in "YAML"
4
+ For more information on YAML and it's syntax see: https://en.wikipedia.org/wiki/YAML
2
5
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/skyscape/vpn`. To experiment with that code, run `bin/console` for an interactive prompt.
4
6
 
5
- TODO: Delete this and the text above, and describe your gem
6
7
 
7
8
  ## Installation
8
9
 
9
- Add this line to your application's Gemfile:
10
+ First ensure Ruby is installed on your machine.
11
+
12
+ To check you can run:
10
13
 
11
- ```ruby
12
- gem 'skyscape-vpn'
14
+ ```batchfile
15
+ >ruby -v
16
+ ruby 2.0.0p247 (2013-06-27) [i386-mingw32]
13
17
  ```
14
18
 
15
- And then execute:
19
+ The tool was built using Ruby 2.0.0p247 but other versions may work.
16
20
 
17
- $ bundle
21
+ And then install the gem using:
22
+ ```batchfile
23
+ >gem install skyscape-vpn
24
+ ```
18
25
 
19
- Or install it yourself as:
26
+ ## Usage
20
27
 
21
- $ gem install skyscape-vpn
28
+ Once installed the tool can be run by executing the following:
22
29
 
23
- ## Usage
30
+ ```batchfile
31
+ >skyscape-vpn apply <path to yaml file>
32
+ ```
33
+
34
+ For example:
35
+
36
+ ```batchfile
37
+ >skyscape-vpn apply c:\tmp\firewalls.yml
38
+ ```
39
+
40
+ Or for Linux:
41
+
42
+ ```batchfile
43
+ $ skyscape-vpn apply /tmp/firewalls.yml
44
+ ```
24
45
 
25
- TODO: Write usage instructions here
26
46
 
27
- ## Development
47
+ ## Configuration File
48
+
49
+ The configuration file uses YAML as a format and defines one or more vShield Edge Firewalls to be configured.
50
+ The file has the following syntax:
51
+
52
+ ```yaml
53
+ Firewalls:
54
+ - Name: Firewall_1
55
+ Service:
56
+ IsEnabled: true
57
+ Creds:
58
+ User: xxx.xxxx.xxx
59
+ Password: xxxxxxxxxxxx
60
+ Org: x-x-xx-xxxx
61
+ Url: api.vcd.portal.skyscapecloud.com
62
+ Edge: nftxxxxxx-x
63
+ GatewayIpsecVpnService:
64
+ IsEnabled: true
65
+ Tunnel:
66
+ - Name: west-to-east
67
+ IpsecVpnLocalPeerId:
68
+ IpsecVpnLocalPeerName:
69
+ PeerIpAddress: 111.111.111.111
70
+ PeerId: 111.111.111.111
71
+ LocalIpAddress: 222.222.222.222
72
+ LocalId: 222.222.222.222
73
+ LocalSubnet:
74
+ - Name: DMZ
75
+ Gateway: 10.0.1.1
76
+ Netmask: 255.255.255.0
77
+ PeerSubnet:
78
+ - Name: DMZ
79
+ Gateway: 10.0.10.1
80
+ Netmask: 255.255.255.0
81
+ SharedSecret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
82
+ EncryptionProtocol: AES256
83
+ Mtu: 1400
84
+ IsEnabled: true
85
+ - Name: Firewall_2
86
+ Creds:
87
+ User: xxx.xxxx.xxx
88
+ Password: xxxxxxxxxxxx
89
+ Org: x-x-xx-xxxx
90
+ Url: api.vcd.portal.skyscapecloud.com
91
+ Edge: nftxxxxxx-x
92
+ GatewayIpsecVpnService:
93
+ IsEnabled: true
94
+ Tunnel:
95
+ - Name: east-to-west
96
+ IpsecVpnLocalPeerId:
97
+ IpsecVpnLocalPeerName:
98
+ PeerIpAddress: 222.222.222.222
99
+ PeerId: 222.222.222.222
100
+ LocalIpAddress: 111.111.111.111
101
+ LocalId: 111.111.111.111
102
+ PeerSubnet:
103
+ - Name: DMZ
104
+ Gateway: 10.0.1.1
105
+ Netmask: 255.255.255.0
106
+ LocalSubnet:
107
+ - Name: DMZ
108
+ Gateway: 10.0.10.1
109
+ Netmask: 255.255.255.0
110
+ SharedSecret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
111
+ EncryptionProtocol: AES256
112
+ Mtu: 1400
113
+ IsEnabled: true
114
+ ```
115
+
116
+
117
+ Note that a hyphen ( - ) in YAML represents an array item (an item which can appear one or more times).
118
+ Hopefully it is clear from the example file above the the file supports:
119
+ * One or more vShield firewalls per file
120
+ * One or more tunnels per vShield firewall
121
+ * One or more local subnet per tunnel
122
+ * One or more peer subnet per tunnel
28
123
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
124
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
125
+ **PeerIpAddress** & **PeerId** should be set to the public IP address of the remote vShield Firewall
126
+ **LocalIpAddress** & **LocalId** should be set to the public IP address of the local vShield Firewall
127
+
128
+
129
+ The file can be created in any text editor (notepad etc) and is usually saved with a ".yml" file extension although this is not required by the tool.
32
130
 
33
131
  ## Contributing
34
132
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/skyscape-vpn.
133
+ Bug reports and pull requests are welcome on GitHub at https://github.com/skyscape-cloud-services/skyscape-vpn.
134
+ Please ensure that the tests run successfully before creating a PR and consider increasing the coverage if adding new features.
135
+
136
+ The project has unit tests using Rspec which can be run using:
137
+
138
+ ```batchfile
139
+ >bundle exec rspec
140
+ ```
141
+
142
+ The CLI tests are written using Cucumber & Aruba and can be run using:
143
+
144
+ ```batchfile
145
+ >bundle exec cucumber
146
+ ```
147
+
148
+ Note: Cucumber tests do not appear to work on Windows
36
149
 
data/Rakefile CHANGED
@@ -1,13 +1,13 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
- require 'cucumber'
4
- require 'cucumber/rake/task'
5
-
6
- RSpec::Core::RakeTask.new(:spec)
7
- Cucumber::Rake::Task.new(:features) do |t|
8
- t.cucumber_opts = "features --format pretty"
9
- end
10
-
11
- task :default => :spec
12
- task :test => :spec
13
- task :test => :features
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+ require 'cucumber'
4
+ require 'cucumber/rake/task'
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+ Cucumber::Rake::Task.new(:features) do |t|
8
+ t.cucumber_opts = "features --format pretty"
9
+ end
10
+
11
+ task :default => :spec
12
+ task :test => :spec
13
+ task :test => :features
data/bin/skyscape-vpn CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
2
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
3
- require 'cli'
4
- Skyscape::Vcloud::Ipsec::Cli.start(ARGV)
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
3
+ require 'cli'
4
+ Skyscape::Vcloud::Ipsec::Cli.start(ARGV)
data/lib/cli.rb CHANGED
@@ -1,28 +1,28 @@
1
- require 'thor'
2
- require 'main'
3
- require 'version'
4
-
5
- module Skyscape
6
- module Vcloud
7
- module Ipsec
8
- class Cli < Thor
9
- desc "version", "Print skyscape-vpn version"
10
-
11
-
12
- def version
13
- puts Skyscape::Vcloud::Ipsec::VERSION
14
- end
15
-
16
-
17
- desc "apply <location>", "Begin configuration of IPSec tunnels"
18
- def apply(path)
19
- begin
20
- Skyscape::Vcloud::Ipsec::Main.new(path)
21
- rescue Exception => e
22
- puts e.message
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
1
+ require 'thor'
2
+ require 'main'
3
+ require 'version'
4
+
5
+ module Skyscape
6
+ module Vcloud
7
+ module Ipsec
8
+ class Cli < Thor
9
+ desc "version", "Print skyscape-vpn version"
10
+
11
+
12
+ def version
13
+ puts Skyscape::Vcloud::Ipsec::VERSION
14
+ end
15
+
16
+
17
+ desc "apply <location>", "Begin configuration of IPSec tunnels"
18
+ def apply(path)
19
+ begin
20
+ Skyscape::Vcloud::Ipsec::Main.new(path)
21
+ rescue Exception => e
22
+ puts e.message
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
data/lib/configuration.rb CHANGED
@@ -1,40 +1,51 @@
1
- require 'yaml'
2
- require 'active_support/hash_with_indifferent_access'
3
-
4
-
5
- module Skyscape
6
- module Vcloud
7
- module Ipsec
8
- class Configuration
9
- attr_accessor :file_location, :full_config, :firewalls
10
- def initialize(file_location = "#{Dir.pwd}/firewalls.yml")
11
- @file_location = file_location
12
- raise("Configuration File Not Found At #{file_location}") unless File.exists?(file_location)
13
-
14
- @full_config = load_yaml
15
- @firewalls = parse_config
16
- end
17
-
18
- def load_yaml
19
- file = File.open(@file_location)
20
- conf = YAML.load(file)
21
- file.close
22
-
23
- conf.deep_symbolize_keys! unless conf == false
24
- end
25
-
26
- def parse_config
27
- raise("No firewalls In Config File: #{@file_location}") unless @full_config.is_a?(Hash) && @full_config[:Firewalls]
28
- raise("No firewalls In Config File: #{@file_location}") unless @full_config[:Firewalls].is_a?(Array) && @full_config[:Firewalls].length > 0
29
- #To Do: Add Config Schema?
30
- @full_config[:Firewalls]
31
-
32
-
33
- end
34
-
35
-
36
-
37
- end
38
- end
39
- end
1
+ require 'yaml'
2
+
3
+ module Skyscape
4
+ module Vcloud
5
+ module Ipsec
6
+ class Configuration
7
+ attr_accessor :file_location, :full_config, :firewalls
8
+ def initialize(file_location = "#{Dir.pwd}/firewalls.yml")
9
+ @file_location = file_location
10
+ raise("Configuration File Not Found At #{file_location}") unless File.exists?(file_location)
11
+
12
+ @full_config = load_yaml
13
+ @firewalls = parse_config
14
+ end
15
+
16
+ def load_yaml
17
+ file = File.open(@file_location)
18
+ conf = YAML.load(file)
19
+ file.close
20
+
21
+ symbolize(conf) unless conf == false
22
+ end
23
+
24
+ def parse_config
25
+ raise("No firewalls In Config File: #{@file_location}") unless @full_config.is_a?(Hash) && @full_config[:Firewalls]
26
+ raise("No firewalls In Config File: #{@file_location}") unless @full_config[:Firewalls].is_a?(Array) && @full_config[:Firewalls].length > 0
27
+ #To Do: Add Config Schema?
28
+ @full_config[:Firewalls]
29
+
30
+
31
+ end
32
+
33
+ private
34
+
35
+ def symbolize(obj)
36
+ return obj.reduce({}) do |memo, (k, v)|
37
+ memo.tap { |m| m[k.to_sym] = symbolize(v) }
38
+ end if obj.is_a? Hash
39
+
40
+ return obj.reduce([]) do |memo, v|
41
+ memo << symbolize(v); memo
42
+ end if obj.is_a? Array
43
+
44
+ obj
45
+ end
46
+
47
+
48
+ end
49
+ end
50
+ end
40
51
  end
data/lib/main.rb CHANGED
@@ -1,83 +1,83 @@
1
- require 'fog'
2
- require 'configuration'
3
-
4
-
5
- module Skyscape
6
- module Vcloud
7
- module Ipsec
8
- class Main
9
- attr_accessor :config
10
- def initialize(config_file)
11
- @config = Skyscape::Vcloud::Ipsec::Configuration.new(config_file)
12
- configure_firewalls(@config.firewalls)
13
-
14
- end
15
-
16
- def configure_firewalls(firewalls)
17
- firewalls.each do |firewall|
18
- configure_firewall(firewall)
19
- end
20
- end
21
-
22
- def configure_firewall(firewall)
23
- creds = firewall[:Creds]
24
- connection = vcloud_login(creds)
25
- edge_id = get_edge_href(creds[:Edge],connection).split('/').last
26
-
27
- puts "Configuring VPN Service For Firewall: #{creds[:Edge]}"
28
- task = connection.post_configure_edge_gateway_services(edge_id,firewall).body
29
- monitor_task(task[:href].split('/').last,connection)
30
- puts "Finished Configuring VPN Service For Firewall: #{creds[:Edge]}"
31
-
32
- #TO DO: SUPPORT MERGING CONFIG WITH EXISTING
33
- #current_config = get_current_config(edge_href,connection)
34
- #new_config = merge_configs(current_config, new_config)
35
-
36
- end
37
-
38
- def vcloud_login(creds)
39
- puts "Connecting to vCloud Director API"
40
- connection = Fog::Compute::VcloudDirector.new(
41
- :vcloud_director_username => "#{creds[:User]}@#{creds[:Org]}",
42
- :vcloud_director_password => creds[:Password],
43
- :vcloud_director_host => creds[:Url],
44
- :vcloud_director_show_progress => true, # task progress bar on/off
45
- :connection_options => {
46
- :omit_default_port => true
47
- }
48
- )
49
- puts "Connected to vCloud Director API"
50
-
51
- connection
52
- end
53
-
54
- def get_edge_href(edge_name, connection)
55
- puts "Getting vShield Edge HREF From Query"
56
- results = connection.get_execute_query(type="edgeGateway", :filter => "name==#{edge_name}").body
57
-
58
- raise "Edge #{edge_name} Not Found!" unless results[:total] == "1"
59
- raise "Edge Name #{edge_name} Not Unique!" if results[:total].to_i > 1
60
- puts "Finished Getting vShield Edge HREF From Query"
61
- result = results[:EdgeGatewayRecord][:href]
62
- end
63
-
64
- def get_current_config(edge_href,connection)
65
- configuration = connection.get_edge_gateway(edge_href.split('/').last).body
66
-
67
- vpn_service = configuration[:Configuration][:EdgeGatewayServiceConfiguration][:GatewayIpsecVpnService]
68
- end
69
-
70
- def monitor_task(task_id,connection)
71
- task = connection.get_task(task_id).body
72
- while(task[:status] == "running") do
73
- puts " Task: #{task[:operation]} Still Running"
74
- task = connection.get_task(task_id).body
75
- sleep(3)
76
- end
77
-
78
- puts " Task: #{task[:operation]} Completed With Status: #{task[:status]}"
79
- end
80
- end
81
- end
82
- end
83
- end
1
+ require 'fog'
2
+ require 'configuration'
3
+
4
+
5
+ module Skyscape
6
+ module Vcloud
7
+ module Ipsec
8
+ class Main
9
+ attr_accessor :config
10
+ def initialize(config_file)
11
+ @config = Skyscape::Vcloud::Ipsec::Configuration.new(config_file)
12
+ configure_firewalls(@config.firewalls)
13
+
14
+ end
15
+
16
+ def configure_firewalls(firewalls)
17
+ firewalls.each do |firewall|
18
+ configure_firewall(firewall)
19
+ end
20
+ end
21
+
22
+ def configure_firewall(firewall)
23
+ creds = firewall[:Creds]
24
+ connection = vcloud_login(creds)
25
+ edge_id = get_edge_href(creds[:Edge],connection).split('/').last
26
+
27
+ puts "Configuring VPN Service For Firewall: #{creds[:Edge]}"
28
+ task = connection.post_configure_edge_gateway_services(edge_id,firewall).body
29
+ monitor_task(task[:href].split('/').last,connection)
30
+ puts "Finished Configuring VPN Service For Firewall: #{creds[:Edge]}"
31
+
32
+ #TO DO: SUPPORT MERGING CONFIG WITH EXISTING
33
+ #current_config = get_current_config(edge_href,connection)
34
+ #new_config = merge_configs(current_config, new_config)
35
+
36
+ end
37
+
38
+ def vcloud_login(creds)
39
+ puts "Connecting to vCloud Director API"
40
+ connection = Fog::Compute::VcloudDirector.new(
41
+ :vcloud_director_username => "#{creds[:User]}@#{creds[:Org]}",
42
+ :vcloud_director_password => creds[:Password],
43
+ :vcloud_director_host => creds[:Url],
44
+ :vcloud_director_show_progress => true, # task progress bar on/off
45
+ :connection_options => {
46
+ :omit_default_port => true
47
+ }
48
+ )
49
+ puts "Connected to vCloud Director API"
50
+
51
+ connection
52
+ end
53
+
54
+ def get_edge_href(edge_name, connection)
55
+ puts "Getting vShield Edge HREF From Query"
56
+ results = connection.get_execute_query(type="edgeGateway", :filter => "name==#{edge_name}").body
57
+
58
+ raise "Edge #{edge_name} Not Found!" unless results[:total] == "1"
59
+ raise "Edge Name #{edge_name} Not Unique!" if results[:total].to_i > 1
60
+ puts "Finished Getting vShield Edge HREF From Query"
61
+ result = results[:EdgeGatewayRecord][:href]
62
+ end
63
+
64
+ def get_current_config(edge_href,connection)
65
+ configuration = connection.get_edge_gateway(edge_href.split('/').last).body
66
+
67
+ vpn_service = configuration[:Configuration][:EdgeGatewayServiceConfiguration][:GatewayIpsecVpnService]
68
+ end
69
+
70
+ def monitor_task(task_id,connection)
71
+ task = connection.get_task(task_id).body
72
+ while(task[:status] == "running") do
73
+ puts " Task: #{task[:operation]} Still Running"
74
+ task = connection.get_task(task_id).body
75
+ sleep(3)
76
+ end
77
+
78
+ puts " Task: #{task[:operation]} Completed With Status: #{task[:status]}"
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
data/lib/version.rb CHANGED
@@ -1,7 +1,7 @@
1
- module Skyscape
2
- module Vcloud
3
- module Ipsec
4
- VERSION = "0.0.5"
5
- end
6
- end
7
- end
1
+ module Skyscape
2
+ module Vcloud
3
+ module Ipsec
4
+ VERSION = "0.0.6"
5
+ end
6
+ end
7
+ end
data/skyscape-vpn.gemspec CHANGED
@@ -1,36 +1,35 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "skyscape-vpn"
8
- spec.version = Skyscape::Vcloud::Ipsec::VERSION
9
- spec.authors = ["Tim Lawrence"]
10
- spec.email = ["tlawrence@skyscapecloud.com"]
11
-
12
- spec.summary = %q{Configure vCloud Director IPSec VPNs}
13
- spec.homepage = "https://github.com/skyscape-cloud-services"
14
-
15
- # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
16
- # delete this section to allow pushing this gem to any host.
17
- if spec.respond_to?(:metadata)
18
- spec.metadata['allowed_push_host'] = "https://rubygems.org"
19
- else
20
- raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
21
- end
22
-
23
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
24
- spec.bindir = "bin"
25
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
26
- spec.require_paths = ["lib"]
27
-
28
- spec.add_development_dependency "bundler", "~> 1.10"
29
- spec.add_development_dependency "rake", "~> 10.0"
30
- spec.add_development_dependency "rspec"
31
- spec.add_development_dependency "aruba"
32
-
33
- spec.add_runtime_dependency 'fog', '>=1.26.0'
34
- spec.add_runtime_dependency 'activesupport'
35
- spec.add_runtime_dependency 'thor'
36
- end
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "skyscape-vpn"
8
+ spec.version = Skyscape::Vcloud::Ipsec::VERSION
9
+ spec.authors = ["Tim Lawrence"]
10
+ spec.email = ["tlawrence@skyscapecloud.com"]
11
+
12
+ spec.summary = %q{Configure vCloud Director IPSec VPNs}
13
+ spec.homepage = "https://github.com/skyscape-cloud-services"
14
+
15
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
16
+ # delete this section to allow pushing this gem to any host.
17
+ if spec.respond_to?(:metadata)
18
+ spec.metadata['allowed_push_host'] = "https://rubygems.org"
19
+ else
20
+ raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
21
+ end
22
+
23
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
24
+ spec.bindir = "bin"
25
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
26
+ spec.require_paths = ["lib"]
27
+
28
+ spec.add_development_dependency "bundler", "~> 1.10"
29
+ spec.add_development_dependency "rake", "~> 10.0"
30
+ spec.add_development_dependency "rspec"
31
+ spec.add_development_dependency "aruba"
32
+
33
+ spec.add_runtime_dependency 'fog', '>=1.26.0'
34
+ spec.add_runtime_dependency 'thor'
35
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skyscape-vpn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Lawrence
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-29 00:00:00.000000000 Z
11
+ date: 2016-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: 1.26.0
83
- - !ruby/object:Gem::Dependency
84
- name: activesupport
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: thor
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -148,9 +134,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
134
  version: '0'
149
135
  requirements: []
150
136
  rubyforge_project:
151
- rubygems_version: 2.0.3
137
+ rubygems_version: 2.5.1
152
138
  signing_key:
153
139
  specification_version: 4
154
140
  summary: Configure vCloud Director IPSec VPNs
155
141
  test_files: []
156
- has_rdoc: