yao 0.2.2 → 0.2.4

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: d3d8d77a253364476ed886f96b9866b169870223
4
- data.tar.gz: 95ee3a1bd9c3c4f241acd8b39eb65146cffba553
3
+ metadata.gz: 0cbe5100a5117a5be92da38233ff1f170c60555f
4
+ data.tar.gz: 7e610e7b24cb80f3c03683e3bebf2157cf564a2b
5
5
  SHA512:
6
- metadata.gz: a62445345b8c370c1b3d6893f5936f51c1fc3a210c430a2b638b05c96e58a7fd0c78ab8384999067599b1b281956dbc23f88efa2dc40846507d83069f3a97410
7
- data.tar.gz: 711c40e3e7ace2a0a39fa82eeb7a1987e03e45bbe8562aee73dd5843151000b14ab9b814b5af9dd424d9a2d4d56966396c0dd4f042a5339679bec6fd3a5f34a6
6
+ metadata.gz: 491f7385416be190cef852fde2afdf47f799e2c2d4852a6858361be9f89aebfa49027162cee9cdcd5da0787af174521c737f63b34eec460cb97ce79b533d164d
7
+ data.tar.gz: 839e12cdb4d00a35288a642252f0d72e06c5bd326d8ba79a4f75868e9faf35537a41fd62d9dd682863d67d12c04009cda3bd9f008c640c79f2ff3af8c85629ff
data/.travis.yml CHANGED
@@ -3,6 +3,7 @@ language: ruby
3
3
  rvm:
4
4
  - 2.1.7
5
5
  - 2.2.3
6
+ - 2.3.0-preview1
6
7
 
7
8
  install: bundle install --path vendor/bundle
8
9
 
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## v0.2.3
2
+
3
+ * Enhance ceilometer resources #33 by @hsbt
4
+ * Add Tenant#servers #34 by @hsbt
5
+ * Now tested against Ruby 2.3.0-preview1 by @udzura
6
+
1
7
  ## v0.2.2
2
8
 
3
9
  * Fix `resources_name_in_json` method caching again by @pyama86
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Yao
2
2
 
3
+ ![Logo](./yao-logo.png)
4
+
3
5
  YAO is a Yet Another OpenStack API Wrapper that rocks!! [![Build Status](https://travis-ci.org/yaocloud/yao.svg)](https://travis-ci.org/yaocloud/yao)
4
6
 
5
7
  ## Installation
data/lib/yao/resources.rb CHANGED
@@ -20,6 +20,7 @@ module Yao
20
20
 
21
21
  autoload :Resource, "yao/resources/resource"
22
22
  autoload :Meter, "yao/resources/meter"
23
+ autoload :OldSample, "yao/resources/old_sample"
23
24
  autoload :Sample, "yao/resources/sample"
24
25
  end
25
26
 
@@ -11,7 +11,7 @@ module Yao::Resources
11
11
  end
12
12
 
13
13
  def tenant
14
- @tenant ||= Yao::User.get(project_id)
14
+ @tenant ||= Yao::Tenant.get(project_id)
15
15
  end
16
16
 
17
17
  def user
@@ -0,0 +1,44 @@
1
+ module Yao::Resources
2
+ class OldSample < Base
3
+ friendly_attributes :counter_name, :counter_type, :counter_unit, :counter_volume,
4
+ :message_id, :project_id, :resource_id, :timestamp, :resource_metadata, :user_id
5
+ :source
6
+
7
+ def recorded_at
8
+ Time.parse(self["recorded_at"] || self["timestamp"])
9
+ end
10
+ alias timestamp recorded_at
11
+
12
+ def id
13
+ meter_id
14
+ end
15
+
16
+ def resource
17
+ @resource ||= Yao::Resource.get(resource_id)
18
+ end
19
+
20
+ def tenant
21
+ @tenant ||= Yao::Tenant.get(project_id)
22
+ end
23
+
24
+ def user
25
+ @user ||= Yao::User.get(user_id)
26
+ end
27
+
28
+ self.service = "metering"
29
+ self.api_version = "v2"
30
+
31
+ # get /v2/meters/{id} returns samples!
32
+ def self.list(meter_name, query={})
33
+ cache_key = query.values.join
34
+ cache[cache_key] = GET("meters/#{meter_name}", query).body unless cache[cache_key]
35
+ return_resources(cache[cache_key])
36
+ end
37
+
38
+ def self.cache
39
+ @@_cache ||= {}
40
+ end
41
+
42
+ # TODO: implement `def self.create'
43
+ end
44
+ end
@@ -1,16 +1,15 @@
1
1
  module Yao::Resources
2
2
  class Sample < Base
3
- friendly_attributes :counter_name, :counter_type, :counter_unit, :counter_volume,
4
- :message_id, :project_id, :resource_id, :timestamp, :resource_metadata, :user_id
5
- :source
3
+ friendly_attributes :id, :metadata, :meter,
4
+ :source, :type, :unit, :volume
5
+ :resouce_id, :tenant_id, :user_id
6
6
 
7
7
  def recorded_at
8
- Time.parse(self["recorded_at"] || self["timestamp"])
8
+ Time.parse(self["recorded_at"])
9
9
  end
10
- alias timestamp recorded_at
11
10
 
12
- def id
13
- meter_id
11
+ def timestamp
12
+ Time.parse(self["timestamp"])
14
13
  end
15
14
 
16
15
  def resource
@@ -18,7 +17,7 @@ module Yao::Resources
18
17
  end
19
18
 
20
19
  def tenant
21
- @tenant ||= Yao::User.get(project_id)
20
+ @tenant ||= Yao::Tenant.get(project_id)
22
21
  end
23
22
 
24
23
  def user
@@ -27,17 +26,6 @@ module Yao::Resources
27
26
 
28
27
  self.service = "metering"
29
28
  self.api_version = "v2"
30
-
31
- # get /v2/meters/{id} returns samples!
32
- def self.list(id_or_url, query={})
33
- json = if id_or_url =~ /^https?:\/\//
34
- GET(id_or_url).body
35
- else
36
- GET("meters/#{id_or_url}", query).body
37
- end
38
- return_resources(json)
39
- end
40
-
41
- # TODO: implement `def self.create'
29
+ self.resources_name = "samples"
42
30
  end
43
31
  end
@@ -21,6 +21,11 @@ module Yao::Resources
21
21
  self.service = "compute"
22
22
  self.resource_name = "server"
23
23
  self.resources_name = "servers"
24
+
25
+ def old_samples(counter_name: nil, query: {})
26
+ Yao::OldSample.list(counter_name, query).select{|os| os.resource_metadata["instance_id"] == id}
27
+ end
28
+
24
29
  def self.start(id)
25
30
  action(id, "os-start" => nil)
26
31
  end
@@ -8,6 +8,18 @@ module Yao::Resources
8
8
  self.admin = true
9
9
  self.return_single_on_querying = true
10
10
 
11
+ def servers
12
+ @servers ||= Yao::Server.list(all_tenants: 1).select{|s| s.tenant_id == id }
13
+ end
14
+
15
+ def meters
16
+ @meters ||= Yao::Meter.list({'q.field': 'project_id', 'q.op': 'eq', 'q.value': id})
17
+ end
18
+
19
+ def meters_by_name(meter_name)
20
+ meters.select{|m| m.name == meter_name}
21
+ end
22
+
11
23
  class << self
12
24
  def get_by_name(name)
13
25
  self.list(name: name)
data/lib/yao/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Yao
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.4"
3
3
  end
data/yao-logo.png ADDED
Binary file
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.2.2
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Uchio, KONDO
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-17 00:00:00.000000000 Z
11
+ date: 2015-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -186,6 +186,7 @@ files:
186
186
  - lib/yao/resources/metadata_available.rb
187
187
  - lib/yao/resources/meter.rb
188
188
  - lib/yao/resources/network.rb
189
+ - lib/yao/resources/old_sample.rb
189
190
  - lib/yao/resources/port.rb
190
191
  - lib/yao/resources/resource.rb
191
192
  - lib/yao/resources/restfully_accessible.rb
@@ -207,6 +208,7 @@ files:
207
208
  - test/yao/test_config.rb
208
209
  - test/yao/test_server_error.rb
209
210
  - test/yao/test_token.rb
211
+ - yao-logo.png
210
212
  - yao.gemspec
211
213
  homepage: https://github.com/yaocloud/yao
212
214
  licenses:
@@ -228,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
228
230
  version: '0'
229
231
  requirements: []
230
232
  rubyforge_project:
231
- rubygems_version: 2.2.3
233
+ rubygems_version: 2.5.0
232
234
  signing_key:
233
235
  specification_version: 4
234
236
  summary: Yet Another OpenStack API Wrapper that rocks!!
@@ -240,3 +242,4 @@ test_files:
240
242
  - test/yao/test_config.rb
241
243
  - test/yao/test_server_error.rb
242
244
  - test/yao/test_token.rb
245
+ has_rdoc: