Class: Wavefront::User

Inherits:
CoreApi show all
Includes:
Mixin::User
Defined in:
lib/wavefront-sdk/user.rb

Overview

In line with the API changes in the 2020-06 release of Wavefront, this class has been deprecated.

Please use Wavefront::Account to manage users.

docs.wavefront.com/2020.06.x_release_notes.html

Manage and query Wavefront users

Instance Attribute Summary

Attributes inherited from CoreApi

#api, #creds, #logger, #opts

Instance Method Summary collapse

Methods included from Mixin::User

#validate_account_list, #validate_role_list, #validate_user_list, #validate_usergroup_list

Methods inherited from CoreApi

#api_base, #api_path, #hash_for_update, #initialize, #setup_api, #time_to_ms

Methods included from Mixins

#log, #parse_relative_time, #parse_time, #relative_time, #time_multiplier, #valid_relative_time?

Methods included from Validators

#uuid?, #wf_account_id?, #wf_alert_id?, #wf_alert_severity?, #wf_apitoken_id?, #wf_aws_external_id?, #wf_cloudintegration_id?, #wf_dashboard_id?, #wf_derivedmetric_id?, #wf_distribution?, #wf_distribution_count?, #wf_distribution_interval?, #wf_distribution_values?, #wf_epoch?, #wf_event_id?, #wf_granularity?, #wf_ingestionpolicy_id?, #wf_integration_id?, #wf_link_id?, #wf_link_template?, #wf_maintenance_window_id?, #wf_message_id?, #wf_metric_name?, #wf_metricspolicy_id?, #wf_monitoredcluster_id?, #wf_ms_ts?, #wf_name?, #wf_notificant_id?, #wf_permission?, #wf_point?, #wf_point_tag?, #wf_point_tags?, #wf_proxy_id?, #wf_role_id?, #wf_sampling_value?, #wf_savedsearch_entity?, #wf_savedsearch_id?, #wf_serviceaccount_id?, #wf_source_id?, #wf_string?, #wf_tag?, #wf_trace?, #wf_ts?, #wf_user_id?, #wf_usergroup_id?, #wf_value?, #wf_version?, #wf_webhook_id?

Constructor Details

This class inherits a constructor from Wavefront::CoreApi

Instance Method Details

#add_groups_to_user(id, group_list = []) ⇒ Wavefront::Response

POST /api/v2/user/id/addUserGroups Adds specific user groups to the user

Parameters:

  • id (String)

    ID of the user

  • group_list (Array[String]) (defaults to: [])

    list of groups to add

Returns:



105
106
107
108
109
110
111
# File 'lib/wavefront-sdk/user.rb', line 105

def add_groups_to_user(id, group_list = [])
  deprecation_warning
  wf_user_id?(id)
  validate_usergroup_list(group_list)
  api.post([id, 'addUserGroups'].uri_concat, group_list,
           'application/json')
end

#business_functions(id) ⇒ Wavefront::Response

GET /api/v2/user/id/businessFunctions Returns business functions of a specific user.

Parameters:

Returns:



239
240
241
242
243
# File 'lib/wavefront-sdk/user.rb', line 239

def business_functions(id)
  deprecation_warning
  wf_user_id?(id)
  api.get([id, 'businessFunctions'].uri_concat)
end

#construct_response(body_obj, status) ⇒ Object

Construct a response almost from scratch. Used for ‘list’, among others.



282
283
284
285
286
287
288
289
290
291
# File 'lib/wavefront-sdk/user.rb', line 282

def construct_response(body_obj, status)
  { status: { result: status.to_s.start_with?('2') ? 'OK' : 'ERROR',
              message: extract_api_message(status, body_obj),
              code: status },
    response: { items: [body_obj].flatten,
                offset: 0,
                limit: body_obj.size,
                totalItems: body_obj.size,
                moreItems: false } }.to_json
end

#create(body, send_email = false) ⇒ Wavefront::Response

POST /api/v2/user Creates or updates a user

Parameters:

  • body (Hash)

    a hash of parameters describing the user. Please refer to the Wavefront Swagger docs for key:value information

Returns:

Raises:

  • (ArgumentError)


45
46
47
48
49
50
# File 'lib/wavefront-sdk/user.rb', line 45

def create(body, send_email = false)
  deprecation_warning
  raise ArgumentError unless body.is_a?(Hash)

  api.post("?sendEmail=#{send_email}", body, 'application/json')
end

#delete(id) ⇒ Wavefront::Response

DELETE /api/v2/user/id Delete a specific user. See also #delete_users.

Parameters:

  • id (String)

    ID of the user

Returns:



58
59
60
61
62
# File 'lib/wavefront-sdk/user.rb', line 58

def delete(id)
  deprecation_warning
  wf_user_id?(id)
  api.delete(id)
end

#delete_users(user_list) ⇒ Wavefront::Response

POST /api/v2/user/deleteUsers Deletes multiple users

Yep, a POST that DELETEs. Not to be confused with DELETE. I don’t make the API, I just cover it.

Parameters:

Returns:

Raises:

  • (ArgumentError)


176
177
178
179
180
181
182
# File 'lib/wavefront-sdk/user.rb', line 176

def delete_users(user_list)
  deprecation_warning
  raise ArgumentError unless user_list.is_a?(Array)

  validate_user_list(user_list)
  api.post('deleteUsers', user_list, 'application/json')
end

#deprecation_warningObject



20
21
22
23
# File 'lib/wavefront-sdk/user.rb', line 20

def deprecation_warning
  logger.log('Wavefront::User is deprecated and will be removed from the ' \
             'next major release. Please use Wavefront::Account.', :warn)
end

#describe(id) ⇒ Wavefront::Response

GET /api/v2/user/id Retrieves a user by identifier (email addr).

Parameters:

  • id (String)

    ID of the user

Returns:



70
71
72
73
74
# File 'lib/wavefront-sdk/user.rb', line 70

def describe(id)
  deprecation_warning
  wf_user_id?(id)
  api.get(id)
end

#everythingObject

the user API class does not support pagination. Be up-front about that.

Raises:

  • (NoMethodError)


296
297
298
# File 'lib/wavefront-sdk/user.rb', line 296

def everything
  raise NoMethodError
end

#grant(id, pgroup) ⇒ Wavefront::Response

PUT /api/v2/user/id/grant Grants a specific user permission.

Parameters:

  • id (String)

    ID of the user

  • pgroup (String)

    permission group to grant to user. We do not validate this so that changes to the API do not mandate changes to the SDK. At the time of writing, valid values are browse, agent_management, alerts_management, dashboard_management, embedded_charts, events_management, external_links_management, host_tag_management, metrics_management, user_management,

Returns:

Raises:

  • (ArgumentError)


141
142
143
144
145
146
147
148
# File 'lib/wavefront-sdk/user.rb', line 141

def grant(id, pgroup)
  deprecation_warning
  wf_user_id?(id)
  raise ArgumentError unless pgroup.is_a?(String)

  api.post([id, 'grant'].uri_concat, "group=#{pgroup}",
           'application/x-www-form-urlencoded')
end

#grant_permission(permission, user_list) ⇒ Wavefront::Response

POST /api/v2/user/grant/permission Grants a specific user permission to multiple users See #grant for possible permissions. This method operates on multiple users.

Parameters:

  • permission (String)

    permission to grant

  • user_list (Array[String])

    users who should receive the permission

Returns:

Raises:

  • (ArgumentError)


193
194
195
196
197
198
199
200
# File 'lib/wavefront-sdk/user.rb', line 193

def grant_permission(permission, user_list)
  deprecation_warning
  raise ArgumentError unless user_list.is_a?(Array)

  validate_user_list(user_list)
  api.post(['grant', permission].uri_concat, user_list,
           'application/json')
end

#invite(body) ⇒ Wavefront::Response

POST /api/v2/user/invite Invite users with given user groups and permissions.

Parameters:

  • body (Array[Hash])

    array of hashes describing a user. See API docs for more details.

Returns:

Raises:

  • (ArgumentError)


226
227
228
229
230
231
232
# File 'lib/wavefront-sdk/user.rb', line 226

def invite(body)
  deprecation_warning
  raise ArgumentError unless body.is_a?(Array)
  raise ArgumentError unless body.first.is_a?(Hash)

  api.post('invite', body, 'application/json')
end

#itemize_response(body_obj) ⇒ Object



275
276
277
278
# File 'lib/wavefront-sdk/user.rb', line 275

def itemize_response(body_obj)
  { status: body_obj[:status],
    response: { items: [body_obj[:response]].flatten } }.to_json
end

#listObject

GET /api/v2/user Get all users.



32
33
34
35
# File 'lib/wavefront-sdk/user.rb', line 32

def list
  deprecation_warning
  api.get('')
end

#post_initialize(_creds, _opts) ⇒ Object



25
26
27
# File 'lib/wavefront-sdk/user.rb', line 25

def post_initialize(_creds, _opts)
  deprecation_warning
end

#remove_groups_from_user(id, group_list = []) ⇒ Wavefront::Response

POST /api/v2/user/id/removeUserGroups Removes specific user groups from the user

Parameters:

  • id (String)

    ID of the user

  • group_list (Array[String]) (defaults to: [])

    list of groups to remove

Returns:



119
120
121
122
123
124
125
# File 'lib/wavefront-sdk/user.rb', line 119

def remove_groups_from_user(id, group_list = [])
  deprecation_warning
  wf_user_id?(id)
  validate_usergroup_list(group_list)
  api.post([id, 'removeUserGroups'].uri_concat, group_list,
           'application/json')
end

#response_shim(body, status) ⇒ String

Fake a response which looks like we get from all the other paths. I’m expecting the user response model to be made consistent with others in the future.

Returns:



261
262
263
264
265
266
267
268
269
270
271
272
273
# File 'lib/wavefront-sdk/user.rb', line 261

def response_shim(body, status)
  body_obj = JSON.parse(body, symbolize_names: true)

  if body_obj.is_a?(Hash) && body_obj.key?(:status)
    if response_looks_right?(body_obj)
      body
    else
      itemize_response(body_obj)
    end
  else
    construct_response(body_obj, status)
  end
end

#revoke(id, pgroup) ⇒ Wavefront::Response

PUT /api/v2/user/id/revoke Revokes a specific user permission.

Parameters:

  • id (String)

    ID of the user

  • pgroup (String)

    permission group to revoke from the user. We do not validate this so that changes to the API do not mandate changes to the SDK. See #update for valid values.

Returns:

Raises:

  • (ArgumentError)


159
160
161
162
163
164
165
166
# File 'lib/wavefront-sdk/user.rb', line 159

def revoke(id, pgroup)
  deprecation_warning
  wf_user_id?(id)
  raise ArgumentError unless pgroup.is_a?(String)

  api.post([id, 'revoke'].uri_concat, "group=#{pgroup}",
           'application/x-www-form-urlencoded')
end

#revoke_permission(permission, user_list) ⇒ Wavefront::Response

POST /api/v2/user/revoke/permission Revokes a specific user permission from multiple users See #grant for possible permissions. This method operates on multiple users.

Parameters:

  • permission (String)

    permission to revoke

  • user_list (Array[String])

    users who should lose the permission

Returns:

Raises:

  • (ArgumentError)


211
212
213
214
215
216
217
218
# File 'lib/wavefront-sdk/user.rb', line 211

def revoke_permission(permission, user_list)
  deprecation_warning
  raise ArgumentError unless user_list.is_a?(Array)

  validate_user_list(user_list)
  api.post(['revoke', permission].uri_concat, user_list,
           'application/json')
end

#update(id, body, modify = true) ⇒ Wavefront::Response

PUT /api/v2/user/id Update a specific user definition.

Parameters:

  • id (String)

    a Wavefront user ID

  • body (Hash)

    key-value hash of the parameters you wish to change

  • modify (true, false) (defaults to: true)

    if true, use #describe() to get a hash describing the existing object, and modify that with the new body. If false, pass the new body straight through.

Returns:

Raises:

  • (ArgumentError)


87
88
89
90
91
92
93
94
95
96
# File 'lib/wavefront-sdk/user.rb', line 87

def update(id, body, modify = true)
  deprecation_warning
  wf_user_id?(id)
  raise ArgumentError unless body.is_a?(Hash)

  return api.put(id, body, 'application/json') unless modify

  api.put(id, hash_for_update(describe(id).response, body),
          'application/json')
end

#update_keysObject



300
301
302
# File 'lib/wavefront-sdk/user.rb', line 300

def update_keys
  %i[identifier groups userGroups]
end

#validate_users(id_list) ⇒ Wavefront::Response

POST /api/v2/user/validateUsers Returns valid users and service accounts, also invalid identifiers from the given list

Parameters:

Returns:



251
252
253
254
# File 'lib/wavefront-sdk/user.rb', line 251

def validate_users(id_list)
  deprecation_warning
  api.post('validateUsers', id_list, 'application/json')
end