kakin 0.2.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -1
- data/kakin.gemspec +1 -1
- data/lib/kakin/cli.rb +22 -22
- data/lib/kakin/configuration.rb +32 -14
- data/lib/kakin/version.rb +1 -1
- data/lib/kakin/yao_ext/yao.rb +10 -0
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4d79cc2ffb8deb8ebb267963327939ee177c60ddb014217ee433a0394981c9f
|
4
|
+
data.tar.gz: bf19b09fc2874309ed228ed06a9179e659d5f3d54ecfa7db6e4357b8898ad9cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 276941d537c9c47a2e31b88564cf9d12a8c11ce2b56fd035d0b35113fcbbf0add7e2cdaa8ea5cbfe43fc4b4a9893fa1e6b8925aae4aff1c90a7d4bf1a72735cc
|
7
|
+
data.tar.gz: f7f2dc5c6369018a79060ce2a7b947b69efbb7625fe2eb11d120e5b4d24c5fe3e848667e8b29e526c69ddb3f15c2ed51ca8ac04fcd58c8b275a77bc7d79234c4
|
data/README.md
CHANGED
@@ -12,12 +12,20 @@ You need to create configuration file located `~/.kakin` for openstack credentia
|
|
12
12
|
|
13
13
|
```
|
14
14
|
auth_url: "http://your-openstack-host:35357/v2.0/tokens"
|
15
|
-
management_url: "http://your-openstack-host:8774/v2"
|
16
15
|
username: "username"
|
17
16
|
tenant: "your-admin-tenant"
|
18
17
|
password: "password"
|
19
18
|
```
|
20
19
|
|
20
|
+
Or set with environment variable.
|
21
|
+
|
22
|
+
```
|
23
|
+
export OS_AUTH_URL=<your openstack auth url>
|
24
|
+
export OS_USER=<your username>
|
25
|
+
export OS_TENANT_NAME=<your tenant>
|
26
|
+
export OS_PASSWORD=<your password>
|
27
|
+
```
|
28
|
+
|
21
29
|
You can get resource usage with following command.
|
22
30
|
|
23
31
|
```
|
data/kakin.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_dependency 'thor'
|
22
22
|
spec.add_dependency 'yao'
|
23
23
|
|
24
|
-
spec.add_development_dependency "bundler", "~> 1
|
24
|
+
spec.add_development_dependency "bundler", "~> 2.0.1"
|
25
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
26
|
spec.add_development_dependency "minitest"
|
27
27
|
end
|
data/lib/kakin/cli.rb
CHANGED
@@ -3,6 +3,7 @@ require 'yaml'
|
|
3
3
|
require 'json'
|
4
4
|
require 'net/http'
|
5
5
|
require 'yao'
|
6
|
+
require 'kakin/yao_ext/yao'
|
6
7
|
require 'kakin/yao_ext/tenant'
|
7
8
|
require 'kakin/yao_ext/server'
|
8
9
|
require 'kakin/yao_ext/floatingip'
|
@@ -26,20 +27,17 @@ module Kakin
|
|
26
27
|
|
27
28
|
STDERR.puts "Start: #{start_time}"
|
28
29
|
STDERR.puts "End: #{end_time}"
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
}
|
36
|
-
|
37
|
-
if res.code != "200"
|
30
|
+
client = Yao.default_client.pool['compute']
|
31
|
+
res = client.get("./os-simple-tenant-usage?start=#{start_time}&end=#{end_time}") do |req|
|
32
|
+
req.headers["Accept"] = "application/json"
|
33
|
+
end
|
34
|
+
|
35
|
+
if res.status != 200
|
38
36
|
raise "usage data fatch is failed"
|
39
37
|
else
|
40
38
|
result = Hash.new
|
41
|
-
tenant_usages =
|
42
|
-
tenants = Yao
|
39
|
+
tenant_usages = res.body["tenant_usages"]
|
40
|
+
tenants = Yao.tenant_klass.list
|
43
41
|
|
44
42
|
unless options[:t].empty?
|
45
43
|
tenant = tenants.find { |tenant| tenant.name == options[:t] }
|
@@ -49,7 +47,9 @@ module Kakin
|
|
49
47
|
end
|
50
48
|
|
51
49
|
tenant_usages.each do |usage|
|
52
|
-
|
50
|
+
tenant_id = usage["tenant_id"]
|
51
|
+
tenant = tenants.find { |tenant| tenant.id == tenant_id }
|
52
|
+
tenant_name = tenant&.name || tenant_id
|
53
53
|
|
54
54
|
total_vcpus_usage = usage["total_vcpus_usage"]
|
55
55
|
total_memory_mb_usage = usage["total_memory_mb_usage"]
|
@@ -59,7 +59,7 @@ module Kakin
|
|
59
59
|
bill_memory = total_memory_mb_usage * yaml["memory_mb_per_hour"]
|
60
60
|
bill_disk = total_local_gb_usage * yaml["disk_gb_per_hour"]
|
61
61
|
|
62
|
-
result[
|
62
|
+
result[tenant_name] = {
|
63
63
|
'bill_total' => bill_vcpu + bill_memory + bill_disk,
|
64
64
|
'bill_vcpu' => bill_vcpu,
|
65
65
|
'bill_memory' => bill_memory,
|
@@ -92,9 +92,9 @@ module Kakin
|
|
92
92
|
|
93
93
|
result = Hash.new
|
94
94
|
tenants = unless options[:t].empty?
|
95
|
-
Yao
|
95
|
+
Yao.tenant_klass.list(name: options[:t])
|
96
96
|
else
|
97
|
-
Yao
|
97
|
+
Yao.tenant_klass.list
|
98
98
|
end
|
99
99
|
tenants = [tenants] unless tenants.is_a?(Array)
|
100
100
|
|
@@ -122,9 +122,9 @@ module Kakin
|
|
122
122
|
|
123
123
|
result = Hash.new
|
124
124
|
tenants = unless options[:t].empty?
|
125
|
-
Yao
|
125
|
+
Yao.tenant_klass.list(name: options[:t])
|
126
126
|
else
|
127
|
-
Yao
|
127
|
+
Yao.tenant_klass.list
|
128
128
|
end
|
129
129
|
tenants = [tenants] unless tenants.is_a?(Array)
|
130
130
|
|
@@ -149,9 +149,9 @@ module Kakin
|
|
149
149
|
|
150
150
|
result = Hash.new
|
151
151
|
tenants = unless options[:t].empty?
|
152
|
-
Yao
|
152
|
+
Yao.tenant_klass.list(name: options[:t])
|
153
153
|
else
|
154
|
-
Yao
|
154
|
+
Yao.tenant_klass.list
|
155
155
|
end
|
156
156
|
tenants = [tenants] unless tenants.is_a?(Array)
|
157
157
|
volume_types = Yao::VolumeType.list
|
@@ -160,10 +160,10 @@ module Kakin
|
|
160
160
|
tenants.each do |tenant|
|
161
161
|
result[tenant.name] ||= {}
|
162
162
|
volume_types.each do |volume_type|
|
163
|
-
|
163
|
+
count = volumes.select { |volume| volume.tenant_id == tenant.id && volume.volume_type == volume_type.name }.map(&:size).sum
|
164
164
|
result[tenant.name][volume_type.name] = {
|
165
|
-
'
|
166
|
-
'total_usage':
|
165
|
+
'count': count,
|
166
|
+
'total_usage': count * yaml['volume_cost_per_gb'][volume_type.name]
|
167
167
|
}
|
168
168
|
end
|
169
169
|
end
|
data/lib/kakin/configuration.rb
CHANGED
@@ -1,28 +1,46 @@
|
|
1
1
|
module Kakin
|
2
2
|
class Configuration
|
3
3
|
|
4
|
-
def self.management_url
|
5
|
-
@@_management_url
|
6
|
-
end
|
7
|
-
|
8
4
|
def self.tenant
|
9
5
|
@@_tenant
|
10
6
|
end
|
11
7
|
|
12
8
|
def self.setup
|
13
|
-
|
9
|
+
config = {
|
10
|
+
'auth_url' => ENV['OS_AUTH_URL'],
|
11
|
+
'tenant' => ENV['OS_TENANT_NAME'] || ENV['OS_PROJECT_NAME'],
|
12
|
+
'username' => ENV['OS_USERNAME'],
|
13
|
+
'password' => ENV['OS_PASSWORD'],
|
14
|
+
'client_cert' => ENV['OS_CERT'],
|
15
|
+
'client_key' => ENV['OS_KEY'],
|
16
|
+
'identity_api_version' => ENV['OS_IDENTITY_API_VERSION'],
|
17
|
+
'user_domain_name' => ENV['OS_USER_DOMAIN_NAME'],
|
18
|
+
'project_domain_name' => ENV['OS_PROJECT_DOMAIN_NAME'],
|
19
|
+
'timeout' => ENV['YAO_TIMEOUT'],
|
20
|
+
'management_url' => ENV['YAO_MANAGEMENT_URL'],
|
21
|
+
'debug' => ENV['YAO_DEBUG'] || false,
|
22
|
+
}
|
23
|
+
|
24
|
+
file_path = File.expand_path('~/.kakin')
|
25
|
+
if File.exist?(file_path)
|
26
|
+
yaml = YAML.load_file(file_path)
|
27
|
+
config.merge!(yaml)
|
28
|
+
end
|
14
29
|
|
15
|
-
@@
|
16
|
-
@@_tenant = yaml['tenant']
|
30
|
+
@@_tenant = config['tenant']
|
17
31
|
|
18
32
|
Yao.configure do
|
19
|
-
auth_url
|
20
|
-
tenant_name
|
21
|
-
username
|
22
|
-
password
|
23
|
-
timeout
|
24
|
-
client_cert
|
25
|
-
client_key
|
33
|
+
auth_url config['auth_url']
|
34
|
+
tenant_name config['tenant']
|
35
|
+
username config['username']
|
36
|
+
password config['password']
|
37
|
+
timeout config['timeout'].to_i if config['timeout']
|
38
|
+
client_cert config['client_cert'] if config['client_cert']
|
39
|
+
client_key config['client_key'] if config['client_key']
|
40
|
+
identity_api_version config['identity_api_version'] if config['identity_api_version']
|
41
|
+
user_domain_name config['user_domain_name'] if config['user_domain_name']
|
42
|
+
project_domain_name config['project_domain_name'] if config['project_domain_name']
|
43
|
+
debug config['debug']
|
26
44
|
end
|
27
45
|
end
|
28
46
|
end
|
data/lib/kakin/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kakin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- buty4649
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-07-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
@@ -45,14 +45,14 @@ dependencies:
|
|
45
45
|
requirements:
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version:
|
48
|
+
version: 2.0.1
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
55
|
+
version: 2.0.1
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: rake
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -107,6 +107,7 @@ files:
|
|
107
107
|
- lib/kakin/yao_ext/floatingip.rb
|
108
108
|
- lib/kakin/yao_ext/server.rb
|
109
109
|
- lib/kakin/yao_ext/tenant.rb
|
110
|
+
- lib/kakin/yao_ext/yao.rb
|
110
111
|
homepage: https://github.com/yaocloud/kakin
|
111
112
|
licenses: []
|
112
113
|
metadata: {}
|
@@ -125,8 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
126
|
- !ruby/object:Gem::Version
|
126
127
|
version: '0'
|
127
128
|
requirements: []
|
128
|
-
|
129
|
-
rubygems_version: 2.7.6
|
129
|
+
rubygems_version: 3.1.2
|
130
130
|
signing_key:
|
131
131
|
specification_version: 4
|
132
132
|
summary: kakin is resource calcuration tool for OpenStack
|