miam 0.2.4.beta16 → 0.2.4

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
  SHA256:
3
- metadata.gz: 3064e06a5f31e8841828996c7669ba0ec6a9243b0480581d6f406722d64d002d
4
- data.tar.gz: 03e24693e97410030cd8541a391972de9567d82d8cfa45a3f6d2f915c5c5cb7c
3
+ metadata.gz: 54eba51d4fa9323784be7dce0592ab0762ac43baf07be131708d5f2129ef31ea
4
+ data.tar.gz: 54d049bd184ec5899f0fb58d744c19c619f3bab07335812e5ae552dad3ed8367
5
5
  SHA512:
6
- metadata.gz: 35398120cf54254e14b890bddefc62236e6051d78b82abbabddbe62c6286ba492de26250c94bd6e1197894ae1447dd70cf226880796144c82e064da724f912a9
7
- data.tar.gz: 5c4399f1ab0ab49e85c7cb65e93f44d9895a616e5eb93e7e041f371b31f1ff06e4075929f262a14a70ac280d78d1e69fed2effb5a911f7c2d6650f90a657a1a3
6
+ metadata.gz: f45931d3d409f81a1a46a57177e51090a509f9978b2a88b2ecdeb009d1728bd28e9ff98ebc7f6d2814ef554903b672ea46d333e5199dd99672b7136c46d69c73
7
+ data.tar.gz: 2f80c18b24701faf30111ea8c23575baf1de72a3b7489ab4133adddde75eb90eb98d90229247fee84c88cad95bd784cb9f09165f509f8578ca1212b1a6fbb279
data/bin/miam CHANGED
@@ -54,6 +54,7 @@ ARGV.options do |opt|
54
54
  opt.on('' , '--target REGEXP') {|v| (options[:target] ||= []) << Regexp.new(v) }
55
55
  opt.on('' , '--exclude REGEXP') {|v| (options[:exclude] ||= []) << Regexp.new(v) }
56
56
  opt.on('' , '--ignore-login-profile') { options[:ignore_login_profile] = true }
57
+ opt.on('' , '--no-access-key') { options[:no_access_key] = true }
57
58
  opt.on('' , '--no-color') { options[:color] = false }
58
59
  opt.on('' , '--no-progress') { options[:no_progress] = true }
59
60
  opt.on('' , '--debug') { options[:debug] = true }
data/lib/miam/client.rb CHANGED
@@ -2,7 +2,10 @@ class Miam::Client
2
2
  include Miam::Logger::Helper
3
3
 
4
4
  def initialize(options = {})
5
- @options = {:format => :ruby}.merge(options)
5
+ @options = {
6
+ format: :ruby,
7
+ exclude: []
8
+ }.merge(options)
6
9
  aws_config = options.delete(:aws_config) || {}
7
10
  @iam = Aws::IAM::Client.new(aws_config)
8
11
  @sts = Aws::STS::Client.new(aws_config)
@@ -58,6 +61,7 @@ class Miam::Client
58
61
 
59
62
  def walk(file)
60
63
  expected = load_file(file)
64
+ @options[:exclude] += expected[:exclude]
61
65
 
62
66
  actual, group_users, instance_profile_roles = Miam::Exporter.export(@iam, @options)
63
67
  updated = pre_walk_managed_policies(expected[:policies], actual[:policies])
@@ -87,7 +91,7 @@ class Miam::Client
87
91
  updated = walk_user(user_name, expected_attrs, actual_attrs) || updated
88
92
  else
89
93
  actual_attrs = @driver.create_user(user_name, expected_attrs)
90
- access_key = @driver.create_access_key(user_name)
94
+ access_key = @driver.create_access_key(user_name) unless @options[:no_access_key]
91
95
 
92
96
  if access_key
93
97
  @password_manager.puts_password(user_name, access_key[:access_key_id], access_key[:secret_access_key])
@@ -539,7 +543,7 @@ class Miam::Client
539
543
  result = true
540
544
 
541
545
  if @options[:exclude]
542
- result &&= @options[:exclude].all? {|r| name !~ r}
546
+ result &&= @options[:exclude].all? {|r| name !~ r }
543
547
  end
544
548
 
545
549
  if @options[:target]
data/lib/miam/driver.rb CHANGED
@@ -358,7 +358,7 @@ class Miam::Driver
358
358
  type_s = type.slice(0, 1).upcase + type.slice(1..-1)
359
359
 
360
360
  log(:info, "Update #{type_s} `#{name}`", :color => :green)
361
- log(:info, " detach policies=#{policies.join(',')}", :color => :green)
361
+ log(:info, " detach policies=#{policies.join(',')}", :color => :red)
362
362
 
363
363
  unless_dry_run do
364
364
  policies.each do |arn|
@@ -12,7 +12,7 @@ class Miam::DSL::Context
12
12
  def initialize(path, options = {}, &block)
13
13
  @path = path
14
14
  @options = options
15
- @result = {:users => {}, :groups => {}, :roles => {}, :instance_profiles => {}, :policies => {}}
15
+ @result = {:users => {}, :groups => {}, :roles => {}, :instance_profiles => {}, :policies => {}, :exclude => []}
16
16
 
17
17
  @context = Hashie::Mash.new(
18
18
  :path => path,
@@ -41,6 +41,10 @@ class Miam::DSL::Context
41
41
  end
42
42
  end
43
43
 
44
+ def exclude(pattern)
45
+ @result[:exclude] << pattern
46
+ end
47
+
44
48
  def user(name, user_options = {}, &block)
45
49
  name = name.to_s
46
50
 
data/lib/miam/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Miam
2
- VERSION = '0.2.4.beta16'
2
+ VERSION = '0.2.4'
3
3
  end
data/lib/miam.rb CHANGED
@@ -5,7 +5,7 @@ require 'pp'
5
5
  require 'singleton'
6
6
  require 'thread'
7
7
 
8
- require 'aws-sdk-core'
8
+ require 'aws-sdk-iam'
9
9
  Aws.use_bundled_cert!
10
10
 
11
11
  require 'ruby-progressbar'
data/miam.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'aws-sdk-core', '>= 2.0.42', '< 3'
21
+ spec.add_dependency 'aws-sdk-iam', '~> 1'
22
22
  spec.add_dependency 'ruby-progressbar'
23
23
  spec.add_dependency 'parallel'
24
24
  spec.add_dependency 'term-ansicolor'
@@ -234,4 +234,19 @@ describe 'exclude option' do
234
234
  expect(updated).to be_falsey
235
235
  end
236
236
  end
237
+
238
+ context 'when specifying exclude option in a DSL' do
239
+ let(:exclude_everything) do
240
+ <<-RUBY
241
+ exclude /.*/
242
+ RUBY
243
+ end
244
+
245
+ subject { client(exclude: []) }
246
+
247
+ it do
248
+ updated = apply(subject) { exclude_everything }
249
+ expect(updated).to be_falsey
250
+ end
251
+ end
237
252
  end
metadata CHANGED
@@ -1,35 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miam
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4.beta16
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-02 00:00:00.000000000 Z
11
+ date: 2019-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: aws-sdk-core
14
+ name: aws-sdk-iam
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 2.0.42
20
- - - "<"
17
+ - - "~>"
21
18
  - !ruby/object:Gem::Version
22
- version: '3'
19
+ version: '1'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - ">="
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: 2.0.42
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '3'
26
+ version: '1'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: ruby-progressbar
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -246,12 +240,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
246
240
  version: '0'
247
241
  required_rubygems_version: !ruby/object:Gem::Requirement
248
242
  requirements:
249
- - - ">"
243
+ - - ">="
250
244
  - !ruby/object:Gem::Version
251
- version: 1.3.1
245
+ version: '0'
252
246
  requirements: []
253
247
  rubyforge_project:
254
- rubygems_version: 2.7.3
248
+ rubygems_version: 2.7.6
255
249
  signing_key:
256
250
  specification_version: 4
257
251
  summary: Miam is a tool to manage IAM.