fog-cloudian 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.ruby-version +1 -0
- data/.travis.yml +7 -0
- data/CONTRIBUTORS.md +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +66 -0
- data/LICENSE.md +9 -0
- data/README.md +72 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/fog-cloudian.gemspec +46 -0
- data/lib/fog-cloudian.rb +1 -0
- data/lib/fog/cloudian.rb +22 -0
- data/lib/fog/cloudian/admin.rb +87 -0
- data/lib/fog/cloudian/requests/admin/create_credentials.rb +13 -0
- data/lib/fog/cloudian/requests/admin/create_group.rb +12 -0
- data/lib/fog/cloudian/requests/admin/create_user.rb +14 -0
- data/lib/fog/cloudian/requests/admin/delete_group.rb +12 -0
- data/lib/fog/cloudian/requests/admin/delete_user.rb +12 -0
- data/lib/fog/cloudian/requests/admin/get_group.rb +12 -0
- data/lib/fog/cloudian/requests/admin/get_user.rb +13 -0
- data/lib/fog/cloudian/requests/admin/set_password.rb +30 -0
- data/lib/fog/cloudian/requests/admin/set_qos_limits.rb +29 -0
- data/lib/fog/cloudian/requests/admin/update_user.rb +18 -0
- data/lib/fog/cloudian/storage.rb +13 -0
- data/lib/fog/cloudian/version.rb +5 -0
- metadata +168 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 16ef943c1d327ad55cbb69280b6abb13e756dcc329be6996cc5bdd29701b2710
|
4
|
+
data.tar.gz: b049896da6f7a8f1e41639b6d963e231f16e4cefa14ba75698506745d6fa2d67
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 69199d7b46d9108244bc2b1f13b1b9345ced6b3dca460f2e192e4677c59f3eb90a8ab5ec607255bcffe1132c28f857f4d6e2dd3e92fb27c781ab7b55a292149c
|
7
|
+
data.tar.gz: e07d813b432a93f111fa5c65ade1967433535b3832e42b4dc8fae70b69f264260994096ce2bac2e6ccedf6f1857c71105296e76227c54e474d4d3b605b44e046
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.6.5
|
data/.travis.yml
ADDED
data/CONTRIBUTORS.md
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
* Phil Hofmann <phil@200ok.ch>
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
fog-cloudian (0.1.0)
|
5
|
+
fog-aws (~> 3.5.2)
|
6
|
+
fog-core (~> 2.1)
|
7
|
+
fog-json (~> 1.1)
|
8
|
+
ipaddress (~> 0.8)
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: https://rubygems.org/
|
12
|
+
specs:
|
13
|
+
builder (3.2.4)
|
14
|
+
diff-lcs (1.3)
|
15
|
+
excon (0.71.1)
|
16
|
+
fog-aws (3.5.2)
|
17
|
+
fog-core (~> 2.1)
|
18
|
+
fog-json (~> 1.1)
|
19
|
+
fog-xml (~> 0.1)
|
20
|
+
ipaddress (~> 0.8)
|
21
|
+
fog-core (2.2.0)
|
22
|
+
builder
|
23
|
+
excon (~> 0.71)
|
24
|
+
formatador (~> 0.2)
|
25
|
+
mime-types
|
26
|
+
fog-json (1.2.0)
|
27
|
+
fog-core
|
28
|
+
multi_json (~> 1.10)
|
29
|
+
fog-xml (0.1.3)
|
30
|
+
fog-core
|
31
|
+
nokogiri (>= 1.5.11, < 2.0.0)
|
32
|
+
formatador (0.2.5)
|
33
|
+
ipaddress (0.8.3)
|
34
|
+
mime-types (3.3.1)
|
35
|
+
mime-types-data (~> 3.2015)
|
36
|
+
mime-types-data (3.2019.1009)
|
37
|
+
mini_portile2 (2.4.0)
|
38
|
+
multi_json (1.14.1)
|
39
|
+
nokogiri (1.10.7)
|
40
|
+
mini_portile2 (~> 2.4.0)
|
41
|
+
rake (10.5.0)
|
42
|
+
rspec (3.9.0)
|
43
|
+
rspec-core (~> 3.9.0)
|
44
|
+
rspec-expectations (~> 3.9.0)
|
45
|
+
rspec-mocks (~> 3.9.0)
|
46
|
+
rspec-core (3.9.1)
|
47
|
+
rspec-support (~> 3.9.1)
|
48
|
+
rspec-expectations (3.9.0)
|
49
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
50
|
+
rspec-support (~> 3.9.0)
|
51
|
+
rspec-mocks (3.9.1)
|
52
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
53
|
+
rspec-support (~> 3.9.0)
|
54
|
+
rspec-support (3.9.2)
|
55
|
+
|
56
|
+
PLATFORMS
|
57
|
+
ruby
|
58
|
+
|
59
|
+
DEPENDENCIES
|
60
|
+
bundler (~> 2.0)
|
61
|
+
fog-cloudian!
|
62
|
+
rake (~> 10.0)
|
63
|
+
rspec (~> 3.0)
|
64
|
+
|
65
|
+
BUNDLED WITH
|
66
|
+
2.1.4
|
data/LICENSE.md
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2019 [[CONTRIBUTORS.md]]
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
6
|
+
|
7
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
8
|
+
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
# Fog::Cloudian
|
2
|
+
|
3
|
+
|
4
|
+
This is a Fog API wrapper for the Cloudian Hyperstore REST APIs (Admin
|
5
|
+
& S3). For S3 this is just a shim for fog-aws.
|
6
|
+
|
7
|
+
Currently about 13% (10 out of 77 API calls) of the Admin API are
|
8
|
+
covered. Hence there is plenty of opportunity for some FOSS
|
9
|
+
contribution here.
|
10
|
+
|
11
|
+
Also this library does not provide proper mock requests, yet. Which
|
12
|
+
means more opportunities to get you feet wet. ;)
|
13
|
+
|
14
|
+
## Installation
|
15
|
+
|
16
|
+
Add this line to your application's Gemfile:
|
17
|
+
|
18
|
+
```
|
19
|
+
gem 'fog-cloudian'
|
20
|
+
```
|
21
|
+
|
22
|
+
And then execute:
|
23
|
+
|
24
|
+
```
|
25
|
+
$ bundle
|
26
|
+
```
|
27
|
+
|
28
|
+
Or install it yourself as:
|
29
|
+
|
30
|
+
```
|
31
|
+
$ gem install fog-cloudian
|
32
|
+
```
|
33
|
+
|
34
|
+
## Usage
|
35
|
+
|
36
|
+
Before you can use fog-cloudian, you must require it in your application:
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
require 'fog/cloudian'
|
40
|
+
```
|
41
|
+
|
42
|
+
### Connecting to Cloudian's Admin API
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
config = {
|
46
|
+
user: '[REDACTED]',
|
47
|
+
password: '[REDACTED]',
|
48
|
+
host: '[REDACTED]',
|
49
|
+
port: 19443,
|
50
|
+
ssl_verify_peer: true
|
51
|
+
}
|
52
|
+
|
53
|
+
cloudian = Fog::Cloudian::Admin.new(config)
|
54
|
+
```
|
55
|
+
|
56
|
+
You can review all the requests available with this service using #requests method:
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
cloudian.requests # => [[nil, :create_group], [nil, :get_group], [nil, :delete_group], ...
|
60
|
+
```
|
61
|
+
|
62
|
+
## Contributing
|
63
|
+
|
64
|
+
1. Fork it ( https://github.com/200ok-ch/fog-cloudian/fork )
|
65
|
+
1. Create your feature branch (`git checkout -b my-new-feature`)
|
66
|
+
1. Commit your changes (`git commit -am 'Add some feature'`)
|
67
|
+
1. Push to the branch (`git push origin my-new-feature`)
|
68
|
+
1. Create a new Pull Request
|
69
|
+
|
70
|
+
## License
|
71
|
+
|
72
|
+
see [LICENSE.md](LICENSE.md)
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "fog/cloudian"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'fog/cloudian/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'fog-cloudian'
|
7
|
+
spec.version = Fog::Cloudian::VERSION
|
8
|
+
spec.authors = ['Phil Hofmann']
|
9
|
+
spec.email = ['phil@200ok.ch']
|
10
|
+
|
11
|
+
spec.summary = %q{Fog API wrapper for the Cloudian Hyperstore REST APIs}
|
12
|
+
spec.description = %q{Fog API wrapper for the Cloudian Hyperstore REST APIs}
|
13
|
+
spec.homepage = 'https://github.com/200ok-ch/fog-cloudian'
|
14
|
+
|
15
|
+
# # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
16
|
+
# # to allow pushing to a single host or delete this section to allow pushing to any host.
|
17
|
+
# if spec.respond_to?(:metadata)
|
18
|
+
# spec.metadata['allowed_push_host'] = 'TODO: Set to "http://mygemserver.com"'
|
19
|
+
#
|
20
|
+
# spec.metadata['homepage_uri'] = spec.homepage
|
21
|
+
# spec.metadata['source_code_uri'] = 'TODO: Put your gem's public repo URL here.'
|
22
|
+
# spec.metadata['changelog_uri'] = 'TODO: Put your gem's CHANGELOG.md URL here.'
|
23
|
+
# else
|
24
|
+
# raise 'RubyGems 2.0 or newer is required to protect against ' \
|
25
|
+
# 'public gem pushes.'
|
26
|
+
# end
|
27
|
+
|
28
|
+
# Specify which files should be added to the gem when it is released.
|
29
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
30
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
31
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
32
|
+
end
|
33
|
+
spec.bindir = 'exe'
|
34
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
35
|
+
spec.require_paths = ['lib']
|
36
|
+
|
37
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
38
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
39
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
40
|
+
|
41
|
+
spec.add_dependency 'fog-aws', '~> 3.5.2'
|
42
|
+
spec.add_dependency 'fog-core', '~> 2.1'
|
43
|
+
spec.add_dependency 'fog-json', '~> 1.1'
|
44
|
+
# spec.add_dependency 'fog-xml', '~> 0.1'
|
45
|
+
spec.add_dependency 'ipaddress', '~> 0.8'
|
46
|
+
end
|
data/lib/fog-cloudian.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'fog/cloudian'
|
data/lib/fog/cloudian.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'fog/core'
|
2
|
+
require 'fog/xml'
|
3
|
+
require 'fog/json'
|
4
|
+
|
5
|
+
require File.expand_path("../cloudian/version", __FILE__)
|
6
|
+
|
7
|
+
$:.unshift(File.dirname(__FILE__))
|
8
|
+
|
9
|
+
module Fog
|
10
|
+
module Cloudian
|
11
|
+
extend Fog::Provider
|
12
|
+
|
13
|
+
autoload :Admin, File.expand_path('../cloudian/admin', __FILE__)
|
14
|
+
autoload :Storage, File.expand_path('../cloudian/storage', __FILE__)
|
15
|
+
|
16
|
+
service(:admin, 'Admin')
|
17
|
+
service(:storage, 'Storage')
|
18
|
+
|
19
|
+
class Error < StandardError; end
|
20
|
+
# Your code goes here...
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
module Fog
|
2
|
+
module Cloudian
|
3
|
+
class Admin < Fog::Service
|
4
|
+
|
5
|
+
requires :user, :password
|
6
|
+
recognizes :host, :port, :path, :persistent, :ssl_verify_peer
|
7
|
+
|
8
|
+
request_path 'fog/cloudian/requests/admin'
|
9
|
+
|
10
|
+
# group
|
11
|
+
request :create_group
|
12
|
+
request :get_group
|
13
|
+
request :delete_group
|
14
|
+
|
15
|
+
# user
|
16
|
+
request :create_user
|
17
|
+
request :get_user
|
18
|
+
request :update_user
|
19
|
+
request :delete_user
|
20
|
+
request :set_password
|
21
|
+
request :create_credentials
|
22
|
+
|
23
|
+
# qos
|
24
|
+
request :set_qos_limits
|
25
|
+
|
26
|
+
# model_path 'fog/cloudian/models/admin'
|
27
|
+
# model :group
|
28
|
+
# collection :groups
|
29
|
+
# model :user
|
30
|
+
# collection :users
|
31
|
+
|
32
|
+
def initialize(options={})
|
33
|
+
@options = options
|
34
|
+
end
|
35
|
+
|
36
|
+
class Real
|
37
|
+
def initialize(options={})
|
38
|
+
@user = options[:user]
|
39
|
+
@password = options[:password]
|
40
|
+
|
41
|
+
@host = options[:host]
|
42
|
+
@port = options[:port]
|
43
|
+
@path = options[:path] || '/'
|
44
|
+
@persistent = options[:persistent] || false
|
45
|
+
@ssl_verify_peer = true if options[:ssl_verify_peer] != false
|
46
|
+
|
47
|
+
url = "https://#{@host}:#{@port}#{@path}"
|
48
|
+
params = { user: @user,
|
49
|
+
password: @password,
|
50
|
+
# NOTE: cloudians error messages always seem to be HTML
|
51
|
+
headers: {"Accept" => "application/json"},
|
52
|
+
ssl_verify_peer: @ssl_verify_peer }
|
53
|
+
@connection = Fog::Core::Connection.new(url, @persistent, params)
|
54
|
+
end
|
55
|
+
|
56
|
+
def request(method, path, payload, query=nil)
|
57
|
+
# NOTE: on success cloudian always returns a 200, they don't
|
58
|
+
# know any other status codes, nor redirects
|
59
|
+
params = { method: method, path: path, expects: [200] }
|
60
|
+
params[:body] = Fog::JSON.encode(payload) if payload
|
61
|
+
params[:query] = query if query
|
62
|
+
|
63
|
+
response = @connection.request(params)
|
64
|
+
|
65
|
+
if response.body.empty?
|
66
|
+
:success_with_empty_body
|
67
|
+
else
|
68
|
+
case response.headers['Content-Type']
|
69
|
+
when /^application\/json/
|
70
|
+
# puts response.body
|
71
|
+
Fog::JSON.decode(response.body)
|
72
|
+
else
|
73
|
+
response.headers['Content-Type']
|
74
|
+
end
|
75
|
+
end
|
76
|
+
# rescue Excon::Errors::HTTPStatusError => error
|
77
|
+
# error
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
class Mock
|
82
|
+
def initialize(options={})
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Fog
|
2
|
+
module Cloudian
|
3
|
+
class Admin
|
4
|
+
class Real
|
5
|
+
def create_credentials(user_name, group_name)
|
6
|
+
request(:put, 'user/credentials', nil, { userId: user_name,
|
7
|
+
groupId: group_name })
|
8
|
+
# this returns "credentials object" in JSON
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Fog
|
2
|
+
module Cloudian
|
3
|
+
class Admin
|
4
|
+
class Real
|
5
|
+
def create_user(user_name, group_name, user_type='User')
|
6
|
+
request(:put, 'user', { userId: user_name,
|
7
|
+
groupId: group_name,
|
8
|
+
userType: user_type })
|
9
|
+
# this returns a "user object" as JSON
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Fog
|
2
|
+
module Cloudian
|
3
|
+
class Admin
|
4
|
+
class Real
|
5
|
+
def set_password(user_name, group_name, password)
|
6
|
+
# POST /user/password Create or change a user's CMC password
|
7
|
+
#
|
8
|
+
# Minimum of nine characters, maximum of 64 characters
|
9
|
+
# Must contain at least three of these four types of characters:
|
10
|
+
# o Lower case letters
|
11
|
+
# o Upper case letters
|
12
|
+
# o Numbers
|
13
|
+
# o Special characters such as !, @, #, $, %, ^, etc.
|
14
|
+
|
15
|
+
request(:post, 'user/password', nil, { userId: user_name,
|
16
|
+
groupId: group_name,
|
17
|
+
password: password })
|
18
|
+
|
19
|
+
# This returns a 200 with an empty body.
|
20
|
+
#
|
21
|
+
# Unless the user does not exist then you'll get a...
|
22
|
+
#
|
23
|
+
# "204 User does not exist"
|
24
|
+
#
|
25
|
+
# ROFLMAO.
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Fog
|
2
|
+
module Cloudian
|
3
|
+
class Admin
|
4
|
+
class Real
|
5
|
+
|
6
|
+
QOS_LIMITS_DEFAULTS = {
|
7
|
+
userId: '*', # TODO: maybe use 'ALL' instead
|
8
|
+
# groupId: '...', # required
|
9
|
+
storageQuotaKBytes: -1,
|
10
|
+
storageQuotaCount: -1,
|
11
|
+
wlRequestRate: -1,
|
12
|
+
hlRequestRate: -1,
|
13
|
+
wlDataKBytesIn: -1,
|
14
|
+
hlDataKBytesIn: -1,
|
15
|
+
wlDataKBytesOut: -1,
|
16
|
+
hlDataKBytesOut: -1
|
17
|
+
}
|
18
|
+
|
19
|
+
def set_qos_limits(qos_details)
|
20
|
+
raise 'groupId must be given' unless qos_details[:groupId]
|
21
|
+
details = QOS_LIMITS_DEFAULTS.merge(qos_details)
|
22
|
+
# POST /qos/limits Create QoS settings for a user or group
|
23
|
+
request(:post, 'qos/limits', nil, details)
|
24
|
+
# this returns a 200 with an empty body
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Fog
|
2
|
+
module Cloudian
|
3
|
+
class Admin
|
4
|
+
class Real
|
5
|
+
def update_user(user_details)
|
6
|
+
# The `user_details` must either have `canonicalUserId` XOR
|
7
|
+
# (`userId` AND `groupId`). @cloudian: What are you doing?
|
8
|
+
if user_details["canonicalUserId"]
|
9
|
+
user_details.delete("userId")
|
10
|
+
user_details.delete("groupId")
|
11
|
+
end
|
12
|
+
|
13
|
+
request(:post, 'user', user_details)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'fog/aws'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module Cloudian
|
5
|
+
|
6
|
+
# this is just a shim, as cloudian provides a s3 compatible api
|
7
|
+
Storage = Fog::AWS::Storage
|
8
|
+
|
9
|
+
# If need be we could still repoen the class and override methods
|
10
|
+
# to account for any idiosyncracies.
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
metadata
ADDED
@@ -0,0 +1,168 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fog-cloudian
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Phil Hofmann
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-01-08 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: '2.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
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: fog-aws
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 3.5.2
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 3.5.2
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: fog-core
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.1'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.1'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: fog-json
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.1'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.1'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: ipaddress
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.8'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.8'
|
111
|
+
description: Fog API wrapper for the Cloudian Hyperstore REST APIs
|
112
|
+
email:
|
113
|
+
- phil@200ok.ch
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- ".gitignore"
|
119
|
+
- ".rspec"
|
120
|
+
- ".ruby-version"
|
121
|
+
- ".travis.yml"
|
122
|
+
- CONTRIBUTORS.md
|
123
|
+
- Gemfile
|
124
|
+
- Gemfile.lock
|
125
|
+
- LICENSE.md
|
126
|
+
- README.md
|
127
|
+
- Rakefile
|
128
|
+
- bin/console
|
129
|
+
- bin/setup
|
130
|
+
- fog-cloudian.gemspec
|
131
|
+
- lib/fog-cloudian.rb
|
132
|
+
- lib/fog/cloudian.rb
|
133
|
+
- lib/fog/cloudian/admin.rb
|
134
|
+
- lib/fog/cloudian/requests/admin/create_credentials.rb
|
135
|
+
- lib/fog/cloudian/requests/admin/create_group.rb
|
136
|
+
- lib/fog/cloudian/requests/admin/create_user.rb
|
137
|
+
- lib/fog/cloudian/requests/admin/delete_group.rb
|
138
|
+
- lib/fog/cloudian/requests/admin/delete_user.rb
|
139
|
+
- lib/fog/cloudian/requests/admin/get_group.rb
|
140
|
+
- lib/fog/cloudian/requests/admin/get_user.rb
|
141
|
+
- lib/fog/cloudian/requests/admin/set_password.rb
|
142
|
+
- lib/fog/cloudian/requests/admin/set_qos_limits.rb
|
143
|
+
- lib/fog/cloudian/requests/admin/update_user.rb
|
144
|
+
- lib/fog/cloudian/storage.rb
|
145
|
+
- lib/fog/cloudian/version.rb
|
146
|
+
homepage: https://github.com/200ok-ch/fog-cloudian
|
147
|
+
licenses: []
|
148
|
+
metadata: {}
|
149
|
+
post_install_message:
|
150
|
+
rdoc_options: []
|
151
|
+
require_paths:
|
152
|
+
- lib
|
153
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
154
|
+
requirements:
|
155
|
+
- - ">="
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
|
+
requirements:
|
160
|
+
- - ">="
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '0'
|
163
|
+
requirements: []
|
164
|
+
rubygems_version: 3.0.3
|
165
|
+
signing_key:
|
166
|
+
specification_version: 4
|
167
|
+
summary: Fog API wrapper for the Cloudian Hyperstore REST APIs
|
168
|
+
test_files: []
|