fog-ukcloud 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.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MWExOWRlMmMwNWE1OTJlYWM4NGRkMWE3ZTE1NTg1MDJhNzgxOGNmNg==
5
+ data.tar.gz: !binary |-
6
+ NGFmMmE0N2UzY2VjZjQ4ZjE3NDg3NmFiOGMxZTk2NDNhY2Q2YzNjZg==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ZTMyZThmNjIwYjdkYTEzOWNmYjIwNjFkZTBlNzVhMDBjNWIyMzc0MTBhOGI3
10
+ NmM2NGFhNTA5ZDlhOGYwZDQ1NTljNmZiZWVmMDZlYzczMzg5N2VhOGJlNGYw
11
+ YWYxM2E3ODQ0YTdjOWVhZDQ2YWNjZTkxZjIwM2UyNTExYTJhMWI=
12
+ data.tar.gz: !binary |-
13
+ YjA5ZDY5MmQzMDgyZWY2NGY0MTM0ZWM2MjNhYjdjMTU5Y2M0OWI1OTc2NTc3
14
+ NTFjNzEwMDU4NDY3MmE4ZmZmMTZiMGEyNjliYTMyNjA5M2UwM2FiNGJiYmJl
15
+ ZGYwMDQ4ZjFkMmY1MDY0ZDliMDE1MDViOGU4NzNlMjhkZWZjOWQ=
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,25 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 1.9
5
+ - 2.0
6
+ - 2.1
7
+ - 2.2
8
+ - 2.3.0
9
+
10
+ before_install: gem install bundler -v 1.12.5
11
+
12
+ script: bundle exec rake record
13
+
14
+
15
+ deploy:
16
+ provider: rubygems
17
+ api_key:
18
+ secure: Gfvy4NhVw0Fr+DVhq4AxvJq5ApdTdyrHd3PcyciUReNp7eRdVv0PecLobwVYIUi3xBJNMWZs8xOIHMMJ2pj+fezNBDsg85HZLO0UcbpwMpllf41SFJFt+JyhQFAkd4Ed2Z4UyFnKrB96+y8eoPcerSKG8KhkibSZkEwTd6wK7Y2Dd90JbozvcIBHujMtB8Uoy5ceABUUynA7aPqVweL8BsS3l8Aq7fWSW9/wDTFgYcyYZb+B96H7zLbH6Zb9RQ5xsXev93aXD9J2sVGKS+Td12P8BmDoT28tD9qe73Fcg7dYYD+gQpLMbPe32AThHBmYPeCLRp6vOcOpmjby2+EItrP8rxJ/imjQbsmhIxham6IBKMeA/J5ytq4b9r10tSiTBewk14icr/Jn6j6dN21R5BSSUI8QZXbo01wD7x5fUwyZBQPbk3DkVeLc5UIxHBZ9a8CQfmMkyeVypXKRStG9nT2JdHm2wESCKgJt9mCpGis/4eVELF0PgcwEWAK/Ktv+VDrTRWGHXAiekVbY2cSFRCvxBScTGz7opMSxmovYm1LqsdFT3FCSK9lnk+oH4OfrQNyr+tCqpQHQeH1LssofLMOeLBp4H1UcbaxDltTs0bDzpXyXx5gXJ5AF1kyoOHuNobrRiyeiLtClFVV65NJqeE0CyUu84dUOv7V55O2D0ak=
19
+ on:
20
+ tags: true
21
+
22
+
23
+ notifications:
24
+ slack:
25
+ secure: WQ1v6XL0he7nxhYUoXMCmQ7mxeSNQsz54z+yVw0LhDDIoWuhPmucV9es/yjTrebe7ZfrM8bmxYLxVVKgphQiXmZx/T76z3zZLNv/BfisLQeT2h1AVxHZ78UK8D3nTrdHM0rvosDv2dq6hC0WxtAZWEP/mGf3Nk+4dBLr4scddYyatApThCD50g1uX/kFs6a44OQ+NrxHFgWgN3NUkUDMMylhtd1mXmy1UDPlElc5h/tAspnrfOh4LwZeKl7lz1CdNDMJURwx8ZdVY22EvwPZISxCa4X6oYpoRoXt2zJ/JJE+H6ICwbo1nXbR6dMHnaZ0EWqgkIQUpGQixAdrsyBt8ddV+lrl6HzyMJcno7aae68oHyipJ5pv8/qQsbLlMlOPWCMeIXZpnzaE/dDLLy/3MZHUa4AWfv0xIHKJN7bhKz8dxfc8bqy/KHvIbbAAWUUBub2F9SRb4LK265skIZmIOLCgqAtKp3THwmhucJhLX4+Gt5ioCx6Cw/HDLD8g4uqR9eUPpRyLVn/ntEzERNPhqWzaHHesIVb3mNfOW3AtLkKfxtdICX4be5AGuhbvKljiFDyf7X582UrbfmfnV1Tjb8elDl8i9/bXFrrv+XtdFuvp2aioIZp81KX9BMVBXiDfugTVLjvwYuGxbxP75cym7jg1uYsMwvKduouQ+N9BRxE=
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in fog-ukcloud.gemspec
4
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Tim Lawrence
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,38 @@
1
+ [![Build Status](https://travis-ci.org/UKCloud/fog-ukcloud.svg?branch=master)](https://travis-ci.org/UKCloud/fog-ukcloud)
2
+ [![Gem Version](https://badge.fury.io/rb/fog-ukcloud.svg)](http://badge.fury.io/rb/fog-ukcloud)
3
+
4
+
5
+ # UKCloud Portal API Client
6
+
7
+ ## Introduction
8
+
9
+ Collection and Model representation in ukcloud fog provider.
10
+
11
+ ```no-highlight
12
+ todo: describe model
13
+ ```
14
+
15
+ ### Actions
16
+
17
+ Every collection supports the following methods:
18
+
19
+ Method Name | Lazy Load
20
+ ----------------- | ---------
21
+ get(id) | false
22
+ get_by_name(name) | false
23
+ all | true
24
+
25
+ ## Initialization
26
+
27
+ ```ruby
28
+ require 'fog/ukcloud'
29
+
30
+ ukcloud = Fog::Compute::UKCloud.new(
31
+ :ukcloud_username => "<user email address>",
32
+ :ukcloud_password => "<password>",
33
+ :ukcloud_host => '<portal hostname or omit for default>'
34
+ )
35
+ ```
36
+
37
+
38
+
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+ RSpec::Core::RakeTask.new(:spec)
4
+
5
+ task :default => :spec
6
+
7
+ task :record do
8
+ ENV['VCR_RECORDING'] = 'true'
9
+ sh("export FOG_MOCK=false && bundle exec rspec")
10
+ end
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'fog/ukcloud/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "fog-ukcloud"
8
+ spec.version = Fog::Ukcloud::VERSION
9
+ spec.authors = ["Tim Lawrence"]
10
+ spec.email = ["tlawrence@ukcloud.com"]
11
+
12
+ spec.summary = "Module for 'Fog' gem to support UKCloud's REST API"
13
+ spec.homepage = "https://www.ukcloud.com"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.bindir = "exe"
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.12"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rspec", "~> 3.0"
24
+ spec.add_development_dependency "vcr", "~> 3.0"
25
+ spec.add_development_dependency "webmock"
26
+
27
+ spec.add_dependency 'fog-core'
28
+ spec.add_dependency 'fog-json'
29
+ spec.add_dependency 'fog-xml'
30
+ end
@@ -0,0 +1,14 @@
1
+ require 'fog/core'
2
+ require 'fog/ukcloud/errors'
3
+
4
+ module Fog
5
+ module UKCloud
6
+ extend Fog::Provider
7
+ service(:compute, 'Compute')
8
+ end
9
+
10
+ module Compute
11
+ autoload :UKCloud, File.expand_path('../ukcloud/compute', __FILE__)
12
+ end
13
+
14
+ end
@@ -0,0 +1,105 @@
1
+ require 'fog/xml'
2
+ require 'fog/json'
3
+
4
+ module Fog
5
+ module Compute
6
+ class UKCloud < Fog::Service
7
+
8
+ recognizes :ukcloud_endpoint
9
+ requires :ukcloud_username, :ukcloud_password
10
+ secrets :ukcloud_password
11
+
12
+ # Models
13
+ model_path 'fog/ukcloud/models/compute'
14
+ #collection :servers
15
+ #model :server
16
+
17
+ # Requests
18
+ request_path 'fog/ukcloud/requests/compute'
19
+ #request :power_on_vm
20
+ request :post_login_session
21
+ request :get_my_vm
22
+ request :get_ping
23
+
24
+ class Real
25
+
26
+ UKCLOUD_DEFAULT_ENDPOINT = 'portal.skyscapecloud.com'
27
+ attr_reader :ukcloud_username, :ukcloud_endpoint, :cookies
28
+
29
+ def initialize(options={})
30
+ @ukcloud_username = options[:ukcloud_username]
31
+ @ukcloud_password = options[:ukcloud_password]
32
+ @ukcloud_endpoint = options[:ukcloud_endpoint] || UKCLOUD_DEFAULT_ENDPOINT
33
+ @path = 'api'
34
+ @connection_options = options[:connection_options] || {}
35
+ @connection_options[:omit_default_port] = true unless @connection_options[:omit_default_port]
36
+ @cookies = ''
37
+
38
+ scheme = 'https'
39
+ port = '443'
40
+ url = sprintf('%s://%s:%s', scheme, @ukcloud_endpoint, port)
41
+
42
+ @connection = Fog::XML::Connection.new(url, false, @connection_options)
43
+ end
44
+
45
+
46
+ def get_cookies
47
+ login if @cookies.empty?
48
+ @cookies
49
+ end
50
+
51
+
52
+ def request(params)
53
+ path = params[:path]
54
+ params[:body] = Fog::JSON.encode(params[:body]) if params[:body]
55
+ begin
56
+
57
+
58
+ headers = {
59
+ 'Accept' => 'application/json',
60
+ 'Content-Type' => 'application/json',
61
+ 'Cookie' => get_cookies
62
+ }
63
+
64
+ @connection.request({
65
+ :body => params[:body],
66
+ :expects => params[:expects],
67
+ :headers => headers.merge!(params[:headers] || {}),
68
+ :idempotent => params[:idempotent],
69
+ :method => params[:method],
70
+ :parser => params[:parser],
71
+ :path => path,
72
+ :query => params[:query]
73
+ })
74
+ rescue Excon::Errors::HTTPStatusError => error
75
+ raise case error
76
+ when Excon::Errors::BadRequest then Fog::UKCloud::Errors::BadRequest.slurp(error);
77
+ when Excon::Errors::Unauthorized then Fog::UKCloud::Errors::Unauthorised.slurp(error);
78
+ when Excon::Errors::Forbidden then Fog::UKCloud::Errors::Forbidden.slurp(error);
79
+ when Excon::Errors::Conflict then Fog::UKCloud::Errors::Conflict.slurp(error);
80
+ else
81
+ Fog::UKCloud::Errors::ServiceError.slurp(error)
82
+ end
83
+ end
84
+ end
85
+
86
+
87
+ def login
88
+ response = post_login_session
89
+ @cookies = response.headers['Set-Cookie']
90
+ if response[:cookies].empty? && response.status == 201 then
91
+ err = RuntimeError.new("No Cookie In Response")
92
+ raise Fog::UKCloud::Errors::ServiceError.slurp(err)
93
+ end
94
+
95
+ end
96
+
97
+ end #Real
98
+
99
+ class Mock
100
+
101
+ end
102
+
103
+ end #UKCloud
104
+ end #Compute
105
+ end #Fog
@@ -0,0 +1,32 @@
1
+ module Fog
2
+ module UKCloud
3
+ module Errors
4
+ class ServiceError < Fog::Errors::Error
5
+ attr_reader :status_code
6
+
7
+ def self.slurp(error, service=nil)
8
+ status_code = nil
9
+ if error.response
10
+ status_code = error.response.status
11
+ unless error.response.body.empty?
12
+ begin
13
+ document = Nokogiri::XML(error.response.body)
14
+ message = document.xpath('//error').text
15
+ rescue => e
16
+ Fog::Logger.warning("Received exception '#{e}' while decoding>> #{error.response.body}")
17
+ message = error.response.body
18
+ end
19
+ end
20
+ end
21
+
22
+ new_error = super(error, message)
23
+ new_error.instance_variable_set(:@status_code, status_code)
24
+ new_error
25
+ end
26
+ end
27
+
28
+ class Unauthorised < ServiceError; end
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,18 @@
1
+ module Fog
2
+ module Compute
3
+ class UKCloud
4
+ class Real
5
+ def get_my_vm
6
+
7
+ request(
8
+ :expects => 200,
9
+ :method => 'GET',
10
+ :parser => Fog::ToHashDocument.new,
11
+ :path => "#{@path}/my_vm"
12
+ )
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module Fog
2
+ module Compute
3
+ class UKCloud
4
+ class Real
5
+ def get_ping
6
+
7
+ request(
8
+ :expects => 200,
9
+ :method => 'GET',
10
+ #:parser => Fog::ToHashDocument.new,
11
+ :path => "#{@path}/ping"
12
+ )
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,39 @@
1
+ require 'fog/json'
2
+
3
+ module Fog
4
+ module Compute
5
+ class UKCloud
6
+ class Real
7
+ def post_login_session
8
+
9
+ body = {
10
+ :email => @ukcloud_username,
11
+ :password => @ukcloud_password
12
+ }
13
+
14
+ begin
15
+
16
+ @connection.request(
17
+ :headers => {'Accept' => 'application/json'},
18
+ :expects => 201,
19
+ :method => 'POST',
20
+ :body => Fog::JSON.encode(body),
21
+ :path => "#{@path}/authenticate"
22
+ )
23
+ rescue Excon::Errors::HTTPStatusError => error
24
+ raise case error
25
+ when Excon::Errors::BadRequest then Fog::UKCloud::Errors::BadRequest.slurp(error);
26
+ when Excon::Errors::Unauthorized then Fog::UKCloud::Errors::Unauthorised.slurp(error);
27
+ when Excon::Errors::Forbidden then Fog::UKCloud::Errors::Forbidden.slurp(error);
28
+ when Excon::Errors::Conflict then Fog::UKCloud::Errors::Conflict.slurp(error);
29
+ else
30
+ Fog::UKCloud::Errors::ServiceError.slurp(error)
31
+ end
32
+ end
33
+
34
+
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,47 @@
1
+
2
+ module Fog
3
+ module UKCloud
4
+ class Service
5
+
6
+ def ws_enduser_url(url=nil)
7
+ @ws_enduser_url = url || Fog::UKCloud::DEFAULT_WS_ENDUSER_URL
8
+ end
9
+
10
+ def _request(options)
11
+ http_method = options[:http_method] || :get
12
+ @request_url = "#{@ws_enduser_url}/#{options[:method]}"
13
+
14
+ params = {headers: headers}
15
+ params[:expects] = options[:expected] || [200, 201]
16
+ unless options[:body].nil?
17
+ params[:body] = options[:body]
18
+ end
19
+ params[:read_timeout] = 360
20
+
21
+ # initialize connection object
22
+ @connection = Fog::Core::Connection.new(@request_url, false, params)
23
+
24
+ # send request
25
+ begin
26
+ response = @connection.request(:method => http_method)
27
+ rescue Excon::Errors::Timeout
28
+ # raise an error
29
+ raise Fog::UKCloud::Errors::RequestTimeOut.new(
30
+ "Request timed out after: #{60 unless params[:read_timeout]}"
31
+ )
32
+ end
33
+
34
+ # decode the response and return it
35
+ Fog::JSON.decode(response.body)
36
+ end
37
+
38
+ def headers(options={})
39
+ {'Content-Type' => 'application/json'}.merge(options[:headers] || {})
40
+ end
41
+
42
+ def login
43
+
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,5 @@
1
+ module Fog
2
+ module Ukcloud
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,172 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fog-ukcloud
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Tim Lawrence
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-10-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.12'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.12'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: vcr
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: fog-core
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
+ - !ruby/object:Gem::Dependency
98
+ name: fog-json
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: fog-xml
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description:
126
+ email:
127
+ - tlawrence@ukcloud.com
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - .gitignore
133
+ - .rspec
134
+ - .travis.yml
135
+ - Gemfile
136
+ - LICENSE.txt
137
+ - README.md
138
+ - Rakefile
139
+ - fog-ukcloud.gemspec
140
+ - lib/fog/ukcloud.rb
141
+ - lib/fog/ukcloud/compute.rb
142
+ - lib/fog/ukcloud/errors.rb
143
+ - lib/fog/ukcloud/requests/compute/get_my_vm.rb
144
+ - lib/fog/ukcloud/requests/compute/get_ping.rb
145
+ - lib/fog/ukcloud/requests/compute/post_login_session.rb
146
+ - lib/fog/ukcloud/service.rb
147
+ - lib/fog/ukcloud/version.rb
148
+ homepage: https://www.ukcloud.com
149
+ licenses:
150
+ - MIT
151
+ metadata: {}
152
+ post_install_message:
153
+ rdoc_options: []
154
+ require_paths:
155
+ - lib
156
+ required_ruby_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ! '>='
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ required_rubygems_version: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ requirements: []
167
+ rubyforge_project:
168
+ rubygems_version: 2.4.5
169
+ signing_key:
170
+ specification_version: 4
171
+ summary: Module for 'Fog' gem to support UKCloud's REST API
172
+ test_files: []