yao 0.2.2 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
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: