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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0ca630516a0934f809e07e87ee98b910496bfa41
4
- data.tar.gz: a2b681a4c5037491c4270fdf5c859b7f39c5d6e2
3
+ metadata.gz: 6dd4973d77de467ed9668e6d15e86509302057bb
4
+ data.tar.gz: f44b64c9f188ccb3ace24c014ee1ee88db3ef9ef
5
5
  SHA512:
6
- metadata.gz: 48b54645f7fdbb667ddf3d4ddbfee2d601b6d3036e15a0ef28010b5199e4f2bbcfffa38419d35db93301969cba856afbff4e452a3f10a1c2a1f273b5a84cfeed
7
- data.tar.gz: 95081c6ac8c9a8c5897ca506324dbf4ab5832ac7a4f579133e8703215fda8d523b9127f19de300ce096bf6c9a21a379c16113c1d4c2edf5614644f17646b79cd
6
+ metadata.gz: 322e5458c83ad0d0a0be29401be176f5d3861e6d21b0a9df889bfdef1063d57bf861c3a78708a9e7de5b9603ec0172d5135517ec410b3d4e2f60bc43022ff0a3
7
+ data.tar.gz: 245c0a7dfbb4a3c9776420cd71c342dd529be6c4a7d23bc119cebef435fd7d2daba0b363bc7e12bd7d45c19d35d2b7c0bc4c0f1ed2fb799a66281d710bbd17bd
data/.travis.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.0.0
4
- - 2.1.6
5
- - 2.2.2
3
+ - 2.1.10
4
+ - 2.2.5
5
+ - 2.3.1
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in kaname.gemspec
4
3
  gemspec
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
@@ -3,5 +3,3 @@ set -euo pipefail
3
3
  IFS=$'\n\t'
4
4
 
5
5
  bundle install
6
-
7
- # Do any other automated setup that you need to do here
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", "~> 0.1.0"
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
@@ -9,5 +9,3 @@ require 'kaname/resource'
9
9
 
10
10
  module Kaname
11
11
  end
12
-
13
- Kaname::Config.setup unless ENV['RACK_ENV'] == 'test'
@@ -1,2 +1,2 @@
1
- require 'kaname/adapter/real'
2
- require 'kaname/adapter/mock'
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 Real
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::Real.new.update_user_password(old_password, new_password)
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::Mock.new
26
+ Kaname::Adapter::ReadOnly.new
27
27
  else
28
- Kaname::Adapter::Real.new
28
+ Kaname::Adapter::ReadAndWrite.new
29
29
  end
30
30
 
31
31
  if Kaname::Resource.yaml
32
- diffs = HashDiff.diff(Kaname::Resource.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"
@@ -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::Resource.users_hash), YAML.dump(Kaname::Resource.yaml))
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::Resource.users_hash)
70
+ puts YAML.dump(Kaname::Adapter::ReadOnly.new.users_hash)
71
71
  end
72
72
  end
73
73
  end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Kaname
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
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.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: 2015-11-13 00:00:00.000000000 Z
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.1.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.1.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/mock.rb
161
- - lib/kaname/adapter/real.rb
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.5.0
201
+ rubygems_version: 2.6.6
188
202
  signing_key:
189
203
  specification_version: 4
190
204
  summary: Identity configuration tool for OpenStack.
@@ -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