Class: Wavefront::Search
Overview
Manage and query Wavefront searches. The /search API path has a lot of paths, with a lot of duplication. The current state of this class covers the whole API with two methods, but leaves a lot up to the user. It may grow, with convenience methods.
Instance Attribute Summary
Attributes inherited from Base
#api_base, #conn, #debug, #logger, #net, #noop, #opts, #update_keys, #verbose
Instance Method Summary collapse
-
#body(query, options) ⇒ Object
Build a query body.
- #raw_facet_search(entity = nil, body = nil, deleted = false, facet = false) ⇒ Object
-
#raw_search(entity = nil, body = nil, deleted = false) ⇒ Object
POST /api/v2/search/entity POST /api/v2/search/entity/deleted Run a search query.
-
#search(entity, query, options = {}) ⇒ Object
POST /api/v2/search/entity POST /api/v2/search/entity/deleted Run a search query.
Methods inherited from Base
#api_delete, #api_get, #api_post, #api_put, #hash_for_update, #initialize, #log, #mk_conn, #respond, #time_to_ms
Methods included from Mixins
Methods included from Validators
#wf_alert_id?, #wf_alert_severity?, #wf_cloudintegration_id?, #wf_dashboard_id?, #wf_epoch?, #wf_event_id?, #wf_granularity?, #wf_link_id?, #wf_link_template?, #wf_maintenance_window_id?, #wf_message_id?, #wf_metric_name?, #wf_ms_ts?, #wf_name?, #wf_point?, #wf_point_tags?, #wf_proxy_id?, #wf_savedsearch_entity?, #wf_savedsearch_id?, #wf_source_id?, #wf_string?, #wf_tag?, #wf_ts?, #wf_user_id?, #wf_value?, #wf_version?, #wf_webhook_id?
Constructor Details
This class inherits a constructor from Wavefront::Base
Instance Method Details
#body(query, options) ⇒ Object
Build a query body
48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/wavefront-sdk/search.rb', line 48 def body(query, ) ret = { limit: [:limit] || 10, offset: [:offset] || 0, query: [query].flatten, sort: { field: [query].flatten.first[:key], ascending: ![:desc] || true } } ret[:query].map { |q| q[:matchingMethod] ||= 'CONTAINS' } ret end |
#raw_facet_search(entity = nil, body = nil, deleted = false, facet = false) ⇒ Object
93 94 95 96 97 98 99 100 101 |
# File 'lib/wavefront-sdk/search.rb', line 93 def raw_facet_search(entity = nil, body = nil, deleted = false, facet = false) raise ArgumentError unless entity.is_a?(String) raise ArgumentError unless body.is_a?(Hash) path = [entity] path.<< 'deleted' if deleted path.<< facet ? facet : 'facets' api_post(path, body, 'application/json') end |
#raw_search(entity = nil, body = nil, deleted = false) ⇒ Object
POST /api/v2/search/entity POST /api/v2/search/entity/deleted Run a search query. This single method maps to many API paths.
74 75 76 77 78 79 80 |
# File 'lib/wavefront-sdk/search.rb', line 74 def raw_search(entity = nil, body = nil, deleted = false) raise ArgumentError unless entity.is_a?(String) || entity.is_a?(Symbol) raise ArgumentError unless body.is_a?(Hash) path = [entity] path.<< 'deleted' if deleted api_post(path, body.to_json, 'application/json') end |
#search(entity, query, options = {}) ⇒ Object
POST /api/v2/search/entity POST /api/v2/search/entity/deleted Run a search query. This single method maps to many API paths. It is a wrapper around #raw_search() for common, single key-value searches. If you need to do more complicated things, use #raw_search().
containing the following keys:
key [String] the field on which to search
value [String] what to search for
matchingMethod [String] the method to match values. Defaults
to 'CONTAINS'. Must be one of CONTAINS, STARTSWITH, EXACT,
TAGPATH
If an array of hashes is supplied, Wavefront will apply a
logical AND to the given key-value pairs.
41 42 43 44 |
# File 'lib/wavefront-sdk/search.rb', line 41 def search(entity, query, = {}) raise ArgumentError unless .is_a?(Hash) raw_search(entity, body(query, ), [:deleted] || false) end |