grafana 0.8.2 → 0.8.5

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.
@@ -27,19 +27,18 @@ module Grafana
27
27
  def regenerate_template_ids( params )
28
28
 
29
29
  raise ArgumentError.new(format('wrong type. \'params\' must be an Hash, given \'%s\'', params.class.to_s)) unless( params.is_a?(Hash) )
30
+ raise ArgumentError.new('missing \'params\'') if( params.size.zero? )
30
31
 
31
32
  rows = params.dig('dashboard','rows')
33
+ # name = validate( params, required: true, var: 'name', type: String )
32
34
 
33
35
  unless( rows.nil? )
34
36
 
35
37
  # counter = 1
36
38
  id_counter = 10
37
39
  rows.each_with_index do |r, _counter|
38
-
39
40
  panel = r.dig('panels')
40
-
41
41
  next if( panel.nil? )
42
-
43
42
  panel.each do |p|
44
43
  p['id'] = id_counter
45
44
  id_counter = id_counter +=1 # id_counter+1 # id_counter +=1 ??
@@ -6,7 +6,12 @@ module Grafana
6
6
  module User
7
7
 
8
8
  # Actual User
9
- # GET /api/user
9
+ #
10
+ # @example
11
+ # current_user
12
+ #
13
+ # @return [Hash]
14
+ #
10
15
  def current_user
11
16
  endpoint = '/api/user'
12
17
  @logger.debug("Getting user current user (GET #{endpoint})") if @debug
@@ -14,36 +19,51 @@ module Grafana
14
19
  end
15
20
 
16
21
  # Change Password
17
- # PUT /api/user/password
22
+ #
23
+ # @param [Hash] params
24
+ # @option params [String] old_password the old password
25
+ # @option params [String] new_password the new password
26
+ #
27
+ # @example
28
+ # update_current_user_password( old_password: 'foo', new_password: 'FooBar' )
29
+ #
30
+ # @return [Hash]
31
+ #
18
32
  def update_current_user_password( params )
19
33
 
20
34
  raise ArgumentError.new(format('wrong type. \'params\' must be an Hash, given \'%s\'', params.class.to_s)) unless( params.is_a?(Hash) )
35
+ raise ArgumentError.new('missing \'params\'') if( params.size.zero? )
21
36
 
22
- old_password = params.dig(:old_password)
23
- new_password = params.dig(:new_password)
24
-
25
- raise ArgumentError.new('missing old_password for update') if( old_password.nil? )
26
- raise ArgumentError.new('missing new_password for update') if( new_password.nil? )
37
+ old_password = validate( params, required: true, var: 'old_password', type: String )
38
+ new_password = validate( params, required: true, var: 'new_password', type: String )
27
39
 
28
40
  endpoint = '/api/user/password'
41
+ payload = {
42
+ oldPassword: old_password,
43
+ newPassword: new_password,
44
+ confirmNew: new_password
45
+ }
29
46
  @logger.debug("Updating current user password (PUT #{endpoint})") if @debug
30
- put( endpoint, { oldPassword: old_password, newPassword: new_password, confirmNew: new_password }.to_json )
47
+ put( endpoint, payload.to_json )
31
48
  end
32
49
 
33
50
  # Switch user context for signed in user
34
- # POST /api/user/using/:organizationId
51
+ #
52
+ # @param organization [String ] organization
53
+ #
54
+ # @example
55
+ # switch_current_user_organization( 'Main. Org' )
56
+ #
57
+ # @return [Hash]
58
+ #
35
59
  def switch_current_user_organization( organization )
36
60
 
37
- raise ArgumentError.new('organization must be an String') unless( params.is_a?(String) )
61
+ raise ArgumentError.new(format('wrong type. \'organization\' must be an String, given \'%s\'', organization.class.to_s)) unless( organization.is_a?(String) )
62
+ raise ArgumentError.new('missing \'organization\'') if( organization.size.zero? )
38
63
 
39
64
  org = organization_by_name( organization )
40
65
 
41
- if org.nil? || org.dig('status').to_i != 200
42
- return {
43
- 'status' => 404,
44
- 'message' => format('Organization \'%s\' not found', organization)
45
- }
46
- end
66
+ return { 'status' => 404, 'message' => format('Organization \'%s\' not found', organization) } if( org.nil? || org.dig('status').to_i != 200 )
47
67
 
48
68
  org_id = org.dig('id')
49
69
 
@@ -54,52 +74,67 @@ module Grafana
54
74
  end
55
75
 
56
76
  # Organisations of the actual User
57
- # GET /api/user/orgs
77
+ #
78
+ # @example
79
+ # current_user_oganizations
80
+ #
81
+ # @return [Hash]
82
+ #
58
83
  def current_user_oganizations
59
-
60
84
  endpoint = '/api/user/orgs'
61
85
  @logger.debug("Getting current user organizations (GET #{endpoint})") if @debug
62
86
  get(endpoint)
63
87
  end
64
88
 
65
89
  # Star a dashboard
66
- # POST /api/user/stars/dashboard/:dashboardId
67
- def add_dashboard_star( dashboard )
68
-
69
- if( !dashboard.is_a?(String) && !dashboard.is_a?(Integer) )
70
- raise ArgumentError.new('dashboard must be an String (for an Dashboard name) or an Integer (for an Dashboard ID)')
71
- end
72
-
73
- dashboard_id = dashboard if(dashboard.is_a?(Integer))
74
-
75
- if(dashboard.is_a?(String))
76
- search = { query: dashboard }
77
- r = search_dashboards( search )
90
+ #
91
+ # @param [Mixed] dashboard_id Dashboard Name (String) or Dashboard Id (Integer) for add a star
92
+ #
93
+ # @example
94
+ # add_dashboard_star( 1 )
95
+ # add_dashboard_star( 'QA Graphite Carbon Metrics' )
96
+ #
97
+ # @return [Hash]
98
+ #
99
+ def add_dashboard_star( dashboard_id )
100
+
101
+ raise ArgumentError.new(format('wrong type. user \'dashboard_id\' must be an String (for an Dashboard name) or an Integer (for an Dashboard Id), given \'%s\'', dashboard_id.class.to_s)) if( dashboard_id.is_a?(String) && dashboard_id.is_a?(Integer) )
102
+ raise ArgumentError.new('missing \'dashboard_id\'') if( dashboard_id.size.zero? )
103
+
104
+ dashboard_id = dashboard if(dashboard_id.is_a?(Integer))
105
+
106
+ if(dashboard_id.is_a?(String))
107
+ r = search_dashboards( query: dashboard_id )
78
108
  message = r.dig('message')
79
109
  dashboard_id = message.first.dig('id')
80
110
  end
81
111
 
82
- raise format('Dashboard id can not be 0') if dashboard_id.zero?
112
+ raise format('Dashboard Id can not be 0') if( dashboard_id.zero? )
83
113
 
84
114
  endpoint = format( '/api/user/stars/dashboard/%d', dashboard_id )
85
115
  @logger.debug("Adding star to dashboard id #{dashboard_id} (GET #{endpoint})") if @debug
86
- post(endpoint, {}.to_json)
116
+ post( endpoint, {}.to_json )
87
117
  end
88
118
 
89
119
  # Unstar a dashboard
90
- # DELETE /api/user/stars/dashboard/:dashboardId
91
- def remove_dashboard_star( dashboard )
92
-
93
- if( !dashboard.is_a?(String) && !dashboard.is_a?(Integer) )
94
- raise ArgumentError.new('dashboard must be an String (for an Dashboard name) or an Integer (for an Dashboard ID)')
95
- end
96
-
97
- dashboard_id = dashboard if(dashboard.is_a?(Integer))
98
-
99
- if(dashboard.is_a?(String))
100
-
101
- search = { query: dashboard }
102
- r = search_dashboards( search )
120
+ #
121
+ # @param [Mixed] dashboard_id Dashboard Name (String) or Dashboard Id (Integer) for delete a star
122
+ #
123
+ # @example
124
+ # remove_dashboard_star( 1 )
125
+ # remove_dashboard_star( 'QA Graphite Carbon Metrics' )
126
+ #
127
+ # @return [Hash]
128
+ #
129
+ def remove_dashboard_star( dashboard_id )
130
+
131
+ raise ArgumentError.new(format('wrong type. user \'dashboard_id\' must be an String (for an Dashboard name) or an Integer (for an Dashboard Id), given \'%s\'', dashboard_id.class.to_s)) if( dashboard_id.is_a?(String) && dashboard_id.is_a?(Integer) )
132
+ raise ArgumentError.new('missing \'dashboard_id\'') if( dashboard_id.size.zero? )
133
+
134
+ dashboard_id = dashboard( dashboard_id ) if(dashboard_id.is_a?(Integer))
135
+
136
+ if(dashboard_id.is_a?(String))
137
+ r = search_dashboards( query: dashboard_id )
103
138
  message = r.dig('message')
104
139
  dashboard_id = message.first.dig('id')
105
140
  end
@@ -5,113 +5,156 @@ module Grafana
5
5
  #
6
6
  module Users
7
7
 
8
- # Search Users
9
- # GET /api/users
10
- def all_users
8
+ # All Users
9
+ #
10
+ # @example
11
+ # all_users
12
+ #
13
+ # @return [Hash]
14
+ #
15
+ def users
11
16
  endpoint = '/api/users'
12
17
  @logger.debug("Getting all users (GET #{endpoint})") if @debug
13
18
  get(endpoint)
14
19
  end
15
20
 
16
- # Get single user by Id
17
- # GET /api/users/:id
18
- def user_by_id(id)
21
+ # Get a single user by Id or Name
22
+ #
23
+ # @param [Mixed] user_id Username (String) or Userid (Integer)
24
+ #
25
+ # @example
26
+ # user( 1 )
27
+ # user( 'foo' )
28
+ #
29
+ # @return [Hash]
30
+ #
31
+ def user( user_id )
32
+
33
+ raise ArgumentError.new(format('wrong type. user \'user_id\' must be an String (for an Datasource name) or an Integer (for an Datasource Id), given \'%s\'', user_id.class.to_s)) if( user_id.is_a?(String) && user_id.is_a?(Integer) )
34
+ raise ArgumentError.new('missing \'user_id\'') if( user_id.size.zero? )
19
35
 
20
- raise ArgumentError.new('id must be an Integer') unless( id.is_a?(Integer) )
36
+ if(user_id.is_a?(String))
37
+ user_map = {}
38
+ users.dig('message').each do |d|
39
+ usr_id = d.dig('id').to_i
40
+ user_map[usr_id] = d
41
+ end
21
42
 
22
- endpoint = format( '/api/users/%d', id )
23
- @logger.debug("Getting user by Id #{id} (GET #{endpoint})") if @debug
24
- get(endpoint)
25
- end
43
+ user_id = user_map.select { |_k,v| v['login'] == user_id || v['email'] == user_id || v['name'] == user_id }.keys.first
44
+ end
26
45
 
27
- # Get single user by Username(login) or Email
28
- # GET /api/users/lookup?loginOrEmail=user@mygraf.com
29
- def user_by_name( name )
46
+ return { 'status' => 404, 'message' => format( 'No User \'%s\' found', user_id) } if( user_id.nil? )
30
47
 
31
- endpoint = format( '/api/users/lookup?loginOrEmail=%s', URI.escape( name ) )
32
- @logger.debug("Get User by Name (GET #{endpoint})") if @debug
33
- get( endpoint )
48
+ endpoint = format( '/api/users/%s', user_id )
49
+
50
+ @logger.debug("Getting user by Id #{user_id} (GET #{endpoint})") if @debug
51
+ data = get(endpoint)
52
+ data['id'] = user_id
53
+ data
34
54
  end
35
55
 
56
+ # search users with parameters
57
+ #
58
+ # @example
59
+ # search_for_users_by( isAdmin: true )
60
+ # search_for_users_by( login: 'foo' )
36
61
  #
62
+ # @return [Array of Hashes] or false
37
63
  #
38
64
  def search_for_users_by( params )
39
65
 
40
66
  raise ArgumentError.new(format('wrong type. \'params\' must be an Hash, given \'%s\'', params.class.to_s)) unless( params.is_a?(Hash) )
67
+ raise ArgumentError.new('missing \'params\'') if( params.size.zero? )
41
68
 
42
- all_users = self.all_users()
69
+ all_users = users
43
70
  key, value = params.first
44
71
 
45
72
  logger.debug("Searching for users matching '#{key}' = '#{value}'") if @debug
46
73
  users = []
47
-
48
74
  all_users.dig('message').each do |u|
49
75
  users.push(u) if u.select { |_k,v| v == value }.count >= 1
50
76
  end
51
77
 
52
- (users.length >= 1 ? users : false)
78
+ (users.length >= 1 ? users : nil)
53
79
  end
54
80
 
55
81
  # User Update
82
+ #
83
+ # @param [Hash] params
84
+ # @option params [String] email
85
+ # @option params [String] user_name
86
+ # @option params [String] login_name
87
+ # @option params [String] theme
88
+ #
89
+ # @example
90
+ # params = {
91
+ # email:'user@mygraf.com',
92
+ # user_name:'User2',
93
+ # login_name:'user',
94
+ # theme: 'light'
95
+ # }
96
+ # update_user( params )
97
+ #
98
+ # @return [Hash]
99
+ #
56
100
  # PUT /api/users/:id
57
- def update_user( params = {} )
101
+ def update_user( params )
58
102
 
59
103
  raise ArgumentError.new(format('wrong type. \'params\' must be an Hash, given \'%s\'', params.class.to_s)) unless( params.is_a?(Hash) )
60
104
 
61
- user_name = params.dig(:user_name)
62
-
63
- raise ArgumentError.new('missing \'user_name\'') if( user_name.nil? )
64
-
65
- if( !user_name.is_a?(String) && !user_name.is_a?(Integer) )
66
- raise ArgumentError.new('user_name must be an String (for an Username) or an Integer (for an User Id)')
67
- end
105
+ user_name = validate( params, required: true, var: 'user_name', type: String )
106
+ email = validate( params, required: true, var: 'email', type: String )
107
+ login_name = validate( params, required: false, var: 'login_name', type: String ) || user_name
108
+ theme = validate( params, required: false, var: 'theme', type: String )
68
109
 
69
- usr = user_by_id(user_name) if(user_name.is_a?(Integer))
70
- usr = user_by_name(user_name) if(user_name.is_a?(String))
110
+ usr = user(user_name)
71
111
 
72
- if usr.nil? || usr.dig('status').to_i != 200
73
- return {
74
- 'status' => 404,
75
- 'message' => format('User \'%s\' not found', user_name)
76
- }
77
- end
112
+ return { 'status' => 404, 'message' => format('User \'%s\' not found', user_name) } if( usr.nil? || usr.dig('status').to_i != 200 )
78
113
 
79
114
  user_id = usr.dig('id')
80
115
 
81
116
  endpoint = format( '/api/users/%d', user_id )
117
+ payload = {
118
+ email: email,
119
+ name: user_name,
120
+ login: login_name,
121
+ theme: theme
122
+ }
123
+ payload.reject!{ |_k, v| v.nil? }
82
124
 
83
125
  @logger.debug("Updating user with Id #{user_id}") if @debug
84
126
 
85
- usr = usr.deep_string_keys
86
- params = params.deep_string_keys
127
+ usr = usr.deep_string_keys
128
+ payload = payload.deep_string_keys
87
129
 
88
- params = usr.merge(params)
130
+ payload = usr.merge(payload)
89
131
 
90
- put( endpoint, params.to_json )
132
+ put( endpoint, payload.to_json )
91
133
  end
92
134
 
93
135
  # Get Organisations for user
94
- # GET /api/users/:id/orgs
95
- def user_organizations(user)
136
+ #
137
+ # @param [Mixed] user_id Username (String) or Userid (Integer)
138
+ #
139
+ # @example
140
+ # user_organizations( 1 )
141
+ # user_organizations( 'foo' )
142
+ #
143
+ # @return [Hash]
144
+ #
145
+ def user_organizations( user_id )
96
146
 
97
- if( !user.is_a?(String) && !user.is_a?(Integer) )
98
- raise ArgumentError.new('user must be an String (for an Dashboard name) or an Integer (for an Dashboard ID)')
99
- end
147
+ raise ArgumentError.new(format('wrong type. user \'user_id\' must be an String (for an Username) or an Integer (for an Userid), given \'%s\'', user_id.class.to_s)) if( user_id.is_a?(String) && user_id.is_a?(Integer) )
148
+ raise ArgumentError.new('missing \'user_id\'') if( user_id.size.zero? )
100
149
 
101
- usr = user_by_id(user) if(user.is_a?(Integer))
102
- usr = user_by_name(user) if(user.is_a?(String))
150
+ usr = user(user_id)
103
151
 
104
- if usr.nil? || usr.dig('status').to_i != 200
105
- return {
106
- 'status' => 404,
107
- 'message' => format('User \'%s\' not found', user)
108
- }
109
- end
152
+ return { 'status' => 404, 'message' => format('User \'%s\' not found', user_id) } if( usr.nil? || usr.dig('status').to_i != 200 )
110
153
 
111
154
  user_id = usr.dig('id')
112
155
 
113
156
  endpoint = format('/api/users/%d/orgs', user_id )
114
- @logger.debug("Getting organizations for User #{user} (GET #{endpoint})") if @debug
157
+ @logger.debug("Getting organizations for User #{user_id} (GET #{endpoint})") if @debug
115
158
  get(endpoint)
116
159
  end
117
160
 
@@ -8,7 +8,7 @@ module Grafana
8
8
  # minor part of version
9
9
  MINOR = 8
10
10
  # tiny part of version
11
- TINY = 2
11
+ TINY = 5
12
12
  end
13
13
 
14
14
  # Current version of gem.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grafana
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bodo Schulz