yao 0.19.0 → 0.20.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 +4 -4
- data/lib/yao/resources/compute_services.rb +5 -0
- data/lib/yao/resources/network.rb +6 -1
- data/lib/yao/resources/networking_agents.rb +5 -0
- data/lib/yao/resources/restfully_accessible.rb +12 -3
- data/lib/yao/resources/server_migrate.rb +15 -0
- data/lib/yao/resources/volume.rb +4 -0
- data/lib/yao/resources/volume_services.rb +76 -0
- data/lib/yao/resources.rb +2 -0
- data/lib/yao/version.rb +1 -1
- data/test/support/restfully_accesible_stub.rb +23 -0
- data/test/yao/resources/test_compute_services.rb +8 -0
- data/test/yao/resources/test_network.rb +4 -2
- data/test/yao/resources/test_networking_agents.rb +8 -0
- data/test/yao/resources/test_server_migrate.rb +33 -0
- data/test/yao/resources/test_volume.rb +7 -1
- data/test/yao/resources/test_volume_services.rb +116 -0
- metadata +9 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 390b05f4ca044196755551231ee7f297900816c3742318bcc502b0376e70512a
|
4
|
+
data.tar.gz: 0a6bb49a598bb7667d488ce316280ed3504b5ab2c3e0f97da0019783a5f6a939
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 731688676c2b1b9d120ef76f67131de2b060a25b8e3c9cb0b1cbf138c6a58fe632220c7f02c87c58972ee51c40f0d902bca2e69d254cd9eecd427d3960a1740b
|
7
|
+
data.tar.gz: 63b4adfd5b841b0c4b99c262b8cc2235a980165c574db4b60dab8b39ba39b4b659b0d4761286e81a48e61f33a57821ba1167b1bd53ba35387fb6f1c0b37dc2cc
|
@@ -2,7 +2,7 @@ module Yao::Resources
|
|
2
2
|
class Network < Base
|
3
3
|
include ProjectAssociationable
|
4
4
|
|
5
|
-
friendly_attributes :name, :status, :shared, :
|
5
|
+
friendly_attributes :name, :status, :shared, :admin_state_up
|
6
6
|
map_attribute_to_attribute "provider:physical_network" => :physical_network
|
7
7
|
map_attribute_to_attribute "provider:network_type" => :type
|
8
8
|
map_attribute_to_attribute "provider:segmentation_id" => :segmentation_id
|
@@ -17,5 +17,10 @@ module Yao::Resources
|
|
17
17
|
def ports
|
18
18
|
@ports ||= Yao::Port.list(network_id: id)
|
19
19
|
end
|
20
|
+
|
21
|
+
# @return [Array<Yao::Resources::Subnet>]
|
22
|
+
def subnets
|
23
|
+
@subnets ||= self['subnets'].map {|id| Yao::Subnet.new("id" => id)}
|
24
|
+
end
|
20
25
|
end
|
21
26
|
end
|
@@ -106,9 +106,8 @@ module Yao::Resources
|
|
106
106
|
r = GET(url, query).body
|
107
107
|
if r.is_a?(Hash)
|
108
108
|
res.deep_merge!(r)
|
109
|
-
|
110
|
-
|
111
|
-
uri = URI.parse(next_link["href"])
|
109
|
+
if next_link = find_next_link(r)
|
110
|
+
uri = URI.parse(next_link)
|
112
111
|
query = Hash[URI::decode_www_form(uri.query)] if uri.query
|
113
112
|
next
|
114
113
|
end
|
@@ -127,6 +126,16 @@ module Yao::Resources
|
|
127
126
|
# @note .list is defined to keep backward compatibility and will be deprecated
|
128
127
|
alias :list_detail :list
|
129
128
|
|
129
|
+
# @param response [Hash]
|
130
|
+
# @return [String]
|
131
|
+
def find_next_link(response)
|
132
|
+
if links = response.find {|k, v| k =~ /links/ && v.is_a?(Array) }&.last
|
133
|
+
links.find{|s| s["rel"] == "next" }&.fetch("href")
|
134
|
+
else
|
135
|
+
response["next"]
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
130
139
|
# @param id_or_name_or_permalink [Stirng]
|
131
140
|
# @param query [Hash]
|
132
141
|
# @return [Yao::Resources::*]
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Yao::Resources
|
2
|
+
class ServerMigrate < Base
|
3
|
+
friendly_attributes :dest_compute, :dest_host, :dest_node, :instance_uuid, :new_instance_type_id, :old_instance_type_id,
|
4
|
+
:source_compute, :source_node, :status, :migration_type, :uuid, :user_id, :project_id
|
5
|
+
map_attributes_to_time :created_at, :updated_at
|
6
|
+
|
7
|
+
self.service = "compute"
|
8
|
+
self.resource_name = "migrations"
|
9
|
+
self.resources_name = "os-migrations"
|
10
|
+
|
11
|
+
def server
|
12
|
+
@server ||= Yao::Server.get(self["instance_uuid"])
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/yao/resources/volume.rb
CHANGED
@@ -10,6 +10,10 @@ module Yao::Resources
|
|
10
10
|
map_attribute_to_attribute 'os-vol-host-attr:host' => :host
|
11
11
|
map_attribute_to_attribute 'os-vol-tenant-attr:tenant_id' => :tenant_id
|
12
12
|
|
13
|
+
map_attributes_to_time :created_at, :updated_at
|
14
|
+
alias :created :created_at
|
15
|
+
alias :updated :updated_at
|
16
|
+
|
13
17
|
self.service = "volumev3"
|
14
18
|
self.resource_name = "volume"
|
15
19
|
self.resources_name = "volumes"
|
@@ -0,0 +1,76 @@
|
|
1
|
+
module Yao::Resources
|
2
|
+
class VolumeServices < Base
|
3
|
+
|
4
|
+
friendly_attributes :binary, :disabled_reason, :host, :state, :status,
|
5
|
+
:frozen, :zone, :cluster, :replication_status,
|
6
|
+
:active_backend_id, :backed_state
|
7
|
+
map_attributes_to_time :updated_at
|
8
|
+
|
9
|
+
self.service = "volumev3"
|
10
|
+
self.resource_name = "os-service"
|
11
|
+
self.resources_name = "os-services"
|
12
|
+
|
13
|
+
# return true if ComputeServices is enabled
|
14
|
+
# @return [Bool]
|
15
|
+
def enabled?
|
16
|
+
status == 'enabled'
|
17
|
+
end
|
18
|
+
|
19
|
+
# return true if ComputeServices is disabled
|
20
|
+
# @return [Bool]
|
21
|
+
def disabled?
|
22
|
+
status == 'disabled'
|
23
|
+
end
|
24
|
+
|
25
|
+
def enable
|
26
|
+
self.class.enable(host, binary)
|
27
|
+
end
|
28
|
+
|
29
|
+
def disable(reason = nil)
|
30
|
+
self.class.disable(host, binary, reason)
|
31
|
+
end
|
32
|
+
|
33
|
+
class << self
|
34
|
+
# @param host [String]
|
35
|
+
# @param binary [String]
|
36
|
+
# @return [Hash]
|
37
|
+
def enable(host, binary)
|
38
|
+
params = {
|
39
|
+
"host" => host,
|
40
|
+
"binary" => binary,
|
41
|
+
}
|
42
|
+
put("enable", params)
|
43
|
+
end
|
44
|
+
|
45
|
+
# @param host [String]
|
46
|
+
# @param binary [String]
|
47
|
+
# @param resason [String]
|
48
|
+
# @return [Hash]
|
49
|
+
def disable(host, binary, reason = nil)
|
50
|
+
params = {
|
51
|
+
"host" => host,
|
52
|
+
"binary" => binary,
|
53
|
+
}
|
54
|
+
if reason
|
55
|
+
params["disabled_reason"] = reason
|
56
|
+
put("disable-log-reason", params)
|
57
|
+
else
|
58
|
+
put("disable", params)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
# @param path [String]
|
65
|
+
# @param params [Hash]
|
66
|
+
# @return [Hash]
|
67
|
+
def put(path, params)
|
68
|
+
res = PUT(create_url(path), params) do |req|
|
69
|
+
req.body = params.to_json
|
70
|
+
req.headers['Content-Type'] = 'application/json'
|
71
|
+
end
|
72
|
+
res.body
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
data/lib/yao/resources.rb
CHANGED
@@ -8,6 +8,7 @@ module Yao
|
|
8
8
|
|
9
9
|
autoload :Server, "yao/resources/server"
|
10
10
|
autoload :ServerGroup, "yao/resources/server_group"
|
11
|
+
autoload :ServerMigrate, "yao/resources/server_migrate"
|
11
12
|
autoload :Flavor, "yao/resources/flavor"
|
12
13
|
autoload :Image, "yao/resources/image"
|
13
14
|
autoload :SecurityGroup, "yao/resources/security_group"
|
@@ -33,6 +34,7 @@ module Yao
|
|
33
34
|
autoload :Role, "yao/resources/role"
|
34
35
|
autoload :RoleAssignment, "yao/resources/role_assignment"
|
35
36
|
autoload :Volume, "yao/resources/volume"
|
37
|
+
autoload :VolumeServices, "yao/resources/volume_services"
|
36
38
|
autoload :VolumeType, "yao/resources/volume_type"
|
37
39
|
autoload :ComputeServices, "yao/resources/compute_services"
|
38
40
|
autoload :Project, "yao/resources/project"
|
data/lib/yao/version.rb
CHANGED
@@ -51,6 +51,29 @@ module RestfullyAccessibleStub
|
|
51
51
|
)
|
52
52
|
end
|
53
53
|
|
54
|
+
def stub_put_request(url, body, response = {})
|
55
|
+
stub_request(:put,url)
|
56
|
+
.with(
|
57
|
+
headers: request_headers.merge({'Content-Type' => 'application/json'}),
|
58
|
+
body: body.to_json,
|
59
|
+
).to_return(
|
60
|
+
status: 200,
|
61
|
+
headers: {'Content-Type' => 'application/json'},
|
62
|
+
body: response.to_json
|
63
|
+
)
|
64
|
+
end
|
65
|
+
|
66
|
+
def stub_delete_request(url, response = {})
|
67
|
+
stub_request(:delete,url)
|
68
|
+
.with(
|
69
|
+
headers: request_headers
|
70
|
+
).to_return(
|
71
|
+
status: 200,
|
72
|
+
headers: {'Content-Type' => 'application/json'},
|
73
|
+
body: response.to_json
|
74
|
+
)
|
75
|
+
end
|
76
|
+
|
54
77
|
def request_headers
|
55
78
|
{'Accept'=>'application/json', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'User-Agent'=>"Yao/#{Yao::VERSION} Faraday/#{Faraday::VERSION}"}
|
56
79
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
class TestComputeServices < TestYaoResource
|
2
|
+
include RestfullyAccessibleStub
|
2
3
|
|
3
4
|
def test_compute_services
|
4
5
|
|
@@ -127,4 +128,11 @@ class TestComputeServices < TestYaoResource
|
|
127
128
|
|
128
129
|
assert_requested stub
|
129
130
|
end
|
131
|
+
|
132
|
+
def test_delete
|
133
|
+
stub = stub_delete_request("https://example.com:12345/os-services/test-id")
|
134
|
+
compute_service = Yao::ComputeServices.new({"id" => "test-id"})
|
135
|
+
assert_equal({}, compute_service.delete)
|
136
|
+
assert_requested(stub)
|
137
|
+
end
|
130
138
|
end
|
@@ -14,7 +14,7 @@ class TestNetwork < TestYaoResource
|
|
14
14
|
"router:external" => false,
|
15
15
|
"shared" => false,
|
16
16
|
"status" => "ACTIVE",
|
17
|
-
"subnets" => [],
|
17
|
+
"subnets" => ["52822b63-eb89-496d-9509-f91473b9d85d"],
|
18
18
|
"tenant_id" => "c05140b3dc7c4555afff9fab6b58edc2",
|
19
19
|
"project_id" => "c05140b3dc7c4555afff9fab6b58edc2",
|
20
20
|
}
|
@@ -28,13 +28,15 @@ class TestNetwork < TestYaoResource
|
|
28
28
|
assert_equal(false, network.shared)
|
29
29
|
assert_equal(false, network.shared?)
|
30
30
|
assert_equal("c05140b3dc7c4555afff9fab6b58edc2", network.tenant_id)
|
31
|
-
assert_equal([], network.subnets)
|
32
31
|
assert_equal(true, network.admin_state_up)
|
33
32
|
|
34
33
|
#map_attribute_to_attribute
|
35
34
|
assert_equal("physnet1", network.physical_network)
|
36
35
|
assert_equal("vlan", network.type)
|
37
36
|
assert_equal(1000, network.segmentation_id)
|
37
|
+
|
38
|
+
assert_equal(Yao::Subnet, network.subnets.first.class)
|
39
|
+
assert_equal("52822b63-eb89-496d-9509-f91473b9d85d", network.subnets.first.id)
|
38
40
|
end
|
39
41
|
|
40
42
|
def test_project
|
@@ -1,4 +1,5 @@
|
|
1
1
|
class TestNetworkingAgents < TestYaoResource
|
2
|
+
include RestfullyAccessibleStub
|
2
3
|
|
3
4
|
def test_networking_agents
|
4
5
|
|
@@ -81,4 +82,11 @@ class TestNetworkingAgents < TestYaoResource
|
|
81
82
|
assert_equal(Time.parse("2017-09-12 19:35:38"), agent.created_at)
|
82
83
|
assert_equal(Time.parse("2017-09-12 19:35:38"), agent.started_at)
|
83
84
|
end
|
85
|
+
|
86
|
+
def test_delete
|
87
|
+
stub = stub_delete_request("https://example.com:12345/agents/test-id")
|
88
|
+
agents = Yao::NetworkingAgents.new({"id" => "test-id"})
|
89
|
+
assert_equal({}, agents.delete)
|
90
|
+
assert_requested(stub)
|
91
|
+
end
|
84
92
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class TestServerGroup < TestYaoResource
|
2
|
+
def test_server_group
|
3
|
+
# https://docs.openstack.org/api-ref/compute/?expanded=list-migrations-detail#list-migrations
|
4
|
+
params = {
|
5
|
+
"created_at" => "2012-10-29T13:42:02.000000",
|
6
|
+
"dest_compute" => "compute2",
|
7
|
+
"dest_host" => "1.2.3.4",
|
8
|
+
"dest_node" => "node2",
|
9
|
+
"id" => 1234,
|
10
|
+
"instance_uuid" => "8600d31b-d1a1-4632-b2ff-45c2be1a70ff",
|
11
|
+
"new_instance_type_id" => 2,
|
12
|
+
"old_instance_type_id" => 1,
|
13
|
+
"source_compute" => "compute1",
|
14
|
+
"source_node" => "node1",
|
15
|
+
"status" => "done",
|
16
|
+
"updated_at" => "2012-10-29T13:42:02.000000"
|
17
|
+
}
|
18
|
+
|
19
|
+
migrate = Yao::ServerMigrate.new(params)
|
20
|
+
assert_equal(Time.parse("2012-10-29T13:42:02.000000"), migrate.created_at)
|
21
|
+
assert_equal("compute2", migrate.dest_compute)
|
22
|
+
assert_equal("1.2.3.4", migrate.dest_host)
|
23
|
+
assert_equal("node2", migrate.dest_node)
|
24
|
+
assert_equal(1234, migrate.id)
|
25
|
+
assert_equal("8600d31b-d1a1-4632-b2ff-45c2be1a70ff", migrate.instance_uuid)
|
26
|
+
assert_equal(2, migrate.new_instance_type_id)
|
27
|
+
assert_equal(1, migrate.old_instance_type_id)
|
28
|
+
assert_equal("compute1", migrate.source_compute)
|
29
|
+
assert_equal("node1", migrate.source_node)
|
30
|
+
assert_equal("done", migrate.status)
|
31
|
+
assert_equal(Time.parse("2012-10-29T13:42:02.000000"), migrate.updated_at)
|
32
|
+
end
|
33
|
+
end
|
@@ -13,7 +13,9 @@ class TestVolume < TestYaoResource
|
|
13
13
|
'snapshot_id' => nil,
|
14
14
|
'status' => 'available',
|
15
15
|
'user_id' => 'aaaa166533fd49f3b11b1cdce2430000',
|
16
|
-
'volume_type' => 'test'
|
16
|
+
'volume_type' => 'test',
|
17
|
+
'created_at' => '2018-11-28T06:25:15.288987',
|
18
|
+
'updated_at' => '2019-11-28T06:25:15.288987'
|
17
19
|
}
|
18
20
|
|
19
21
|
volume = Yao::Volume.new(params)
|
@@ -30,6 +32,10 @@ class TestVolume < TestYaoResource
|
|
30
32
|
assert_equal(volume.user_id, 'aaaa166533fd49f3b11b1cdce2430000')
|
31
33
|
assert_equal(volume.volume_type, 'test')
|
32
34
|
assert_equal(volume.type, 'test')
|
35
|
+
assert_equal(Time.parse('2018-11-28T06:25:15.288987'), volume.created_at)
|
36
|
+
assert_equal(Time.parse('2018-11-28T06:25:15.288987'), volume.created)
|
37
|
+
assert_equal(Time.parse('2019-11-28T06:25:15.288987'), volume.updated_at)
|
38
|
+
assert_equal(Time.parse('2019-11-28T06:25:15.288987'), volume.updated)
|
33
39
|
end
|
34
40
|
|
35
41
|
def test_list
|
@@ -0,0 +1,116 @@
|
|
1
|
+
class TestVolumeServices < TestYaoResource
|
2
|
+
include RestfullyAccessibleStub
|
3
|
+
|
4
|
+
def test_volume_services
|
5
|
+
# https://docs.openstack.org/api-ref/block-storage/v3/index.html?expanded=list-all-cinder-services-detail#list-all-cinder-services
|
6
|
+
params = JSON.parse(<<~JSON)
|
7
|
+
{
|
8
|
+
"status": "enabled",
|
9
|
+
"binary": "cinder-scheduler",
|
10
|
+
"zone": "nova",
|
11
|
+
"state": "up",
|
12
|
+
"updated_at": "2017-06-29T05:50:35.000000",
|
13
|
+
"host": "devstack",
|
14
|
+
"disabled_reason": null
|
15
|
+
}
|
16
|
+
JSON
|
17
|
+
|
18
|
+
service = Yao::VolumeServices.new(params)
|
19
|
+
assert_equal('enabled', service.status)
|
20
|
+
assert_equal('cinder-scheduler', service.binary)
|
21
|
+
assert_equal('nova', service.zone)
|
22
|
+
assert_equal('up', service.state)
|
23
|
+
assert_equal(Time.parse('2017-06-29T05:50:35.000000'), service.updated_at)
|
24
|
+
assert_equal('devstack', service.host)
|
25
|
+
assert_equal(nil, service.disabled_reason)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_enabled
|
29
|
+
service = Yao::VolumeServices.new({'status' => 'enabled'})
|
30
|
+
assert_equal(true, service.enabled?)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_disabled
|
34
|
+
service = Yao::VolumeServices.new({'status' => 'enabled'})
|
35
|
+
assert_equal(false, service.disabled?)
|
36
|
+
end
|
37
|
+
|
38
|
+
def stub_enable_request
|
39
|
+
body = {
|
40
|
+
"host" => "test-host",
|
41
|
+
"binary" => "test-binary",
|
42
|
+
}
|
43
|
+
response = { "disabled" => false }
|
44
|
+
stub_put_request('https://example.com:12345/os-services/enable', body, response)
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_enable
|
48
|
+
stub = stub_enable_request
|
49
|
+
service = Yao::VolumeServices.new({
|
50
|
+
"host" => "test-host",
|
51
|
+
"binary" => "test-binary",
|
52
|
+
})
|
53
|
+
response = service.enable
|
54
|
+
assert_equal(false, response['disabled'])
|
55
|
+
assert_requested(stub)
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_self_enable
|
59
|
+
stub = stub_enable_request
|
60
|
+
response = Yao::VolumeServices.enable('test-host', 'test-binary')
|
61
|
+
assert_equal(false, response['disabled'])
|
62
|
+
assert_requested(stub)
|
63
|
+
end
|
64
|
+
|
65
|
+
def stub_disable_request(reason = nil)
|
66
|
+
body = {
|
67
|
+
"host" => "test-host",
|
68
|
+
"binary" => "test-binary",
|
69
|
+
}
|
70
|
+
response = { "disabled" => true }
|
71
|
+
if reason
|
72
|
+
body["disabled_reason"] = reason
|
73
|
+
response["disabled_reason"] = reason
|
74
|
+
stub_put_request('https://example.com:12345/os-services/disable-log-reason', body, response)
|
75
|
+
else
|
76
|
+
stub_put_request('https://example.com:12345/os-services/disable', body, response)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_disable
|
81
|
+
stub = stub_disable_request
|
82
|
+
service = Yao::VolumeServices.new({
|
83
|
+
"host" => "test-host",
|
84
|
+
"binary" => "test-binary",
|
85
|
+
})
|
86
|
+
response = service.disable
|
87
|
+
assert_equal(true, response['disabled'])
|
88
|
+
assert_requested(stub)
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_disable_reason
|
92
|
+
stub = stub_disable_request('test-reason')
|
93
|
+
service = Yao::VolumeServices.new({
|
94
|
+
"host" => "test-host",
|
95
|
+
"binary" => "test-binary",
|
96
|
+
})
|
97
|
+
response = service.disable('test-reason')
|
98
|
+
assert_equal(true, response['disabled'])
|
99
|
+
assert_equal('test-reason', response['disabled_reason'])
|
100
|
+
assert_requested(stub)
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_self_disable
|
104
|
+
stub = stub_disable_request
|
105
|
+
response = Yao::VolumeServices.disable('test-host', 'test-binary')
|
106
|
+
assert_equal(true, response['disabled'])
|
107
|
+
assert_requested(stub)
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_self_disable_reason
|
111
|
+
stub = stub_disable_request('test-reason')
|
112
|
+
response = Yao::VolumeServices.disable('test-host', 'test-binary', 'test-reason')
|
113
|
+
assert_equal(true, response['disabled'])
|
114
|
+
assert_requested(stub)
|
115
|
+
end
|
116
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yao
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.20.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Uchio, KONDO
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -133,12 +133,14 @@ files:
|
|
133
133
|
- lib/yao/resources/security_group_rule.rb
|
134
134
|
- lib/yao/resources/server.rb
|
135
135
|
- lib/yao/resources/server_group.rb
|
136
|
+
- lib/yao/resources/server_migrate.rb
|
136
137
|
- lib/yao/resources/server_usage_associationable.rb
|
137
138
|
- lib/yao/resources/subnet.rb
|
138
139
|
- lib/yao/resources/tenant.rb
|
139
140
|
- lib/yao/resources/user.rb
|
140
141
|
- lib/yao/resources/volume.rb
|
141
142
|
- lib/yao/resources/volume_action.rb
|
143
|
+
- lib/yao/resources/volume_services.rb
|
142
144
|
- lib/yao/resources/volume_type.rb
|
143
145
|
- lib/yao/setup.rb
|
144
146
|
- lib/yao/token.rb
|
@@ -182,9 +184,11 @@ files:
|
|
182
184
|
- test/yao/resources/test_security_group_rule.rb
|
183
185
|
- test/yao/resources/test_server.rb
|
184
186
|
- test/yao/resources/test_server_group.rb
|
187
|
+
- test/yao/resources/test_server_migrate.rb
|
185
188
|
- test/yao/resources/test_subnet.rb
|
186
189
|
- test/yao/resources/test_user.rb
|
187
190
|
- test/yao/resources/test_volume.rb
|
191
|
+
- test/yao/resources/test_volume_services.rb
|
188
192
|
- test/yao/resources/test_volume_type.rb
|
189
193
|
- test/yao/test_auth.rb
|
190
194
|
- test/yao/test_authv3.rb
|
@@ -216,7 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
216
220
|
- !ruby/object:Gem::Version
|
217
221
|
version: '0'
|
218
222
|
requirements: []
|
219
|
-
rubygems_version: 3.
|
223
|
+
rubygems_version: 3.4.6
|
220
224
|
signing_key:
|
221
225
|
specification_version: 4
|
222
226
|
summary: Yet Another OpenStack API Wrapper that rocks!!
|
@@ -259,9 +263,11 @@ test_files:
|
|
259
263
|
- test/yao/resources/test_security_group_rule.rb
|
260
264
|
- test/yao/resources/test_server.rb
|
261
265
|
- test/yao/resources/test_server_group.rb
|
266
|
+
- test/yao/resources/test_server_migrate.rb
|
262
267
|
- test/yao/resources/test_subnet.rb
|
263
268
|
- test/yao/resources/test_user.rb
|
264
269
|
- test/yao/resources/test_volume.rb
|
270
|
+
- test/yao/resources/test_volume_services.rb
|
265
271
|
- test/yao/resources/test_volume_type.rb
|
266
272
|
- test/yao/test_auth.rb
|
267
273
|
- test/yao/test_authv3.rb
|