kaname 0.6.2 → 0.8.1

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
- SHA1:
3
- metadata.gz: 15b28f025e86bd66760143c6f4746ea38e43be3c
4
- data.tar.gz: bf491e308de8a2b16f34469d7d80dab03289ac80
2
+ SHA256:
3
+ metadata.gz: 90d10babee7819939e06b5e30de7e45874695795286f484383288724f885004b
4
+ data.tar.gz: 387231fe536276850ce78b9ea8567a8f26cad09cdb7dfbd5b28c47594400a18f
5
5
  SHA512:
6
- metadata.gz: 84717d072d821c76d99f9a3f9f2b3f24256354f643a37feda0228e5d6965dc7e26ce610fa4a1e4b864deb53cb58ede620f8dd26c50a5f7e4fc99b3f9194bffc0
7
- data.tar.gz: 4422dac3de3308fad2ea4747cd1c951ee7db77239406307da565f3bb6a9dd7a88be5a5fa8772cc1239bf5450b358840ad9e048233b9fbdb3b51e6a3c74010e8c
6
+ metadata.gz: b379ed4b0ac3d5f224ee3a445589d09879775d778655bc4c1805da626509bc0fcc13f434830692d95593c293cd36c46b6811c2ed5aa73e0fb50a63795a628568
7
+ data.tar.gz: 71131ed96229fd43d4b7db03df9469b746ab5b110e22777ae4e8cd06d8d193a8a902201db480410bcc3bf274777d920503d4233e54c6b86c5db21ec1dbb3acd0
data/.gitignore CHANGED
@@ -7,5 +7,6 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ vendor/bundle
10
11
 
11
12
  keystone.yml
@@ -1,5 +1,4 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1.10
4
- - 2.2.5
5
- - 2.3.1
3
+ - 2.6.6
4
+ - 2.7.2
data/README.md CHANGED
@@ -43,12 +43,12 @@ auth_url: "http://your-openstack-auth-endpoint/v2.0"
43
43
  username: "admin"
44
44
  tenant: "admin"
45
45
  password: "admin-no-password"
46
- management_url: "http://your-openstack-management-endpoint/v2.0"
47
46
  ```
48
47
 
49
48
  also, you can set some options.
50
49
 
51
50
  ```
51
+ ca_cert: "/path/to/ca.pem"
52
52
  client_cert: "/path/to/cert.pem"
53
53
  client_key: "/path/to/key.pem"
54
54
  region_name: "YourRegion"
@@ -19,9 +19,9 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_dependency "yao", ">= 0.3.3"
22
+ spec.add_dependency "yao", ">= 0.13.4"
23
23
  spec.add_dependency "diffy"
24
- spec.add_dependency "hashdiff"
24
+ spec.add_dependency "hashdiff", ">= 1.0.0"
25
25
  spec.add_dependency "thor"
26
26
 
27
27
  spec.add_development_dependency "bundler"
@@ -17,25 +17,17 @@ module Kaname
17
17
  end
18
18
 
19
19
  def update_user_password(old_password, new_password)
20
- unless Kaname::Config.management_url
21
- raise 'management_url is missing. Check the configuration file.'
22
- end
23
-
24
20
  if old_password && new_password
25
- token = Yao::Auth.try_new.token
26
21
  me = Yao::User.get_by_name(Kaname::Config.username)
27
- endpoint = Kaname::Config.management_url
28
-
29
- url = URI.parse("#{endpoint}/OS-KSCRUD/users/#{me.id}")
22
+ client= Yao.default_client.pool['identity']
30
23
 
31
- req = Net::HTTP::Patch.new(url.path)
32
- req["Content-type"] = "application/json"
33
- req["X-Auth-Token"] = token
34
- req.body = JSON.generate({'user' => {'password' => new_password, 'original_password' => old_password}})
35
-
36
- res = Net::HTTP.start(url.host, url.port) {|http| http.request(req) }
24
+ params = JSON.generate({'user' => {'password' => new_password, 'original_password' => old_password}})
25
+ res = client.patch("./OS-KSCRUD/users/#{me.id}") do |req|
26
+ req.body = params
27
+ req.headers['Content-Type'] = 'application/json'
28
+ end
37
29
 
38
- if res.code == "200"
30
+ if res.status == 200
39
31
  puts "Your password is updated. Please update your ~/.kaname configuration too."
40
32
  else
41
33
  raise "password updating is failed"
@@ -10,12 +10,16 @@ module Kaname
10
10
  end
11
11
 
12
12
  def find_user(name)
13
- user = Yao::User.find_by_name(name)
13
+ user = Yao::User.find_by_name(name).first
14
14
  {"id" => user.id, "name" => user.name}
15
15
  end
16
16
 
17
17
  def list_tenants
18
- @_tenants ||= Yao::Tenant.list
18
+ @_tenants ||= if keystone_v2?
19
+ Yao::Tenant.list
20
+ else
21
+ Yao::Project.list
22
+ end
19
23
  end
20
24
 
21
25
  def list_roles
@@ -62,6 +66,10 @@ module Kaname
62
66
 
63
67
  private
64
68
 
69
+ def keystone_v2?
70
+ Yao.default_client.pool["identity"].url_prefix.to_s.match(/v2\.0/)
71
+ end
72
+
65
73
  def tenant_role_hash(user_id)
66
74
  list_role_assignments.each_with_object(Hash.new) do |t,th|
67
75
  if t.user.id == user_id
@@ -29,7 +29,7 @@ module Kaname
29
29
  end
30
30
 
31
31
  if Kaname::Resource.yaml
32
- diffs = HashDiff.diff(adapter.users_hash, Kaname::Resource.yaml)
32
+ diffs = Hashdiff.diff(adapter.users_hash, Kaname::Resource.yaml)
33
33
  diffs.each do |diff|
34
34
  resource = diff[1].split('.')
35
35
  if resource.size == 1 # "user"
@@ -3,12 +3,13 @@ require 'yaml'
3
3
 
4
4
  module Kaname
5
5
  class Config
6
- %w[username management_url].each do |m|
7
- self.class_variable_set(:"@@#{m}", String.new)
8
- end
6
+ @@username = String.new
7
+ @@ca_cert = nil
8
+ @@client_key = nil
9
+ @@client_cert = nil
9
10
 
10
11
  def self.setup
11
- load_config
12
+ load_config unless envs_exist?
12
13
  setup_yao
13
14
  end
14
15
 
@@ -16,12 +17,12 @@ module Kaname
16
17
  @@username
17
18
  end
18
19
 
19
- def self.management_url
20
- @@management_url
21
- end
22
-
23
20
  private
24
21
 
22
+ def self.envs_exist?
23
+ %w[OS_AUTH_URL OS_TENANT_NAME OS_USERNAME OS_PASSWORD OS_CERT OS_KEY OS_REGION_NAME OS_IDENTITY_API_VERSION].any?{|k|ENV[k]}
24
+ end
25
+
25
26
  def self.load_config
26
27
  config_file = File.join(Dir.home, '.kaname')
27
28
  raise '~/.kaname is missing' unless File.exists?(config_file)
@@ -32,26 +33,33 @@ module Kaname
32
33
  raise "Configuration '#{conf_item}' is missing. Check your ~/.kaname" unless config[conf_item]
33
34
  end
34
35
 
35
- @@auth_url = config['auth_url']
36
- @@tenant = config['tenant']
37
- @@username = config['username']
38
- @@password = config['password']
39
- @@management_url = config['management_url']
40
- @@client_cert = config['client_cert']
41
- @@client_key = config['client_key']
42
- @@region_name = config['region_name']
36
+ @@auth_url = config['auth_url']
37
+ @@tenant = config['tenant']
38
+ @@username = config['username']
39
+ @@password = config['password']
40
+ @@ca_cert = config['ca_cert']
41
+ @@client_cert = config['client_cert']
42
+ @@client_key = config['client_key']
43
+ @@region_name = config['region_name']
44
+ @@user_domain_name = config['user_domain_name']
45
+ @@project_domain_name = config['project_domain_name']
46
+ @@identity_api_version = config['identity_api_version']
43
47
  true
44
48
  end
45
49
 
46
50
  def self.setup_yao
47
51
  Yao.configure do
48
- auth_url @@auth_url
49
- tenant_name @@tenant
50
- username @@username
51
- password @@password
52
- client_cert @@client_cert
53
- client_key @@client_key
54
- region_name @@region_name
52
+ auth_url (ENV['OS_AUTH_URL'] || @@auth_url)
53
+ tenant_name (ENV['OS_TENANT_NAME'] || @@tenant)
54
+ username (ENV['OS_USERNAME'] || @@username)
55
+ password (ENV['OS_PASSWORD'] || @@password)
56
+ ca_cert (ENV['OS_CACERT'] || @@ca_cert)
57
+ client_cert (ENV['OS_CERT'] || @@client_cert)
58
+ client_key (ENV['OS_KEY'] || @@client_key)
59
+ region_name (ENV['OS_REGION_NAME'] || @@region_name)
60
+ identity_api_version (ENV['OS_IDENTITY_API_VERSION'] || @@identity_api_version)
61
+ user_domain_name (ENV['OS_USER_DOMAIN_NAME'] || @@user_domain_name)
62
+ project_domain_name (ENV['OS_PROJECT_DOMAIN_NAME'] || @@project_domain_name)
55
63
  end
56
64
  end
57
65
  end
@@ -4,7 +4,7 @@ module Kaname
4
4
  class Resource
5
5
  class << self
6
6
  def yaml(filename = 'keystone.yml')
7
- if File.exists?(filename)
7
+ if File.exist?(filename)
8
8
  @_yaml ||= expand_all_tenants(YAML.load_file(filename))
9
9
  end
10
10
  end
@@ -1,3 +1,3 @@
1
1
  module Kaname
2
- VERSION = "0.6.2"
2
+ VERSION = "0.8.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kaname
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - SHIBATA Hiroshi
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-01-10 00:00:00.000000000 Z
11
+ date: 2020-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yao
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.3.3
19
+ version: 0.13.4
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.3.3
26
+ version: 0.13.4
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: diffy
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 1.0.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 1.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: thor
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -182,7 +182,7 @@ homepage: https://github.com/yaocloud/kaname
182
182
  licenses:
183
183
  - MIT
184
184
  metadata: {}
185
- post_install_message:
185
+ post_install_message:
186
186
  rdoc_options: []
187
187
  require_paths:
188
188
  - lib
@@ -197,9 +197,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
197
197
  - !ruby/object:Gem::Version
198
198
  version: '0'
199
199
  requirements: []
200
- rubyforge_project:
201
- rubygems_version: 2.5.2
202
- signing_key:
200
+ rubygems_version: 3.0.6
201
+ signing_key:
203
202
  specification_version: 4
204
203
  summary: Identity configuration tool for OpenStack.
205
204
  test_files: []