rs_user_policy 0.1.9 → 0.1.10

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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ Y2FhODMxNzIwNjgwYmE3Y2UzOGZhZDUwNzNlMzU4N2NmM2U5ZGNhYw==
5
+ data.tar.gz: !binary |-
6
+ YzNiMTRjYmM0N2Y1ZDI4NGEwYThmNGY5ZDc0Zjc5MmQyY2MzYWRjMQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ Nzk5N2I2MDk4NDg5YzUwMGRjMWMzMWRmNDZjNDFkZGEwYjgyNmFkNTQ1OGU5
10
+ MmJkZTFkNTM1YTM2YjY2ZmNjZTM3MmE3MDdkZGJlY2E1NmY1MDcyNTY1ZDdk
11
+ MzgyZTNkYjA0YmE3YWM3ZjlkYTczYWIxNjhlOWM4YzQ0NWI5NmE=
12
+ data.tar.gz: !binary |-
13
+ OTVhYjg5OGJjMzJlM2QzMzJjMWVjYzllNDgyYjcwMWM2YTYyNzNkZTE3ODdm
14
+ MTM2NTY2ODlhZmIzMjBjNzNhZTFlMDVlYmZhODMyYWUyZGQ3ZWNiYWM4YjY4
15
+ N2QzMjgwNmExYTYwMzJjMWZjZDdhMzNiMjc3YzJhODdhYWMyMWE=
data/README.rdoc CHANGED
@@ -135,6 +135,7 @@ Second is the user_assignments-<timestamp>.json file. This will be a combinatio
135
135
  * Perhaps allow a role to inherit from another, or be a concatenation of several?
136
136
  * Provide a mechanism for "temporary" users with an expiration date
137
137
  * Perhaps allow the user to enter a different role after the expiration date, rather than being removed completely?
138
+ * Optionally bail out when provided user_assignments file cannot be parsed. bin/rs_user_policy:75
138
139
 
139
140
  == Copyright
140
141
 
data/bin/rs_user_policy CHANGED
@@ -46,6 +46,8 @@ opts = Trollop::options do
46
46
  opt :rs_acct_num, "A RightScale Enterprise Master Account ID", :type => :string, :multi => true, :required => true
47
47
  opt :policy, "The path to a JSON file containing the role to permissions policy to enforce", :type => :string, :required => true
48
48
  opt :user_assignments, "The path to a JSON file containing email address => role pairs for user assignments", :type => :string
49
+ opt :empty_user_assignments_fatal, "A flag which asserts that the provided user_assigments should contain at least one user_assignment mapping. If there are 0 user assignments found, rs_user_policy will terminate."
50
+ opt :audit_dir, "A directory where audit logs will be stored. By default this is the current working directory.", :type => :string
49
51
  opt :dry_run, "A flag indicating that no changes should be made, only the user_assignments.json should be evaluated (or created) and the audit_log.json produced"
50
52
  opt :authority, "A flag indicating that all users in the user_assignments file \"MUST\" exist, and will always be created. Effectively asserting that the user_assignments is your canonical authority for users."
51
53
  end
@@ -72,7 +74,13 @@ end
72
74
  user_assignments_options = opts[:user_assignments] ? { :filename => opts[:user_assignments] } : {}
73
75
  user_assignments = RsUserPolicy::UserAssignments::JsonUserAssignments.new(user_assignments_options)
74
76
  if user_assignments.length == 0
75
- log.warn("No user_assignments file was specified or the file could not be found. All users will be treated as immutable and written to the user_assigments output file.")
77
+ if(opts[:empty_user_assignments_fatal])
78
+ log.fatal("There were 0 user_assigments from filename #{opts[:user_assigments]}. Exitting due to empty_user_assigments_fatal being set.")
79
+ exit 1
80
+ else
81
+ log.warn("No user_assignments file was specified or the file could not be found. All users will be treated as immutable and written to the user_assigments output file.")
82
+ end
83
+
76
84
  end
77
85
 
78
86
  user_collection = RsUserPolicy::UserCollection.new
@@ -187,4 +195,4 @@ end unless opts[:dry_run]
187
195
  user_assignments.serialize(:filename => user_assignments_output)
188
196
  audit_log.write_file
189
197
 
190
- exit exit_code
198
+ exit exit_code
@@ -29,10 +29,23 @@ module RsUserPolicy
29
29
  # @param [Hash] options A hash of options that impact the audit log filename.
30
30
  # @option options [String] :timestamp The timestamp to append to the filename
31
31
  # @option options [Bool] :dry_run A boolean indicating if this is a dry run
32
+ # @option options [String] :audit_dir The directory where the audit log should be created
32
33
  def initialize(options={})
33
34
  timestamp = options[:timestamp] || Time.now.to_i
34
35
  @audit_log = {}
35
- @filename = "audit_log#{options[:dry_run] ? '_dryrun' : ''}-#{timestamp}.json"
36
+ @filename = ''
37
+
38
+ if options[:audit_dir]
39
+ @filename << ::File.join(options[:audit_dir], 'audit_log')
40
+ else
41
+ @filename << 'audit_log'
42
+ end
43
+
44
+ if options[:dry_run]
45
+ @filename << '_dryrun'
46
+ end
47
+
48
+ @filename << "-#{timestamp}.json"
36
49
  end
37
50
 
38
51
  # Adds a new entry to the audit log
@@ -56,4 +69,4 @@ module RsUserPolicy
56
69
  File.open(@filename, 'w') {|f| f.write(JSON.pretty_generate(@audit_log))}
57
70
  end
58
71
  end
59
- end
72
+ end
@@ -36,9 +36,6 @@ module RsUserPolicy
36
36
  # @option options [Hash] :json A hash containing the user assignments
37
37
  # @option options [String] :json_str A JSON string containing the user assignments
38
38
  # @option options [String] :filename Path and filename to a file containing the user assignments in JSON
39
- #
40
- # @raise [Errno::ENOENT] If :filename was specified but the policy file does not exist
41
- # @raise [JSON::ParserError] If the policy is not valid JSON
42
39
  def initialize(options={})
43
40
  begin
44
41
  if options.has_key?(:json)
@@ -140,4 +137,4 @@ module RsUserPolicy
140
137
  end
141
138
  end
142
139
  end
143
- end
140
+ end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rs_user_policy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
5
- prerelease:
4
+ version: 0.1.10
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ryan J. Geyer
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-10-03 00:00:00.000000000 Z
11
+ date: 2014-05-22 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: right_api_client
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - '='
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - '='
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: trollop
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ! '>='
36
32
  - !ruby/object:Gem::Version
@@ -41,7 +37,6 @@ dependencies:
41
37
  type: :runtime
42
38
  prerelease: false
43
39
  version_requirements: !ruby/object:Gem::Requirement
44
- none: false
45
40
  requirements:
46
41
  - - ! '>='
47
42
  - !ruby/object:Gem::Version
@@ -57,6 +52,10 @@ executables:
57
52
  extensions: []
58
53
  extra_rdoc_files: []
59
54
  files:
55
+ - LICENSE.txt
56
+ - README.rdoc
57
+ - bin/rs_user_policy
58
+ - lib/rs_user_policy.rb
60
59
  - lib/rs_user_policy/audit_log.rb
61
60
  - lib/rs_user_policy/policy/json_policy.rb
62
61
  - lib/rs_user_policy/policy/policy.rb
@@ -67,40 +66,29 @@ files:
67
66
  - lib/rs_user_policy/user_assignments/user_assignments.rb
68
67
  - lib/rs_user_policy/user_collection.rb
69
68
  - lib/rs_user_policy/utilities.rb
70
- - lib/rs_user_policy.rb
71
- - bin/rs_user_policy
72
- - LICENSE.txt
73
- - README.rdoc
74
69
  homepage: https://github.com/rgeyer/rs_user_policy
75
70
  licenses:
76
71
  - MIT
72
+ metadata: {}
77
73
  post_install_message:
78
74
  rdoc_options: []
79
75
  require_paths:
80
76
  - lib
81
77
  required_ruby_version: !ruby/object:Gem::Requirement
82
- none: false
83
78
  requirements:
84
79
  - - ! '>='
85
80
  - !ruby/object:Gem::Version
86
81
  version: '0'
87
- segments:
88
- - 0
89
- hash: 1521006983899305700
90
82
  required_rubygems_version: !ruby/object:Gem::Requirement
91
- none: false
92
83
  requirements:
93
84
  - - ! '>='
94
85
  - !ruby/object:Gem::Version
95
86
  version: '0'
96
- segments:
97
- - 0
98
- hash: 1521006983899305700
99
87
  requirements: []
100
88
  rubyforge_project:
101
- rubygems_version: 1.8.25
89
+ rubygems_version: 2.2.2
102
90
  signing_key:
103
- specification_version: 3
91
+ specification_version: 4
104
92
  summary: Manages users across many different child accounts of a RightScale Enterprise
105
93
  Master Account
106
94
  test_files: []