Class: Matterhorn::Endpoint::Group

Inherits:
Matterhorn::Endpoint show all
Defined in:
lib/matterhorn/endpoint/group.rb

Overview

Matterhorn::Endpoint::Group ===

Instance Attribute Summary

Attributes inherited from Matterhorn::Endpoint

#response_body, #response_code

Instance Method Summary collapse

Methods inherited from Matterhorn::Endpoint

#close, create, #error_code, #error_msg, #error_occurred?, #initialize, open

Constructor Details

This class inherits a constructor from Matterhorn::Endpoint

Instance Method Details

#create(name, description = nil, roles = nil, users = nil) ⇒ Object

Create a new group with name and descritption. The group_id will be created from the name -> downcase and underscore. If a role is unknown to the system, it will be created. If a user is unknown only the relation ship beteen the group and the member will be stored. The user will not be created!



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/matterhorn/endpoint/group.rb', line 18

def create(name, description = nil, roles = nil, users = nil)
  done = false
  begin
    split_response http_endpoint_client.post(
      "groups",
      convert_to_form_param(name, description, roles, users)
    )
    done = true
  rescue => ex
    exception_handler('create', ex, {
        400 => "Group name: #{name} too long!"
      }
    )
  end
  done
end

#delete(group_id) ⇒ Object

————————————————————————————- delete —



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/matterhorn/endpoint/group.rb', line 93

def delete(group_id)
  done = false
  begin
    split_response http_endpoint_client.delete(
      "groups/#{group_id}"
    )
    done = true
  rescue => ex
    exception_handler('create', ex, {
        404 => "Group[#{group_id}] not found!"
      }
    )
  end
  done
end

#index(offset = 0, limit = 100) ⇒ Object

Return a list of groups as a hash {

'groups' => {
  'group' => [
    {
      'id' => <group_id>,
      'name' => <name>,
      'description' => <description>,
      'role' => <role>,
      'memebers' => [ <username>, ... ],
      'roles' => [ <role>, ...],
    },
    ...
  ]
}

}



55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/matterhorn/endpoint/group.rb', line 55

def index(offset = 0, limit = 100)
  groups = {}
  begin
    split_response http_endpoint_client.get(
      "groups/groups.json?limit=#{limit}&offset=#{offset}"
    )
    groups = filter_groups(JSON.parse(response_body))
  rescue => ex
    exception_handler('index', ex, {})
  end
  groups
end

#update(group_id, name, description = nil, roles = nil, users = nil) ⇒ Object

————————————————————————————- update —



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/matterhorn/endpoint/group.rb', line 72

def update(group_id, name, description = nil, roles = nil, users = nil)
  done = false
  begin
    split_response http_endpoint_client.put(
      "groups/#{group_id}",
      convert_to_form_param(name, description, roles, users)
    )
    done = true
  rescue => ex
    exception_handler('create', ex, {
        400 => "Group name: #{name} too long!",
        404 => "Group[#{group_id}] not found!"
      }
    )
  end
  done
end