foggy 0.0.1 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c490cca53cfdbed79e0f048f8ce615e77960f0c5
4
- data.tar.gz: 502c5ca73c18bfb40fd40d94a99c164f714b75c6
3
+ metadata.gz: f97e54a3d4728f9dd618c4d1099daedab7b942e4
4
+ data.tar.gz: 20271b9bebfed9e00b4dfa9eccd3fb9970661e48
5
5
  SHA512:
6
- metadata.gz: 169110e34e63973858b061118bfa1ac7d1b200d668d2857b619441e0d2f6eabbea03d9f19f86d3d8c983499b37e9dff11e0e266cf7a50aeaca58cebfa2b69361
7
- data.tar.gz: 38f27b2a2c54f66db58bfb6a3b84879495313ebafeb35133a9990d4f6ba4192d3d16dedb4aecd4cc77c518349d9c5b2b709c269157dbf1fb7aba0dad2d5ce76b
6
+ metadata.gz: 91b5977b3acfa71a4b2fbba2ce65e4b21789fe1da77b79d43aa62743716a951ae279b1e54686fcbc8e627f9c98a3cf6241351ae2f32f4aecc2ddc03fb75c8c49
7
+ data.tar.gz: 6b0da7f3b5814007038926afccecf4a63ee91a13b9cc7b0bc4c003bd2ea274982da233ef20b686130c4d708c1667ee95516abd50d1f51c9e5969fb07bb4a5dc5
data/README.md CHANGED
@@ -1 +1,122 @@
1
- # foggy
1
+ # Introduction
2
+
3
+ Foggy is providing Collections for Openstack.
4
+ Foggy is using Misty for Openstack APIs conduit.
5
+
6
+
7
+ ```ruby
8
+ require 'foggy'
9
+
10
+ auth = {
11
+ :url => "http://192.0.2.21:5000",
12
+ :user => "admin",
13
+ :password => "secret",
14
+ :project => "admin",
15
+ :domain => "default"
16
+ }
17
+
18
+ cloud = Foggy::Cloud.new(:auth => auth)
19
+ ```
20
+
21
+ ```
22
+ pry(main)> cloud.networking.class
23
+ => Foggy::Networking
24
+ ```
25
+
26
+ ```
27
+ pry(main)> cloud.networking.networks.class
28
+ => Foggy::Networking::Networks
29
+ ```
30
+
31
+ ```
32
+ pry(main)> networks = cloud.networking.networks.all
33
+ => [#<Foggy::Networking::Networks::Network:0x007faa5718f2a0
34
+ @admin_state_up=true,
35
+ @availability_zone_hints=[],
36
+ @availability_zones=[],
37
+ @created_at="2016-11-14T04:23:49",
38
+ @description="",
39
+ @id="67ef2b90-6217-4c0d-a022-80e48f7f60e6",
40
+ @ipv4_address_scope=nil,
41
+ @ipv6_address_scope=nil,
42
+ @is_default=false,
43
+ @mtu=1450,
44
+ @name="Test2",
45
+ @port_security_enabled=true,
46
+ @provider={"physical_network"=>nil, "segmentation_id"=>69, "network_type"=>"vxlan"},
47
+ @qos_policy_id=nil,
48
+ @router={"external"=>true},
49
+ @shared=false,
50
+ @status="ACTIVE",
51
+ @subnets=[],
52
+ @tags=[],
53
+ @tenant_id="48985e6b8da145699d411f12a3459fca",
54
+ @updated_at="2016-11-14T04:23:49">,
55
+ #<Foggy::Networking::Networks::Network:0x007faa5718ab38
56
+ @admin_state_up=true,
57
+ @availability_zone_hints=[],
58
+ @availability_zones=["nova"],
59
+ @created_at="2016-11-14T04:06:39",
60
+ @description="",
61
+ @id="f3180183-9e7a-42d7-b76a-23b2c95af121",
62
+ @ipv4_address_scope=nil,
63
+ @ipv6_address_scope=nil,
64
+ @mtu=1450,
65
+ @name="Test1",
66
+ @port_security_enabled=true,
67
+ @provider={"physical_network"=>nil, "segmentation_id"=>75, "network_type"=>"vxlan"},
68
+ @qos_policy_id=nil,
69
+ @router={"external"=>false},
70
+ @shared=false,
71
+ @status="ACTIVE",
72
+ @subnets=["60fe7990-3db3-4149-a46a-d7a6454a3f2e"],
73
+ @tags=[],
74
+ @tenant_id="48985e6b8da145699d411f12a3459fca",
75
+ ```
76
+
77
+ ```
78
+ pry(main)> networks[0].id
79
+ => "67ef2b90-6217-4c0d-a022-80e48f7f60e6"
80
+ ```
81
+
82
+ ```
83
+ pry(main)> networks[0].name
84
+ => "Test1"
85
+ ```
86
+
87
+ ```
88
+ pry(main)> networks[0].class
89
+ => Foggy::Networking::Networks::Network
90
+ ```
91
+
92
+ ```
93
+ pry(main)> network = cloud.networking.networks.get("f3180183-9e7a-42d7-b76a-23b2c95af121")
94
+ ../...
95
+ network.name="new name"
96
+ ```
97
+
98
+ ```
99
+ pry(main)> cloud.networking.networks.reload
100
+ .../...
101
+ ```
102
+
103
+ ```
104
+ pry(main)> subnets = cloud.networking.subnets.all
105
+ => [#<Foggy::Networking::Subnets::Subnet:0x007faa577c3e00
106
+ @allocation_pools=[{"start"=>"10.60.10.2", "end"=>"10.60.10.254"}],
107
+ @cidr="10.60.10.0/24",
108
+ @created_at="2016-11-16T04:36:13",
109
+ @description="",
110
+ @dns_nameservers=[],
111
+ @enable_dhcp=true,
112
+ @gateway_ip="10.60.10.1",
113
+ @host_routes=[],
114
+ @id="60fe7990-3db3-4149-a46a-d7a6454a3f2e",
115
+ @ip_version=4,
116
+ @ipv6_address_mode=nil,
117
+ @ipv6_ra_mode=nil,
118
+ @name="Testsub1",
119
+ @network_id="f3180183-9e7a-42d7-b76a-23b2c95af121",
120
+ @subnetpool_id=nil,
121
+ @tenant_id="48985e6b8da145699d411f12a3459fca",
122
+ ```
data/lib/foggy.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'misty'
2
+ require 'foggy/foggy'
3
+ require 'foggy/autoload'
4
+ require 'foggy/service'
5
+ require 'foggy/collection'
6
+ require 'foggy/element'
@@ -0,0 +1,4 @@
1
+ module Foggy
2
+ autoload :Networking, "foggy/service/networking"
3
+ autoload :Compute, "foggy/service/compute"
4
+ end
@@ -0,0 +1,85 @@
1
+ module Foggy
2
+ module Collection
3
+ def initialize(service, element)
4
+ @element = element
5
+ # For example: Foggy::Networking::
6
+ @element_klass = self.class.const_get(@element.capitalize)
7
+ @service = service
8
+ @collection = build
9
+ end
10
+
11
+ def all
12
+ @collection
13
+ end
14
+
15
+ def get(id)
16
+ element = fetch(id)
17
+ if element
18
+ @element_klass.new(element)
19
+ end
20
+ end
21
+
22
+ def reload
23
+ @collection = fetch_all
24
+ end
25
+
26
+ private
27
+
28
+ def self.create_element_class
29
+ unless class_exists?(name.capitalize)
30
+ self.const_set(name.capitalize, Class.new do
31
+ include Foggy::Element
32
+ end)
33
+ else
34
+ raise RuntimeError, "Error: #{self}::#{name.capitalize} already defined"
35
+ end
36
+ end
37
+
38
+ def build
39
+ list = []
40
+ if collection
41
+ collection.each do |element|
42
+ list << @element_klass.new(element)
43
+ end
44
+ end
45
+ list
46
+ end
47
+
48
+ def collection
49
+ @collection ||= fetch_all
50
+ end
51
+
52
+ def collection_name
53
+ self.class.to_s.split('::')[-1].downcase
54
+ end
55
+
56
+ def collection_prefix
57
+ self.class.to_s.split('::')[-1].downcase
58
+ end
59
+
60
+ def fetch_all
61
+ response = @service.send(name_fetch_all)
62
+ response.body[collection_name] if response.code =~ /200/
63
+ end
64
+
65
+ def fetch(id)
66
+ response = @service.send(name_fetch_element, id)
67
+ response.body[@element] if response.code =~ /200/
68
+ end
69
+
70
+ def name_fetch_all
71
+ "list_#{collection_name}"
72
+ end
73
+
74
+ def name_fetch_element
75
+ "show_#{@element}_details"
76
+ end
77
+
78
+ def service_class
79
+ project = @service.class.to_s.split('::')[-2]
80
+ Misty.services.each do |e|
81
+ return e.name.to_s if e.project == project.downcase.to_sym
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,43 @@
1
+ module Foggy
2
+ module Element
3
+ def initialize(element)
4
+ element.each do |key, value|
5
+ if composite?(key)
6
+ if composed = key.match(/(.*):(.*)/)
7
+ var_name = "@#{composed[1]}"
8
+ if instance_variable_defined?(var_name)
9
+ initial = instance_variable_get(var_name)
10
+ instance_variable_set(var_name, initial.merge(composed[2] => value))
11
+ else
12
+ create_attribute(composed[1], composed[2] => value)
13
+ end
14
+ end
15
+ else
16
+ create_attribute(key, value) unless instance_variable_defined?("@#{key}")
17
+ end
18
+ end
19
+ end
20
+
21
+ def self.getter(key)
22
+ define_method(key) do
23
+ instance_variable_get("@#{key}")
24
+ end
25
+ end
26
+
27
+ def self.setter(key, value)
28
+ define_method("#{key}=") do |value|
29
+ instance_variable_set("@#{key}", value)
30
+ end
31
+ end
32
+
33
+ def create_attribute(key, value)
34
+ instance_variable_set("@#{key}", value)
35
+ Foggy::Element.setter(key, value)
36
+ Foggy::Element.getter(key)
37
+ end
38
+
39
+ def composite?(name)
40
+ true if name =~ /:/
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,29 @@
1
+ require 'misty'
2
+
3
+ module Foggy
4
+ class Cloud
5
+ def initialize(*args)
6
+ @cloud = Misty::Cloud.new(*args)
7
+ end
8
+
9
+ private
10
+
11
+ def method_missing(method_name, *args)
12
+ # Equivalent of
13
+ # @alarming ||= Foggy::Alarming.new(@cloud.alarming)
14
+ if Misty.services.names.include?(method_name)
15
+ klass = Foggy.const_get(method_name.capitalize)
16
+ self.class.send(:define_method, method_name.to_s) do
17
+ unless instance_variable_defined?("@#{method_name}")
18
+ service = @cloud.send(method_name)
19
+ instance_variable_set("@#{method_name}", klass.new(service))
20
+ end
21
+ return instance_variable_get("@#{method_name}")
22
+ end
23
+ return self.send(method_name)
24
+ else
25
+ raise "Undefined method #{method_name}"
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,73 @@
1
+ module Foggy
2
+ class Service
3
+ # By default when a single_name is not provided then the singular name is deducted from the plural_name:
4
+ # - When a name ends with 'ies' it will be replaced with 'y'
5
+ # - Otherwise the last letter is removed
6
+ # In any other case the single name should be provided
7
+ def self.define(plural_name, single_name = nil)
8
+ single_name ||= singular(plural_name, single_name)
9
+ create_collection_class(plural_name.to_s.capitalize, single_name.capitalize)
10
+
11
+ # def subnets
12
+ # @subnets ||= Foggy::Networking::Subnets.new(self)
13
+ # end
14
+ klass = self.const_get(plural_name.capitalize)
15
+ define_method("#{plural_name}") do
16
+ unless instance_variable_defined?("@#{plural_name}")
17
+ instance_variable_set("@#{plural_name}", klass.new(@service, single_name))
18
+ end
19
+ return instance_variable_get("@#{plural_name}")
20
+ end
21
+ end
22
+
23
+ def self.class_exists?(name)
24
+ return true if !!self.const_get(name)
25
+ rescue
26
+ false
27
+ end
28
+
29
+ # module Foggy::Networking example:
30
+ # class Subnets
31
+ # include Foggy::Collection
32
+ #
33
+ # class Subnet
34
+ # include Foggy::Element
35
+ # end
36
+ # end
37
+ def self.create_collection_class(name, single_name)
38
+ unless class_exists?(name)
39
+ self.const_set(name, Class.new do
40
+ include Foggy::Collection
41
+
42
+ self.const_set(single_name, Class.new do
43
+ include Foggy::Element
44
+ end)
45
+ end)
46
+ else
47
+ raise RuntimeError, "Error: #{self}::#{name} already defined"
48
+ end
49
+ end
50
+
51
+ def self.singular(plural_name, single_name)
52
+ unless single_name
53
+ if name =~ /ies$/
54
+ # policies => policy
55
+ plural_name.to_s.sub(/ies$/, 'y')
56
+ else
57
+ # somethings => something
58
+ plural_name.to_s.chop
59
+ end
60
+ else
61
+ single_name
62
+ end
63
+ end
64
+
65
+ def initialize(service)
66
+ @service = service
67
+ end
68
+
69
+ def request(*args)
70
+ @service.send(*args)
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,6 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class Alarming < Foggy::Service
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class Baremetal < Foggy::Service
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class BlockStorage < Foggy::Service
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class Clustering < Foggy::Service
5
+ end
6
+ end
@@ -0,0 +1,7 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class Compute < Foggy::Service
5
+ collection :servers
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class Container < Foggy::Service
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class DataProcessing < Foggy::Service
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class DataProtection < Foggy::Service
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class Database < Foggy::Service
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class DNS < Foggy::Service
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class Identity < Foggy::Service
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class Image < Foggy::Service
5
+ end
6
+ end
@@ -0,0 +1,7 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class Messaging < Foggy::Service
5
+ define_collection :images
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class Metering < Foggy::Service
5
+ end
6
+ end
@@ -0,0 +1,24 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class Networking < Foggy::Service
5
+ define :extensions
6
+ define :floating_ips
7
+ define :ike_policies, :ike_policy
8
+ define :ipsec_policies, :ipsec_policy
9
+ define :ipsec_site_connections
10
+ define :lb_health_monitors
11
+ define :lb_members
12
+ define :lb_pools
13
+ define :lb_vips
14
+ define :networks
15
+ define :ports
16
+ define :rbac_policies
17
+ define :routers
18
+ define :security_group_rules
19
+ define :security_groups
20
+ define :subnet_pools
21
+ define :subnets
22
+ define :vpn_services
23
+ end
24
+ end
@@ -0,0 +1,6 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class ObjectStorage < Foggy::Service
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class Orchestration < Foggy::Service
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class Search < Foggy::Service
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require "foggy/service"
2
+
3
+ module Foggy
4
+ class SharedFileSystems < Foggy::Service
5
+ end
6
+ end
@@ -0,0 +1,3 @@
1
+ module Foggy
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,19 @@
1
+ require "foggy"
2
+ require 'minitest/autorun'
3
+ require 'vcr'
4
+ require 'webmock/minitest'
5
+
6
+ VCR.configure do |config|
7
+ config.cassette_library_dir = "test/integration/vcr"
8
+ config.hook_into :webmock
9
+ end
10
+
11
+ def auth
12
+ {
13
+ :url => "http://192.0.2.21:5000",
14
+ :user => "admin",
15
+ :password => "CJk9hb2ZFR96Ypu74KFFGWuhv",
16
+ :project => "admin",
17
+ :domain => "default"
18
+ }
19
+ end
@@ -0,0 +1,52 @@
1
+ def auth_response_v3(type, name)
2
+ { 'token' =>
3
+ { 'methods' => ['password'],
4
+ 'roles' => [{ 'id' => 'id_roles', 'name' => 'admin' }],
5
+ 'expires_at' => '2016-11-29T07:45:29.908554Z',
6
+ 'project' => { 'domain' => { 'id' => 'default', 'name' => 'Default' }, 'id' => 'project_id', 'name' => 'admin' },
7
+ 'catalog' =>
8
+ [{ 'endpoints' =>
9
+ [{ 'region_id' => 'regionOne',
10
+ 'url' => 'http://localhost',
11
+ 'region' => 'regionOne',
12
+ 'interface' => 'internal',
13
+ 'id' => 'id_endpoint_internal' },
14
+ { 'region_id' => 'regionOne',
15
+ 'url' => 'http://localhost',
16
+ 'region' => 'regionOne',
17
+ 'interface' => 'public',
18
+ 'id' => 'id_endpoint_public' },
19
+ { 'region_id' => 'regionOne',
20
+ 'url' => 'http://localhost',
21
+ 'region' => 'regionOne',
22
+ 'interface' => 'admin',
23
+ 'id' => 'id_endpoint_admin' }],
24
+ 'type' => type,
25
+ 'id' => 'id_endpoints',
26
+ 'name' => name }],
27
+ 'user' => { 'domain' => { 'id' => 'default', 'name' => 'Default' }, 'id' => 'id_user', 'name' => 'admin' },
28
+ 'audit_ids' => ['id_audits'],
29
+ 'issued_at' => '2016-11-29T06:45:29.908578Z' } }
30
+ end
31
+
32
+ def auth_response_v2(type, name)
33
+ { 'access' =>
34
+ { 'token' =>
35
+ { 'issued_at' => '2016-12-05T10:44:31.454741Z',
36
+ 'expires' => '2016-12-05T11:44:31Z',
37
+ 'id' => '4ae647d3a5294690a3c29bc658e17e26',
38
+ 'tenant' => { 'description' => 'admin tenant', 'enabled' => true, 'id' => 'tenant_id', 'name' => 'admin' },
39
+ 'audit_ids' => ['Ye0Rq1HzTk2ggUAg8nDGbQ'] },
40
+ 'serviceCatalog' =>
41
+ [{ 'endpoints' =>
42
+ [{ 'adminURL' => 'http://localhost',
43
+ 'region' => 'regionOne',
44
+ 'internalURL' => 'http://localhost',
45
+ 'id' => 'id_endpoints',
46
+ 'publicURL' => 'http://localhost' }],
47
+ 'endpoints_links' => [],
48
+ 'type' => type,
49
+ 'name' => name }],
50
+ 'user' => { 'username' => 'admin', 'roles_links' => [], 'id' => 'user_id', 'roles' => [{ 'name' => 'admin' }], 'name' => 'admin' },
51
+ 'metadata' => { 'is_admin' => 0, 'roles' => ['role_id'] } } }
52
+ end
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+ require 'auth_helper'
3
+
4
+ describe "Foggy" do
5
+ let(:auth_v3) do
6
+ {
7
+ :url => "http://localhost:5000",
8
+ :user => "admin",
9
+ :password => "secret",
10
+ :project => "admin",
11
+ :domain => "default"
12
+ }
13
+ end
14
+
15
+ it "#networking" do
16
+ stub_request(:post, "http://localhost:5000/v3/auth/tokens").
17
+ with(:body => "{\"auth\":{\"identity\":{\"methods\":[\"password\"],\"password\":{\"user\":{\"name\":\"admin\",\"domain\":{\"id\":\"default\"},\"password\":\"secret\"}}},\"scope\":{\"project\":{\"name\":\"admin\",\"domain\":{\"id\":\"default\"}}}}}",
18
+ :headers => {'Accept'=>'application/json', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
19
+ to_return(:status => 200, :body => JSON.dump(auth_response_v3("networking", "neutron")), :headers => {"x-subject-token"=>"token_data"})
20
+
21
+ stub_request(:get, "http://localhost/v2.0/networks").
22
+ with(:headers => {'Accept'=>'application/json', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
23
+ to_return(:status => 200, :body => "[]", :headers => {})
24
+
25
+ cloud = Foggy::Cloud.new(:auth => auth_v3)
26
+
27
+ klass = cloud.networking
28
+ klass.must_be_kind_of Foggy::Networking
29
+ cloud.networking.networks.must_be_kind_of Foggy::Networking::Networks
30
+ cloud.networking.networks.all.must_equal ([])
31
+ end
32
+ end
@@ -0,0 +1,4 @@
1
+ require 'minitest/autorun'
2
+ require 'webmock/minitest'
3
+ require "foggy"
4
+ require 'pry-byebug'
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foggy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gilles Dubreuil
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-20 00:00:00.000000000 Z
11
+ date: 2017-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: misty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.7.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.7.0
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -39,19 +53,47 @@ dependencies:
39
53
  - !ruby/object:Gem::Version
40
54
  version: '10.0'
41
55
  - !ruby/object:Gem::Dependency
42
- name: nokogiri
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5.10'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5.10'
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.24'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.24'
83
+ - !ruby/object:Gem::Dependency
84
+ name: vcr
43
85
  requirement: !ruby/object:Gem::Requirement
44
86
  requirements:
45
87
  - - "~>"
46
88
  - !ruby/object:Gem::Version
47
- version: '1.6'
89
+ version: '3.0'
48
90
  type: :development
49
91
  prerelease: false
50
92
  version_requirements: !ruby/object:Gem::Requirement
51
93
  requirements:
52
94
  - - "~>"
53
95
  - !ruby/object:Gem::Version
54
- version: '1.6'
96
+ version: '3.0'
55
97
  - !ruby/object:Gem::Dependency
56
98
  name: pry-byebug
57
99
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +108,7 @@ dependencies:
66
108
  - - "~>"
67
109
  - !ruby/object:Gem::Version
68
110
  version: '3.4'
69
- description: Foggy helps with automation and is coming soon.
111
+ description: Foggy is a collection management for Openstack APIs.
70
112
  email:
71
113
  - gilles@redhat.com
72
114
  executables: []
@@ -77,6 +119,36 @@ extra_rdoc_files:
77
119
  files:
78
120
  - LICENSE.md
79
121
  - README.md
122
+ - lib/foggy.rb
123
+ - lib/foggy/autoload.rb
124
+ - lib/foggy/collection.rb
125
+ - lib/foggy/element.rb
126
+ - lib/foggy/foggy.rb
127
+ - lib/foggy/service.rb
128
+ - lib/foggy/service/alarming.rb
129
+ - lib/foggy/service/baremetal.rb
130
+ - lib/foggy/service/block_storage.rb
131
+ - lib/foggy/service/clustering.rb
132
+ - lib/foggy/service/compute.rb
133
+ - lib/foggy/service/container.rb
134
+ - lib/foggy/service/data_processing.rb
135
+ - lib/foggy/service/data_protection.rb
136
+ - lib/foggy/service/database.rb
137
+ - lib/foggy/service/dns.rb
138
+ - lib/foggy/service/identity.rb
139
+ - lib/foggy/service/image.rb
140
+ - lib/foggy/service/messaging.rb
141
+ - lib/foggy/service/metering.rb
142
+ - lib/foggy/service/networking.rb
143
+ - lib/foggy/service/object_storage.rb
144
+ - lib/foggy/service/orchestration.rb
145
+ - lib/foggy/service/search.rb
146
+ - lib/foggy/service/shared_file_systems.rb
147
+ - lib/foggy/version.rb
148
+ - test/integration/test_helper.rb
149
+ - test/unit/auth_helper.rb
150
+ - test/unit/foggy_test.rb
151
+ - test/unit/test_helper.rb
80
152
  homepage: https://github.com/flystack/foggy
81
153
  licenses:
82
154
  - GPL-3.0
@@ -98,8 +170,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
170
  version: '0'
99
171
  requirements: []
100
172
  rubyforge_project:
101
- rubygems_version: 2.5.1
173
+ rubygems_version: 2.6.11
102
174
  signing_key:
103
175
  specification_version: 4
104
- summary: An exhaustive, robust and sleek coming tool.
176
+ summary: Foggy is a collection management for OpenStack APIs.
105
177
  test_files: []