kaname 0.4.0 → 0.5.0

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: 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