kaname 0.4.0 → 0.5.0
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 +4 -4
- data/.travis.yml +3 -3
- data/Gemfile +0 -1
- data/bin/console +0 -7
- data/bin/setup +0 -2
- data/kaname.gemspec +2 -1
- data/lib/kaname.rb +0 -2
- data/lib/kaname/adapter.rb +2 -2
- data/lib/kaname/adapter/{real.rb → read_and_write.rb} +1 -6
- data/lib/kaname/adapter/read_only.rb +79 -0
- data/lib/kaname/cli.rb +6 -6
- data/lib/kaname/resource.rb +0 -45
- data/lib/kaname/version.rb +1 -1
- metadata +23 -9
- data/lib/kaname/adapter/mock.rb +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6dd4973d77de467ed9668e6d15e86509302057bb
|
4
|
+
data.tar.gz: f44b64c9f188ccb3ace24c014ee1ee88db3ef9ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 322e5458c83ad0d0a0be29401be176f5d3861e6d21b0a9df889bfdef1063d57bf861c3a78708a9e7de5b9603ec0172d5135517ec410b3d4e2f60bc43022ff0a3
|
7
|
+
data.tar.gz: 245c0a7dfbb4a3c9776420cd71c342dd529be6c4a7d23bc119cebef435fd7d2daba0b363bc7e12bd7d45c19d35d2b7c0bc4c0f1ed2fb799a66281d710bbd17bd
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/bin/console
CHANGED
@@ -3,12 +3,5 @@
|
|
3
3
|
require "bundler/setup"
|
4
4
|
require "kaname"
|
5
5
|
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
6
|
require "irb"
|
14
7
|
IRB.start
|
data/bin/setup
CHANGED
data/kaname.gemspec
CHANGED
@@ -19,7 +19,7 @@ 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", "
|
22
|
+
spec.add_dependency "yao", ">= 0.2.13"
|
23
23
|
spec.add_dependency "diffy"
|
24
24
|
spec.add_dependency "hashdiff"
|
25
25
|
spec.add_dependency "thor"
|
@@ -27,6 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_development_dependency "bundler"
|
28
28
|
spec.add_development_dependency "rake"
|
29
29
|
spec.add_development_dependency "minitest"
|
30
|
+
spec.add_development_dependency "minitest-stub_any_instance"
|
30
31
|
spec.add_development_dependency "mocha"
|
31
32
|
spec.add_development_dependency "webmock"
|
32
33
|
end
|
data/lib/kaname.rb
CHANGED
data/lib/kaname/adapter.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
require 'kaname/adapter/
|
2
|
-
require 'kaname/adapter/
|
1
|
+
require 'kaname/adapter/read_only'
|
2
|
+
require 'kaname/adapter/read_and_write'
|
@@ -3,12 +3,7 @@ require 'json'
|
|
3
3
|
|
4
4
|
module Kaname
|
5
5
|
module Adapter
|
6
|
-
class
|
7
|
-
def find_user(name)
|
8
|
-
user = Yao::User.find_by_name(name)
|
9
|
-
{"id" => user.id, "name" => user.name}
|
10
|
-
end
|
11
|
-
|
6
|
+
class ReadAndWrite < ReadOnly
|
12
7
|
def create_user(name, email)
|
13
8
|
password = Kaname::Generator.password
|
14
9
|
puts "#{name},#{password}"
|
@@ -0,0 +1,79 @@
|
|
1
|
+
module Kaname
|
2
|
+
module Adapter
|
3
|
+
class ReadOnly
|
4
|
+
def initialize
|
5
|
+
Kaname::Config.setup
|
6
|
+
end
|
7
|
+
|
8
|
+
def list_users
|
9
|
+
@_users ||= Yao::User.list
|
10
|
+
end
|
11
|
+
|
12
|
+
def find_user(name)
|
13
|
+
user = Yao::User.find_by_name(name)
|
14
|
+
{"id" => user.id, "name" => user.name}
|
15
|
+
end
|
16
|
+
|
17
|
+
def list_tenants
|
18
|
+
@_tenants ||= Yao::Tenant.list
|
19
|
+
end
|
20
|
+
|
21
|
+
def list_roles
|
22
|
+
@_roles ||= Yao::Role.list
|
23
|
+
end
|
24
|
+
|
25
|
+
def users_hash
|
26
|
+
@_user_hash ||= list_users.each_with_object(Hash.new { |h,k| h[k] = {} }) do |u,uh|
|
27
|
+
next if ignored_users.include?(u.name)
|
28
|
+
uh[u.name]["email"] = u.email
|
29
|
+
uh[u.name]["tenants"] = tenant_role_hash(u.name)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def create_user(name, email)
|
34
|
+
puts "Create User: #{name} #{email}"
|
35
|
+
{"name" => name}
|
36
|
+
end
|
37
|
+
|
38
|
+
def create_user_role(tenant, user_hash, role)
|
39
|
+
puts "Create User Role: #{tenant} #{user_hash["name"]} #{role}"
|
40
|
+
end
|
41
|
+
|
42
|
+
def delete_user(name)
|
43
|
+
puts "Delete User: #{name}"
|
44
|
+
end
|
45
|
+
|
46
|
+
def delete_user_role(tenant, user_hash, role)
|
47
|
+
puts "Delete User Role: #{tenant} #{user_hash["name"]} #{role}"
|
48
|
+
end
|
49
|
+
|
50
|
+
def change_user_role(tenant, user_hash, before_role, after_role)
|
51
|
+
delete_user_role(tenant, user_hash, before_role)
|
52
|
+
create_user_role(tenant, user_hash, after_role)
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def tenant_role_hash(user_name)
|
58
|
+
list_tenants.each_with_object(Hash.new) do |t,th|
|
59
|
+
r = Yao::Role.list_for_user(user_name, on: t.name)
|
60
|
+
th[t.name] = r.first.name if r.size > 0
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# default service users
|
65
|
+
def ignored_users
|
66
|
+
%w[
|
67
|
+
neutron
|
68
|
+
glance
|
69
|
+
cinder
|
70
|
+
admin
|
71
|
+
nova_ec2
|
72
|
+
nova
|
73
|
+
heat
|
74
|
+
ceilometer
|
75
|
+
]
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
data/lib/kaname/cli.rb
CHANGED
@@ -16,20 +16,20 @@ module Kaname
|
|
16
16
|
new_password = STDIN.noecho(&:gets).strip
|
17
17
|
puts
|
18
18
|
|
19
|
-
Kaname::Adapter::
|
19
|
+
Kaname::Adapter::ReadAndWrite.new.update_user_password(old_password, new_password)
|
20
20
|
end
|
21
21
|
|
22
22
|
option :dryrun, type: :boolean
|
23
23
|
desc 'apply', 'Commands about configuration apply'
|
24
24
|
def apply
|
25
25
|
adapter = if options[:dryrun]
|
26
|
-
Kaname::Adapter::
|
26
|
+
Kaname::Adapter::ReadOnly.new
|
27
27
|
else
|
28
|
-
Kaname::Adapter::
|
28
|
+
Kaname::Adapter::ReadAndWrite.new
|
29
29
|
end
|
30
30
|
|
31
31
|
if Kaname::Resource.yaml
|
32
|
-
diffs = HashDiff.diff(
|
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"
|
@@ -62,12 +62,12 @@ module Kaname
|
|
62
62
|
|
63
63
|
desc 'diff', 'Commands about show diffs from your openstack'
|
64
64
|
def diff
|
65
|
-
puts Diffy::Diff.new(YAML.dump(Kaname::
|
65
|
+
puts Diffy::Diff.new(YAML.dump(Kaname::Adapter::ReadOnly.new.users_hash), YAML.dump(Kaname::Resource.yaml))
|
66
66
|
end
|
67
67
|
|
68
68
|
desc 'dump', 'Commands about dump Keystone configuration.'
|
69
69
|
def dump
|
70
|
-
puts YAML.dump(Kaname::
|
70
|
+
puts YAML.dump(Kaname::Adapter::ReadOnly.new.users_hash)
|
71
71
|
end
|
72
72
|
end
|
73
73
|
end
|
data/lib/kaname/resource.rb
CHANGED
@@ -10,51 +10,6 @@ module Kaname
|
|
10
10
|
nil
|
11
11
|
end
|
12
12
|
end
|
13
|
-
|
14
|
-
def users
|
15
|
-
@_users ||= Yao::User.list
|
16
|
-
end
|
17
|
-
|
18
|
-
def tenants
|
19
|
-
@_tenants ||= Yao::Tenant.list
|
20
|
-
end
|
21
|
-
|
22
|
-
def roles
|
23
|
-
@_roles ||= Yao::Role.list
|
24
|
-
end
|
25
|
-
|
26
|
-
def users_hash
|
27
|
-
return @h if @h
|
28
|
-
|
29
|
-
@h = {}
|
30
|
-
users.each do |u|
|
31
|
-
next if ignored_users.include?(u.name)
|
32
|
-
@h[u.name] = {}
|
33
|
-
@h[u.name]["email"] = u.email
|
34
|
-
@h[u.name]["tenants"] = {}
|
35
|
-
tenants.each do |t|
|
36
|
-
r = Yao::Role.list_for_user(u.name, on: t.name)
|
37
|
-
if r.size > 0
|
38
|
-
@h[u.name]["tenants"][t.name] = r.first.name
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
@h
|
43
|
-
end
|
44
|
-
|
45
|
-
# default service users
|
46
|
-
def ignored_users
|
47
|
-
%w[
|
48
|
-
neutron
|
49
|
-
glance
|
50
|
-
cinder
|
51
|
-
admin
|
52
|
-
nova_ec2
|
53
|
-
nova
|
54
|
-
heat
|
55
|
-
ceilometer
|
56
|
-
]
|
57
|
-
end
|
58
13
|
end
|
59
14
|
end
|
60
15
|
end
|
data/lib/kaname/version.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kaname
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SHIBATA Hiroshi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: yao
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.2.13
|
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.
|
26
|
+
version: 0.2.13
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: diffy
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: minitest-stub_any_instance
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: mocha
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -157,8 +171,8 @@ files:
|
|
157
171
|
- kaname.gemspec
|
158
172
|
- lib/kaname.rb
|
159
173
|
- lib/kaname/adapter.rb
|
160
|
-
- lib/kaname/adapter/
|
161
|
-
- lib/kaname/adapter/
|
174
|
+
- lib/kaname/adapter/read_and_write.rb
|
175
|
+
- lib/kaname/adapter/read_only.rb
|
162
176
|
- lib/kaname/cli.rb
|
163
177
|
- lib/kaname/config.rb
|
164
178
|
- lib/kaname/generator.rb
|
@@ -184,7 +198,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
184
198
|
version: '0'
|
185
199
|
requirements: []
|
186
200
|
rubyforge_project:
|
187
|
-
rubygems_version: 2.
|
201
|
+
rubygems_version: 2.6.6
|
188
202
|
signing_key:
|
189
203
|
specification_version: 4
|
190
204
|
summary: Identity configuration tool for OpenStack.
|
data/lib/kaname/adapter/mock.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
module Kaname
|
2
|
-
module Adapter
|
3
|
-
class Mock
|
4
|
-
def find_user(name)
|
5
|
-
{"name" => name}
|
6
|
-
end
|
7
|
-
|
8
|
-
def create_user(name, email)
|
9
|
-
puts "Create User: #{name} #{email}"
|
10
|
-
{"name" => name}
|
11
|
-
end
|
12
|
-
|
13
|
-
def create_user_role(tenant, user_hash, role)
|
14
|
-
puts "Create User Role: #{tenant} #{user_hash["name"]} #{role}"
|
15
|
-
end
|
16
|
-
|
17
|
-
def delete_user(name)
|
18
|
-
puts "Delete User: #{name}"
|
19
|
-
end
|
20
|
-
|
21
|
-
def delete_user_role(tenant, user_hash, role)
|
22
|
-
puts "Delete User Role: #{tenant} #{user_hash["name"]} #{role}"
|
23
|
-
end
|
24
|
-
|
25
|
-
def change_user_role(tenant, user_hash, before_role, after_role)
|
26
|
-
delete_user_role(tenant, user_hash, before_role)
|
27
|
-
create_user_role(tenant, user_hash, after_role)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|