Class: Miam::Driver
- Inherits:
-
Object
- Object
- Miam::Driver
- Includes:
- Logger::Helper
- Defined in:
- lib/miam/driver.rb
Constant Summary collapse
- MAX_POLICY_SIZE =
2048
Instance Method Summary collapse
- #add_role_to_instance_profiles(role_name, instance_profile_names) ⇒ Object
- #add_user_to_groups(user_name, group_names) ⇒ Object
- #create_access_key(user_name) ⇒ Object
- #create_group(group_name, attrs) ⇒ Object
- #create_instance_profile(instance_profile_name, attrs) ⇒ Object
- #create_login_profile(user_name, attrs) ⇒ Object
- #create_policy(type, user_or_group_name, policy_name, policy_document) ⇒ Object
- #create_role(role_name, attrs) ⇒ Object
- #create_user(user_name, attrs) ⇒ Object
- #delete_group(group_name, attrs, users_in_group) ⇒ Object
- #delete_instance_profile(instance_profile_name, attrs, roles_in_instance_profile) ⇒ Object
- #delete_login_profile(user_name) ⇒ Object
- #delete_policy(type, user_or_group_name, policy_name) ⇒ Object
- #delete_role(role_name, instance_profile_names, attrs) ⇒ Object
- #delete_user(user_name, attrs) ⇒ Object
-
#initialize(iam, options = {}) ⇒ Driver
constructor
A new instance of Driver.
- #list_access_key_ids(user_name) ⇒ Object
- #list_signing_certificate_ids(user_name) ⇒ Object
- #put_policy(type, user_or_group_name, policy_name, policy_document) ⇒ Object
- #remove_role_from_instance_profiles(role_name, instance_profile_names) ⇒ Object
- #remove_user_from_groups(user_name, group_names) ⇒ Object
- #update_assume_role_policy(role_name, policy_document) ⇒ Object
- #update_login_profile(user_name, attrs) ⇒ Object
- #update_name(type, user_or_group_name, new_name) ⇒ Object
- #update_path(type, user_or_group_name, new_path) ⇒ Object
- #update_policy(type, user_or_group_name, policy_name, policy_document) ⇒ Object
- #update_user_or_group(type, user_or_group_name, params) ⇒ Object
Methods included from Logger::Helper
Constructor Details
#initialize(iam, options = {}) ⇒ Driver
Returns a new instance of Driver.
6 7 8 9 |
# File 'lib/miam/driver.rb', line 6 def initialize(iam, = {}) @iam = iam @options = end |
Instance Method Details
#add_role_to_instance_profiles(role_name, instance_profile_names) ⇒ Object
194 195 196 197 198 199 200 201 202 203 |
# File 'lib/miam/driver.rb', line 194 def add_role_to_instance_profiles(role_name, instance_profile_names) log(:info, "Update Role `#{role_name}`", :color => :green) log(:info, " add instance_profiles=#{instance_profile_names.join(',')}", :color => :green) unless_dry_run do instance_profile_names.each do |instance_profile_name| @iam.add_role_to_instance_profile(:instance_profile_name => instance_profile_name, :role_name => role_name) end end end |
#add_user_to_groups(user_name, group_names) ⇒ Object
102 103 104 105 106 107 108 109 110 111 |
# File 'lib/miam/driver.rb', line 102 def add_user_to_groups(user_name, group_names) log(:info, "Update User `#{user_name}`", :color => :green) log(:info, " add groups=#{group_names.join(',')}", :color => :green) unless_dry_run do group_names.each do |group_name| @iam.add_user_to_group(:group_name => group_name, :user_name => user_name) end end end |
#create_access_key(user_name) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/miam/driver.rb', line 25 def create_access_key(user_name) log(:info, "Create access key for User `#{user_name}`", :color => :cyan) access_key = nil unless_dry_run do resp = @iam.create_access_key(:user_name => user_name) access_key = { :access_key_id => resp.access_key.access_key_id, :secret_access_key => resp.access_key.secret_access_key, } end access_key end |
#create_group(group_name, attrs) ⇒ Object
124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/miam/driver.rb', line 124 def create_group(group_name, attrs) log(:info, "Create Group `#{group_name}`", :color => :cyan) unless_dry_run do params = {:group_name => group_name} params[:path] = attrs[:path] if attrs[:path] @iam.create_group(params) end new_group_attrs = {:policies => {}} new_group_attrs[:path] = attrs[:path] if attrs[:path] new_group_attrs end |
#create_instance_profile(instance_profile_name, attrs) ⇒ Object
228 229 230 231 232 233 234 235 236 237 238 239 240 |
# File 'lib/miam/driver.rb', line 228 def create_instance_profile(instance_profile_name, attrs) log(:info, "Create InstanceIrofile `#{instance_profile_name}`", :color => :cyan) unless_dry_run do params = {:instance_profile_name => instance_profile_name} params[:path] = attrs[:path] if attrs[:path] @iam.create_instance_profile(params) end new_instance_profile_attrs = {} new_instance_profile_attrs[:path] = attrs[:path] if attrs[:path] new_instance_profile_attrs end |
#create_login_profile(user_name, attrs) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/miam/driver.rb', line 69 def create_login_profile(user_name, attrs) log_attrs = attrs.dup log_attrs.delete(:password) log(:info, "Update User `#{user_name}`", :color => :green) log(:info, " create login profile: #{log_attrs.inspect}", :color => :green) unless_dry_run do @iam.create_login_profile(attrs.merge(:user_name => user_name)) end end |
#create_policy(type, user_or_group_name, policy_name, policy_document) ⇒ Object
273 274 275 276 277 |
# File 'lib/miam/driver.rb', line 273 def create_policy(type, user_or_group_name, policy_name, policy_document) log(:info, "Create #{Miam::Utils.camelize(type.to_s)} `#{user_or_group_name}` > Policy `#{policy_name}`", :color => :cyan) log(:info, " #{policy_document.pretty_inspect.gsub("\n", "\n ").strip}", :color => :cyan) put_policy(type, user_or_group_name, policy_name, policy_document) end |
#create_role(role_name, attrs) ⇒ Object
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
# File 'lib/miam/driver.rb', line 154 def create_role(role_name, attrs) log(:info, "Create Role `#{role_name}`", :color => :cyan) assume_role_policy_document = attrs.fetch(:assume_role_policy_document) unless_dry_run do params = { :role_name => role_name, :assume_role_policy_document => encode_document(assume_role_policy_document), } params[:path] = attrs[:path] if attrs[:path] @iam.create_role(params) end new_role_attrs = { :instance_profiles => [], :assume_role_policy_document => assume_role_policy_document, :policies => {} } new_role_attrs[:path] = attrs[:path] if attrs[:path] new_role_attrs end |
#create_user(user_name, attrs) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/miam/driver.rb', line 11 def create_user(user_name, attrs) log(:info, "Create User `#{user_name}`", :color => :cyan) unless_dry_run do params = {:user_name => user_name} params[:path] = attrs[:path] if attrs[:path] @iam.create_user(params) end new_user_attrs = {:groups => [], :policies => {}} new_user_attrs[:path] = attrs[:path] if attrs[:path] new_user_attrs end |
#delete_group(group_name, attrs, users_in_group) ⇒ Object
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/miam/driver.rb', line 138 def delete_group(group_name, attrs, users_in_group) log(:info, "Delete Group `#{group_name}`", :color => :red) unless_dry_run do attrs[:policies].keys.each do |policy_name| @iam.delete_group_policy(:group_name => group_name, :policy_name => policy_name) end users_in_group.each do |user_name| @iam.remove_user_from_group(:group_name => group_name, :user_name => user_name) end @iam.delete_group(:group_name => group_name) end end |
#delete_instance_profile(instance_profile_name, attrs, roles_in_instance_profile) ⇒ Object
242 243 244 245 246 247 248 249 250 251 252 |
# File 'lib/miam/driver.rb', line 242 def delete_instance_profile(instance_profile_name, attrs, roles_in_instance_profile) log(:info, "Delete InstanceProfile `#{instance_profile_name}`", :color => :red) unless_dry_run do roles_in_instance_profile.each do |role_name| @iam.remove_role_from_instance_profile(:instance_profile_name => instance_profile_name, :role_name => role_name) end @iam.delete_instance_profile(:instance_profile_name => instance_profile_name) end end |
#delete_login_profile(user_name) ⇒ Object
81 82 83 84 85 86 87 88 |
# File 'lib/miam/driver.rb', line 81 def delete_login_profile(user_name) log(:info, "Update User `#{user_name}`", :color => :green) log(:info, " delete login profile", :color => :green) unless_dry_run do @iam.delete_login_profile(:user_name => user_name) end end |
#delete_policy(type, user_or_group_name, policy_name) ⇒ Object
285 286 287 288 289 290 291 292 293 294 |
# File 'lib/miam/driver.rb', line 285 def delete_policy(type, user_or_group_name, policy_name) logmsg = "Delete #{Miam::Utils.camelize(type.to_s)} `#{user_or_group_name}` > Policy `#{policy_name}`" log(:info, logmsg, :color => :red) unless_dry_run do params = {:policy_name => policy_name} params["#{type}_name".to_sym] = user_or_group_name @iam.send("delete_#{type}_policy", params) end end |
#delete_role(role_name, instance_profile_names, attrs) ⇒ Object
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 |
# File 'lib/miam/driver.rb', line 178 def delete_role(role_name, instance_profile_names, attrs) log(:info, "Delete Role `#{role_name}`", :color => :red) unless_dry_run do attrs[:policies].keys.each do |policy_name| @iam.delete_role_policy(:role_name => role_name, :policy_name => policy_name) end instance_profile_names.each do |instance_profile_name| @iam.remove_role_from_instance_profile(:instance_profile_name => instance_profile_name, :role_name => role_name) end @iam.delete_role(:role_name => role_name) end end |
#delete_user(user_name, attrs) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/miam/driver.rb', line 41 def delete_user(user_name, attrs) log(:info, "Delete User `#{user_name}`", :color => :red) unless_dry_run do if attrs[:login_profile] @iam.delete_login_profile(:user_name => user_name) end attrs[:policies].keys.each do |policy_name| @iam.delete_user_policy(:user_name => user_name, :policy_name => policy_name) end attrs[:groups].each do |group_name| @iam.remove_user_from_group(:group_name => group_name, :user_name => user_name) end list_access_key_ids(user_name).each do |access_key_id| @iam.delete_access_key(:user_name => user_name, :access_key_id => access_key_id) end list_signing_certificate_ids(user_name).each do |certificate_id| @iam.delete_signing_certificate(:user_name => user_name, :certificate_id => certificate_id) end @iam.delete_user(:user_name => user_name) end end |
#list_access_key_ids(user_name) ⇒ Object
308 309 310 311 312 313 314 |
# File 'lib/miam/driver.rb', line 308 def list_access_key_ids(user_name) @iam.list_access_keys(:user_name => user_name).map {|resp| resp..map do || .access_key_id end }.flatten end |
#list_signing_certificate_ids(user_name) ⇒ Object
316 317 318 319 320 321 322 |
# File 'lib/miam/driver.rb', line 316 def list_signing_certificate_ids(user_name) @iam.list_signing_certificates(:user_name => user_name).map {|resp| resp.certificates.map do |cert| cert.certificate_id end }.flatten end |
#put_policy(type, user_or_group_name, policy_name, policy_document) ⇒ Object
296 297 298 299 300 301 302 303 304 305 306 |
# File 'lib/miam/driver.rb', line 296 def put_policy(type, user_or_group_name, policy_name, policy_document) unless_dry_run do params = { :policy_name => policy_name, :policy_document => encode_document(policy_document), } params["#{type}_name".to_sym] = user_or_group_name @iam.send("put_#{type}_policy", params) end end |
#remove_role_from_instance_profiles(role_name, instance_profile_names) ⇒ Object
205 206 207 208 209 210 211 212 213 214 |
# File 'lib/miam/driver.rb', line 205 def remove_role_from_instance_profiles(role_name, instance_profile_names) log(:info, "Update Role `#{role_name}`", :color => :green) log(:info, " remove instance_profiles=#{instance_profile_names.join(',')}", :color => :green) unless_dry_run do instance_profile_names.each do |instance_profile_name| @iam.remove_role_from_instance_profile(:instance_profile_name => instance_profile_name, :role_name => role_name) end end end |
#remove_user_from_groups(user_name, group_names) ⇒ Object
113 114 115 116 117 118 119 120 121 122 |
# File 'lib/miam/driver.rb', line 113 def remove_user_from_groups(user_name, group_names) log(:info, "Update User `#{user_name}`", :color => :green) log(:info, " remove groups=#{group_names.join(',')}", :color => :green) unless_dry_run do group_names.each do |group_name| @iam.remove_user_from_group(:group_name => group_name, :user_name => user_name) end end end |
#update_assume_role_policy(role_name, policy_document) ⇒ Object
216 217 218 219 220 221 222 223 224 225 226 |
# File 'lib/miam/driver.rb', line 216 def update_assume_role_policy(role_name, policy_document) log(:info, "Update Role `#{role_name}` > AssumeRolePolicy", :color => :green) log(:info, " #{policy_document.pretty_inspect.gsub("\n", "\n ").strip}", :color => :green) unless_dry_run do @iam.update_assume_role_policy( :role_name => role_name, :policy_document => encode_document(policy_document), ) end end |
#update_login_profile(user_name, attrs) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/miam/driver.rb', line 90 def update_login_profile(user_name, attrs) log_attrs = attrs.dup log_attrs.delete(:password) log(:info, "Update User `#{user_name}`", :color => :green) log(:info, " update login profile: #{log_attrs.inspect}", :color => :green) unless_dry_run do @iam.update_login_profile(attrs.merge(:user_name => user_name)) end end |
#update_name(type, user_or_group_name, new_name) ⇒ Object
254 255 256 257 258 |
# File 'lib/miam/driver.rb', line 254 def update_name(type, user_or_group_name, new_name) log(:info, "Update #{Miam::Utils.camelize(type.to_s)} `#{user_or_group_name}`", :color => :green) log(:info, " set name=#{new_name}", :color => :green) update_user_or_group(type, user_or_group_name, "new_#{type}_name".to_sym => new_name) end |
#update_path(type, user_or_group_name, new_path) ⇒ Object
260 261 262 263 264 |
# File 'lib/miam/driver.rb', line 260 def update_path(type, user_or_group_name, new_path) log(:info, "Update #{Miam::Utils.camelize(type.to_s)} `#{user_or_group_name}`", :color => :green) log(:info, " set path=#{new_path}", :color => :green) update_user_or_group(type, user_or_group_name, :new_path => new_path) end |
#update_policy(type, user_or_group_name, policy_name, policy_document) ⇒ Object
279 280 281 282 283 |
# File 'lib/miam/driver.rb', line 279 def update_policy(type, user_or_group_name, policy_name, policy_document) log(:info, "Update #{Miam::Utils.camelize(type.to_s)} `#{user_or_group_name}` > Policy `#{policy_name}`", :color => :green) log(:info, " #{policy_document.pretty_inspect.gsub("\n", "\n ").strip}", :color => :green) put_policy(type, user_or_group_name, policy_name, policy_document) end |
#update_user_or_group(type, user_or_group_name, params) ⇒ Object
266 267 268 269 270 271 |
# File 'lib/miam/driver.rb', line 266 def update_user_or_group(type, user_or_group_name, params) unless_dry_run do params["#{type}_name".to_sym] = user_or_group_name @iam.send("update_#{type}", params) end end |