File: groups.rb

package info (click to toggle)
ruby-fog-aws 3.18.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 8,140 kB
  • sloc: ruby: 73,328; javascript: 14; makefile: 9; sh: 4
file content (39 lines) | stat: -rw-r--r-- 1,058 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
require 'fog/aws/models/iam/group'
require 'fog/aws/iam/paged_collection'

module Fog
  module AWS
    class IAM
      class Groups < Fog::AWS::IAM::PagedCollection

        attribute :username

        model Fog::AWS::IAM::Group

        def all(options = {})
          data, records = if self.username
                            response = service.list_groups_for_user(self.username, options)
                            [response.body, response.body['GroupsForUser']]
                          else
                            response = service.list_groups(options)
                            [response.body, response.body['Groups']]
                          end

          merge_attributes(data)
          load(records)
        end

        def get(identity)
          data = service.get_group(identity)

          group = data.body['Group']
          users = data.body['Users'].map { |u| service.users.new(u) }

          new(group.merge(:users => users))
        rescue Fog::AWS::IAM::NotFound
          nil
        end
      end
    end
  end
end