openstack 3.1.1 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/openstack.rb +2 -0
- data/lib/openstack/network/connection.rb +24 -2
- data/lib/openstack/network/port.rb +2 -0
- data/lib/openstack/network/qos_bandwidth_limit_rule.rb +44 -0
- data/lib/openstack/network/qos_policy.rb +80 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d38f9aecda8d0669fc12af8dd23ffab397aa9918
|
4
|
+
data.tar.gz: 6a1b99ea421f84a89820153a1b2388b7d83a4302
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 827c41dd88de063fb6614dcb3a09f801a632644052a4ea4f4360233eb24d41bce913c7b94b5c904bfa5048d802d932dde26931b5f3e108da22a6a5d2ca9b081e
|
7
|
+
data.tar.gz: 0fbea0cc05bd5e862c646ebc4b8fe09c21cfd539f06d746828c6e0b82965b486ec974448e08987cf086d20d83253f4f7fe89c756aa4756ecdd6989037050bb8a
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.2.0
|
data/lib/openstack.rb
CHANGED
@@ -33,6 +33,8 @@ module OpenStack
|
|
33
33
|
require 'openstack/network/subnet'
|
34
34
|
require 'openstack/network/router'
|
35
35
|
require 'openstack/network/port'
|
36
|
+
require 'openstack/network/qos_policy'
|
37
|
+
require 'openstack/network/qos_bandwidth_limit_rule'
|
36
38
|
require 'openstack/identity/connection'
|
37
39
|
require 'openstack/identity/tenant'
|
38
40
|
require 'openstack/identity/user'
|
@@ -18,8 +18,9 @@ module Network
|
|
18
18
|
@connection.authok
|
19
19
|
end
|
20
20
|
|
21
|
-
def list_networks
|
22
|
-
|
21
|
+
def list_networks(options = {})
|
22
|
+
path = options.empty? ? "/networks" : "/networks?#{options.to_query}"
|
23
|
+
response = @connection.req("GET", path)
|
23
24
|
nets_hash = JSON.parse(response.body)["networks"]
|
24
25
|
nets_hash.inject([]){|res, current| res << OpenStack::Network::Network.new(current); res}
|
25
26
|
end
|
@@ -158,6 +159,27 @@ module Network
|
|
158
159
|
end
|
159
160
|
end
|
160
161
|
|
162
|
+
def create_qos_policy(options)
|
163
|
+
data = JSON.generate(:policy => options)
|
164
|
+
response = @connection.req("POST", "/qos/policies", {:data => data})
|
165
|
+
OpenStack::Exception.raise_exception(response) unless response.code.match(/^20.$/)
|
166
|
+
OpenStack::Network::QoSPolicy.new(@connection, JSON.parse(response.body)["policy"])
|
167
|
+
end
|
168
|
+
|
169
|
+
def list_qos_policies(options = {})
|
170
|
+
path = options.empty? ? "/qos/policies" : "/qos/policies?#{options.to_query}"
|
171
|
+
response = @connection.req("GET", path)
|
172
|
+
OpenStack::Exception.raise_exception(response) unless response.code.match(/^20.$/)
|
173
|
+
qos_hash = JSON.parse(response.body)["policies"]
|
174
|
+
qos_hash.inject([]){|res, current| res << OpenStack::Network::QoSPolicy.new(@connection, current); res}
|
175
|
+
end
|
176
|
+
|
177
|
+
def get_qos_policy(policy_id)
|
178
|
+
response = @connection.req("GET", "/qos/policies/#{policy_id}")
|
179
|
+
OpenStack::Exception.raise_exception(response) unless response.code.match(/^20.$/)
|
180
|
+
OpenStack::Network::QoSPolicy.new(@connection, JSON.parse(response.body)["policy"])
|
181
|
+
end
|
182
|
+
|
161
183
|
end
|
162
184
|
|
163
185
|
end
|
@@ -12,6 +12,7 @@ module Network
|
|
12
12
|
attr_reader :device_id
|
13
13
|
attr_reader :device_owner
|
14
14
|
attr_reader :tenant_id
|
15
|
+
attr_reader :qos_policy_id
|
15
16
|
|
16
17
|
def initialize(port_hash={})
|
17
18
|
@id = port_hash["id"]
|
@@ -24,6 +25,7 @@ module Network
|
|
24
25
|
@device_id = port_hash["device_id"]
|
25
26
|
@device_owner = port_hash["device_owner"]
|
26
27
|
@tenant_id = port_hash["tenant_id"]
|
28
|
+
@qos_policy_id = port_hash["qos_policy_id"]
|
27
29
|
end
|
28
30
|
|
29
31
|
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module OpenStack
|
2
|
+
module Network
|
3
|
+
class QoSBandwidthLimitRule
|
4
|
+
|
5
|
+
attr_reader :id
|
6
|
+
attr_reader :policy_id
|
7
|
+
attr_reader :max_kbps
|
8
|
+
attr_reader :max_burst_kbps
|
9
|
+
|
10
|
+
def initialize(policy, rule_hash={})
|
11
|
+
@policy = policy
|
12
|
+
populate(rule_hash)
|
13
|
+
end
|
14
|
+
|
15
|
+
def populate(rule_hash=nil)
|
16
|
+
if @id and not rule_hash
|
17
|
+
response = @policy.connection.req("GET", "/qos/policies/#{@policy_id}/bandwidth_limit_rules/#{@id}")
|
18
|
+
OpenStack::Exception.raise_exception(response) unless response.code.match(/^20.$/)
|
19
|
+
rule_hash = JSON.parse(response.body)["bandwidth_limit_rule"]
|
20
|
+
end
|
21
|
+
|
22
|
+
@id = rule_hash["id"]
|
23
|
+
@policy_id = rule_hash["policy_id"] || @policy.id
|
24
|
+
@max_kbps = rule_hash["max_kbps"]
|
25
|
+
@max_burst_kbps = rule_hash["max_burst_kbps"]
|
26
|
+
end
|
27
|
+
|
28
|
+
def delete!
|
29
|
+
response = @policy.connection.req('DELETE', "/qos/policies/#{@policy_id}/bandwidth_limit_rules/#{@id}")
|
30
|
+
OpenStack::Exception.raise_exception(response) unless response.code.match(/^20.$/)
|
31
|
+
true
|
32
|
+
end
|
33
|
+
|
34
|
+
def update(options)
|
35
|
+
data = JSON.generate(:bandwidth_limit_rule => options)
|
36
|
+
response = @policy.connection.req("PUT", "/qos/policies/#{@policy_id}/bandwidth_limit_rules/#{@id}", {:data => data})
|
37
|
+
OpenStack::Exception.raise_exception(response) unless response.code.match(/^20.$/)
|
38
|
+
populate(JSON.parse(response.body)["bandwidth_limit_rule"])
|
39
|
+
true
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
module OpenStack
|
2
|
+
module Network
|
3
|
+
class QoSPolicy
|
4
|
+
|
5
|
+
attr_reader :connection
|
6
|
+
attr_reader :tenant_id
|
7
|
+
attr_reader :id
|
8
|
+
attr_reader :name
|
9
|
+
attr_reader :description
|
10
|
+
attr_reader :shared
|
11
|
+
|
12
|
+
def initialize(connection, qos_hash={})
|
13
|
+
@connection = connection
|
14
|
+
populate(qos_hash)
|
15
|
+
end
|
16
|
+
|
17
|
+
def populate(qos_hash=nil)
|
18
|
+
if @id and not qos_hash
|
19
|
+
response = @connection.req("GET", "/qos/policies/#{@id}")
|
20
|
+
OpenStack::Exception.raise_exception(response) unless response.code.match(/^20.$/)
|
21
|
+
qos_hash = JSON.parse(response.body)["policy"]
|
22
|
+
end
|
23
|
+
|
24
|
+
@id = qos_hash["id"]
|
25
|
+
@tenant_id = qos_hash["tenant_id"]
|
26
|
+
@name = qos_hash["name"]
|
27
|
+
@description = qos_hash["description"]
|
28
|
+
@shared = qos_hash["shared"]
|
29
|
+
end
|
30
|
+
|
31
|
+
def delete!
|
32
|
+
response = @connection.req('DELETE', "/qos/policies/#{@id}")
|
33
|
+
OpenStack::Exception.raise_exception(response) unless response.code.match(/^20.$/)
|
34
|
+
true
|
35
|
+
end
|
36
|
+
|
37
|
+
def update(options)
|
38
|
+
data = JSON.generate(:policy => options)
|
39
|
+
response = @connection.req("PUT", "/qos/policies/#{@id}", {:data => data})
|
40
|
+
OpenStack::Exception.raise_exception(response) unless response.code.match(/^20.$/)
|
41
|
+
populate(JSON.parse(response.body)["policy"])
|
42
|
+
end
|
43
|
+
|
44
|
+
def get_bandwidth_limit_rules
|
45
|
+
response = @connection.req("GET", "/qos/policies/#{@id}/bandwidth_limit_rules")
|
46
|
+
OpenStack::Exception.raise_exception(response) unless response.code.match(/^20.$/)
|
47
|
+
rules_hash = JSON.parse(response.body)["bandwidth_limit_rules"]
|
48
|
+
rules_hash.inject([]){|res, current| res << OpenStack::Network::QoSBandwidthLimitRule.new(self, current); res}
|
49
|
+
end
|
50
|
+
|
51
|
+
def get_bandwidth_limit_rule(rule_id)
|
52
|
+
response = @connection.req("GET", "/qos/policies/#{@id}/bandwidth_limit_rules/#{rule_id}")
|
53
|
+
OpenStack::Exception.raise_exception(response) unless response.code.match(/^20.$/)
|
54
|
+
OpenStack::Network::QoSBandwidthLimitRule.new(self, JSON.parse(response.body)["bandwidth_limit_rule"])
|
55
|
+
end
|
56
|
+
|
57
|
+
def create_bandwidth_limit_rule(options)
|
58
|
+
data = JSON.generate(:bandwidth_limit_rule => options)
|
59
|
+
response = @connection.req("POST", "/qos/policies/#{@id}/bandwidth_limit_rules", {:data => data})
|
60
|
+
OpenStack::Exception.raise_exception(response) unless response.code.match(/^20.$/)
|
61
|
+
OpenStack::Network::QoSBandwidthLimitRule.new(self, JSON.parse(response.body)["bandwidth_limit_rule"])
|
62
|
+
end
|
63
|
+
|
64
|
+
def add_port_id(port_id)
|
65
|
+
data = JSON.generate(:port => {:qos_policy_id => @id})
|
66
|
+
response = @connection.req("PUT", "/ports/#{port_id}", {:data => data})
|
67
|
+
OpenStack::Exception.raise_exception(response) unless response.code.match(/^20.$/)
|
68
|
+
true
|
69
|
+
end
|
70
|
+
|
71
|
+
def remove_port_id(port_id)
|
72
|
+
data = JSON.generate(:port => {:qos_policy_id => nil})
|
73
|
+
response = @connection.req("PUT", "/ports/#{port_id}", {:data => data})
|
74
|
+
OpenStack::Exception.raise_exception(response) unless response.code.match(/^20.$/)
|
75
|
+
true
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openstack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Prince
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2016-09-
|
15
|
+
date: 2016-09-30 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: mocha
|
@@ -104,6 +104,8 @@ files:
|
|
104
104
|
- lib/openstack/network/connection.rb
|
105
105
|
- lib/openstack/network/network.rb
|
106
106
|
- lib/openstack/network/port.rb
|
107
|
+
- lib/openstack/network/qos_bandwidth_limit_rule.rb
|
108
|
+
- lib/openstack/network/qos_policy.rb
|
107
109
|
- lib/openstack/network/router.rb
|
108
110
|
- lib/openstack/network/subnet.rb
|
109
111
|
- lib/openstack/swift/connection.rb
|