Module: Grafana::DashboardVersions

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

Overview

Instance Method Summary collapse

Instance Method Details

#compare_dashboard_version(params) ⇒ Object

Compare dashboard versions docs.grafana.org/http_api/dashboard_versions/#compare-dashboard-versions POST /api/dashboards/calculate-diff

Raises:

  • (ArgumentError)


87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/grafana/dashboard_versions.rb', line 87

def compare_dashboard_version( params )

  raise ArgumentError.new(format('wrong type. \'params\' must be an Hash, given \'%s\'', params.class.to_s)) unless( params.is_a?(Hash) )
  raise ArgumentError.new('missing \'params\'') if( params.size.zero? )

  base      = validate( params, required: true , var: 'base'     , type: Hash )
  new       = validate( params, required: true , var: 'new'      , type: Hash )
  diff_type = validate( params, required: false, var: 'diff_type', type: String ) || 'json'

  base_dashboard_id      = validate( base, required: true , var: 'dashboard_id', type: Integer )
  base_dashboard_version = validate( base, required: true , var: 'version'     , type: Integer )
  new_dashboard_id       = validate( new , required: true , var: 'dashboard_id', type: Integer )
  new_dashboard_version  = validate( new , required: true , var: 'version'     , type: Integer )

  valid_diff_type = %w[json basic]

  r = validate_hash(diff_type, valid_diff_type)

  return r unless(r == true)

  payload = {
    base: {
      dashboardId: base_dashboard_id,
      version: base_dashboard_version
    },
    new: {
      dashboardId: new_dashboard_id,
      version: new_dashboard_version
    },
    diffType: diff_type
  }

  endpoint = '/api/dashboards/calculate-diff'

  post(endpoint, payload.to_json)
end

#dashboard_all_versions(params) ⇒ Object

Get all dashboard versions docs.grafana.org/http_api/dashboard_versions/#get-all-dashboard-versions GET /api/dashboards/id/:dashboardId/versions

Raises:

  • (ArgumentError)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/grafana/dashboard_versions.rb', line 17

def dashboard_all_versions( params )

  raise ArgumentError.new(format('wrong type. \'params\' must be an Hash, given \'%s\'', params.class.to_s)) unless( params.is_a?(Hash) )
  raise ArgumentError.new('missing \'params\'') if( params.size.zero? )

#      v, mv = version.values
#      return { 'status' => 404, 'message' => format( 'dashboard has been supported in Grafana since version 5. you use version %s', v) } if(mv < 5)

  dashboard_id  = validate( params, required: true , var: 'dashboard_id', type: Integer )
  start         = validate( params, required: false, var: 'start'       , type: Integer )
  limit         = validate( params, required: false, var: 'limit'       , type: Integer )

  api     = []
  api << format( 'start=%s', start ) unless( start.nil? )
  api << format( 'limit=%s', limit ) unless( limit.nil? )
  api = api.join( '&' )

  endpoint = format('/api/dashboards/id/%s/versions?%s', dashboard_id, api)
  get(endpoint)
end

#dashboard_version(params) ⇒ Object

Get dashboard version docs.grafana.org/http_api/dashboard_versions/#get-dashboard-version GET /api/dashboards/id/:dashboardId/versions/:id

Raises:

  • (ArgumentError)


41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/grafana/dashboard_versions.rb', line 41

def dashboard_version( params )

  raise ArgumentError.new(format('wrong type. \'params\' must be an Hash, given \'%s\'', params.class.to_s)) unless( params.is_a?(Hash) )
  raise ArgumentError.new('missing \'params\'') if( params.size.zero? )

  v, mv = version.values
  return { 'status' => 404, 'message' => format( 'folder has been supported in Grafana since version 5. you use version %s', v) } if(mv < 5)

  dashboard_id  = validate( params, required: true, var: 'dashboard_id', type: Integer )
  version       = validate( params, required: true, var: 'version'     , type: Integer )

  endpoint = format('/api/dashboards/id/%s/versions/%s', dashboard_id, version)

  r = get(endpoint)

  r['message'] = format('no dashboard version \'%s\' for dashboard \'%s\' found', version, dashboard_id) if(r.dig('status') == 404)
  r['message'] = format('no dashboard version \'%s\' for dashboard \'%s\' found', version, dashboard_id) if(r.dig('status') == 500)
  r
end

#restore_dashboard(params) ⇒ Object

Restore dashboard docs.grafana.org/http_api/dashboard_versions/#restore-dashboard POST /api/dashboards/id/:dashboardId/restore

Raises:

  • (ArgumentError)


64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/grafana/dashboard_versions.rb', line 64

def restore_dashboard( params )

  raise ArgumentError.new(format('wrong type. \'params\' must be an Hash, given \'%s\'', params.class.to_s)) unless( params.is_a?(Hash) )
  raise ArgumentError.new('missing \'params\'') if( params.size.zero? )

#      v, mv = version.values
#      return { 'status' => 404, 'message' => format( 'folder has been supported in Grafana since version 5. you use version %s', v) } if(mv < 5)

  dashboard_id  = validate( params, required: true, var: 'dashboard_id', type: Integer )
  version       = validate( params, required: true, var: 'version'    , type: Integer )

  endpoint = format('/api/dashboards/id/%s/restore', dashboard_id)

  payload = {
    version: version
  }

  post(endpoint, payload.to_json)
end