@@ -19,14 +19,13 @@ def dashboard_all_versions( params )
1919 raise ArgumentError . new ( format ( 'wrong type. \'params\' must be an Hash, given \'%s\'' , params . class . to_s ) ) unless ( params . is_a? ( Hash ) )
2020 raise ArgumentError . new ( 'missing \'params\'' ) if ( params . size . zero? )
2121
22- v , mv = version . values
23- return { 'status' => 404 , 'message' => format ( 'only Grafana 5 has folder support. you use version %s' , v ) } if ( mv != 5 )
22+ # v, mv = version.values
23+ # return { 'status' => 404, 'message' => format( 'only Grafana 5 has dashboard version support. you use version %s', v) } if(mv != 5)
2424
2525 dashboard_id = validate ( params , required : true , var : 'dashboard_id' , type : Integer )
2626 start = validate ( params , required : false , var : 'start' , type : Integer )
2727 limit = validate ( params , required : false , var : 'limit' , type : Integer )
2828
29-
3029 api = [ ]
3130 api << format ( 'start=%s' , start ) unless ( start . nil? )
3231 api << format ( 'limit=%s' , limit ) unless ( limit . nil? )
@@ -41,24 +40,85 @@ def dashboard_all_versions( params )
4140 # GET /api/dashboards/id/:dashboardId/versions/:id
4241 def dashboard_version ( params )
4342
43+ raise ArgumentError . new ( format ( 'wrong type. \'params\' must be an Hash, given \'%s\'' , params . class . to_s ) ) unless ( params . is_a? ( Hash ) )
44+ raise ArgumentError . new ( 'missing \'params\'' ) if ( params . size . zero? )
4445
46+ v , mv = version . values
47+ return { 'status' => 404 , 'message' => format ( 'only Grafana 5 has folder support. you use version %s' , v ) } if ( mv != 5 )
48+
49+ dashboard_id = validate ( params , required : true , var : 'dashboard_id' , type : Integer )
50+ version = validate ( params , required : true , var : 'version' , type : Integer )
51+
52+ endpoint = format ( '/api/dashboards/id/%s/versions/%s' , dashboard_id , version )
53+
54+ r = get ( endpoint )
55+
56+ r [ 'message' ] = format ( 'no dashboard version \'%s\' for dashboard \'%s\' found' , version , dashboard_id ) if ( r . dig ( 'status' ) == 404 )
57+ r [ 'message' ] = format ( 'no dashboard version \'%s\' for dashboard \'%s\' found' , version , dashboard_id ) if ( r . dig ( 'status' ) == 500 )
58+ r
4559 end
4660
4761 # Restore dashboard
4862 # http://docs.grafana.org/http_api/dashboard_versions/#restore-dashboard
4963 # POST /api/dashboards/id/:dashboardId/restore
5064 def restore_dashboard ( params )
5165
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? )
5268
69+ # v, mv = version.values
70+ # return { 'status' => 404, 'message' => format( 'only Grafana 5 has folder support. you use version %s', v) } if(mv != 5)
71+
72+ dashboard_id = validate ( params , required : true , var : 'dashboard_id' , type : Integer )
73+ version = validate ( params , required : true , var : 'version' , type : Integer )
74+
75+ endpoint = format ( '/api/dashboards/id/%s/restore' , dashboard_id )
76+
77+ payload = {
78+ version : version
79+ }
80+
81+ post ( endpoint , payload . to_json )
5382 end
5483
5584 # Compare dashboard versions
5685 # http://docs.grafana.org/http_api/dashboard_versions/#compare-dashboard-versions
5786 # POST /api/dashboards/calculate-diff
5887 def compare_dashboard_version ( params )
5988
89+ raise ArgumentError . new ( format ( 'wrong type. \'params\' must be an Hash, given \'%s\'' , params . class . to_s ) ) unless ( params . is_a? ( Hash ) )
90+ raise ArgumentError . new ( 'missing \'params\'' ) if ( params . size . zero? )
91+
92+ base = validate ( params , required : true , var : 'base' , type : Hash )
93+ new = validate ( params , required : true , var : 'new' , type : Hash )
94+ diff_type = validate ( params , required : false , var : 'diff_type' , type : String ) || 'json'
95+
96+ base_dashboard_id = validate ( base , required : true , var : 'dashboard_id' , type : Integer )
97+ base_dashboard_version = validate ( base , required : true , var : 'version' , type : Integer )
98+ new_dashboard_id = validate ( new , required : true , var : 'dashboard_id' , type : Integer )
99+ new_dashboard_version = validate ( new , required : true , var : 'version' , type : Integer )
100+
101+ valid_diff_type = %w[ json basic ]
102+
103+ r = validate_hash ( diff_type , valid_diff_type )
104+
105+ return r unless ( r == true )
106+
107+ payload = {
108+ base : {
109+ dashboardId : base_dashboard_id ,
110+ version : base_dashboard_version
111+ } ,
112+ new : {
113+ dashboardId : new_dashboard_id ,
114+ version : new_dashboard_version
115+ } ,
116+ diffType : diff_type
117+ }
60118
119+ endpoint = '/api/dashboards/calculate-diff'
61120
121+ post ( endpoint , payload . to_json )
62122 end
63123
64124 end
0 commit comments