Module: Grafana::Admin

Included in:
Client
Defined in:
lib/grafana/admin.rb

Instance Method Summary collapse

Instance Method Details

#create_user(properties = {}) ⇒ Object



54
55
56
57
58
59
# File 'lib/grafana/admin.rb', line 54

def create_user(properties={})
  endpoint = "/api/admin/users"
  @logger.info("Creating user: #{properties['name']}") if @debug
  @logger.info("Data: #{properties.to_s}") if @debug
  return post_request(endpoint, properties.to_json)
end

#delete_user(user_id) ⇒ Object



44
45
46
47
48
49
50
51
52
# File 'lib/grafana/admin.rb', line 44

def delete_user(user_id)
  if user_id == 1
    @logger.warn("Can't delete user ID #{user_id} (admin user)") if @debug
    return false
  end
  endpoint = "/api/admin/users/#{user_id}"
  @logger.info("Deleting user ID #{user_id} (DELETE #{endpoint})") if @debug
  return delete_request(endpoint)
end

#get_admin_settingsObject



6
7
8
9
10
# File 'lib/grafana/admin.rb', line 6

def get_admin_settings()
  endpoint = "/api/admin/settings"
  @logger.info("Getting admin settings (GET #{endpoint})") if @debug
  return get_request(endpoint)
end

#update_user_pass(user_id, password) ⇒ Object



61
62
63
64
65
# File 'lib/grafana/admin.rb', line 61

def update_user_pass(user_id,password)
  endpoint = " /api/admin/users/#{user_id}/#{password}"
  @logger.info("Updating password for user ID #{user_id} (PUT #{endpoint})") if @debug
  return put_request(endpoint,properties)
end

#update_user_permissions(id, perm) ⇒ Object



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
40
41
42
# File 'lib/grafana/admin.rb', line 12

def update_user_permissions(id, perm)

  valid_perms = ['Viewer','Editor','Read Only Editor','Admin']

  if perm.class.to_s == "String" && !valid_perms.include?(perm)
    @logger.warn("Basic user permissions include: #{valid_perms.join(',')}") if @debug
    return false
  elsif perm.class.to_s == "Hash" &&
    ( !perm.has_key?('isGrafanaAdmin') || ![true,false].include?(perm['isGrafanaAdmin']) )
    @logger.warn("Grafana admin permission must be either true or false") if @debug
    return false
  end

  @logger.info("Updating user ID #{id} permissions") if @debug

  if perm.class.to_s == 'Hash'
    endpoint = "/api/admin/users/#{id}/permissions"
    @logger.info("Updating user ID #{id} permissions (PUT #{endpoint})") if @debug
    return put_request(endpoint, {"isGrafanaAdmin" => perm['isGrafanaAdmin']}.to_json)
  else
    org = self.get_current_org()
    endpoint = "/api/orgs/#{org['id']}/users/#{id}"
    @logger.info("Updating user ID #{id} permissions (PUT #{endpoint})") if @debug
    user = { 
      'name' => org['name'], 
      'orgId' => org['id'], 
      'role' => perm.downcase.capitalize
    }
    return patch_request(endpoint, user.to_json)
  end
end