|  | // Licensed to the Apache Software Foundation (ASF) under one | 
|  | // or more contributor license agreements.  See the NOTICE file | 
|  | // distributed with this work for additional information | 
|  | // regarding copyright ownership.  The ASF licenses this file | 
|  | // to you under the Apache License, Version 2.0 (the | 
|  | // "License"); you may not use this file except in compliance | 
|  | // with the License.  You may obtain a copy of the License at | 
|  | // | 
|  | //   http://www.apache.org/licenses/LICENSE-2.0 | 
|  | // | 
|  | // Unless required by applicable law or agreed to in writing, | 
|  | // software distributed under the License is distributed on an | 
|  | // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
|  | // KIND, either express or implied.  See the License for the | 
|  | // specific language governing permissions and limitations | 
|  | // under the License. | 
|  | (function($, cloudStack) { | 
|  | cloudStack.sections.vmsnapshots = { | 
|  | title: 'label.vmsnapshot', | 
|  | id: 'vmsnapshots', | 
|  | listView: { | 
|  | id: 'vmsnapshots', | 
|  | isMaximized: true, | 
|  | fields: { | 
|  | displayname: { | 
|  | label: 'label.name' | 
|  | }, | 
|  | state: { | 
|  | label: 'label.state', | 
|  | indicator: { | 
|  | 'Ready': 'on', | 
|  | 'Error': 'off' | 
|  | } | 
|  | }, | 
|  | type: { | 
|  | label: 'label.vmsnapshot.type' | 
|  | }, | 
|  | current: { | 
|  | label: 'label.vmsnapshot.current', | 
|  | converter: cloudStack.converters.toBooleanText | 
|  | }, | 
|  | parentName: { | 
|  | label: 'label.vmsnapshot.parentname' | 
|  | }, | 
|  | created: { | 
|  | label: 'label.date', | 
|  | converter: cloudStack.converters.toLocalDate | 
|  | } | 
|  | }, | 
|  |  | 
|  | dataProvider: function(args) { | 
|  | var apiCmd = "listVMSnapshot&listAll=true"; | 
|  | if (args.context != null) { | 
|  | if ("instances" in args.context) { | 
|  | apiCmd += "&virtualmachineid=" + args.context.instances[0].id; | 
|  | } | 
|  | } | 
|  | $.ajax({ | 
|  | url: createURL(apiCmd), | 
|  | dataType: "json", | 
|  | async: true, | 
|  | success: function(json) { | 
|  | var jsonObj; | 
|  | jsonObj = json.listvmsnapshotresponse.vmSnapshot; | 
|  | args.response.success({ | 
|  | data: jsonObj | 
|  | }); | 
|  | } | 
|  | }); | 
|  | }, | 
|  | //dataProvider end | 
|  | detailView: { | 
|  | tabs: { | 
|  | details: { | 
|  | title: 'label.details', | 
|  | fields: { | 
|  | id: { | 
|  | label: 'label.id' | 
|  | }, | 
|  | name: { | 
|  | label: 'label.name' | 
|  | }, | 
|  | displayname: { | 
|  | label: 'label.display.name' | 
|  | }, | 
|  | type: { | 
|  | label: 'label.vmsnapshot.type' | 
|  | }, | 
|  | description: { | 
|  | label: 'label.description' | 
|  | }, | 
|  | state: { | 
|  | label: 'label.state', | 
|  | indicator: { | 
|  | 'Ready': 'on', | 
|  | 'Error': 'off' | 
|  | } | 
|  | }, | 
|  | current: { | 
|  | label: 'label.vmsnapshot.current', | 
|  | converter: cloudStack.converters.toBooleanText | 
|  | }, | 
|  | parentName: { | 
|  | label: 'label.vmsnapshot.parentname' | 
|  | }, | 
|  | created: { | 
|  | label: 'label.date', | 
|  | converter: cloudStack.converters.toLocalDate | 
|  | } | 
|  | }, | 
|  | dataProvider: function(args) { | 
|  | $.ajax({ | 
|  | url: createURL("listVMSnapshot&listAll=true&vmsnapshotid=" + args.context.vmsnapshots[0].id), | 
|  | dataType: "json", | 
|  | async: true, | 
|  | success: function(json) { | 
|  | var jsonObj; | 
|  | jsonObj = json.listvmsnapshotresponse.vmSnapshot[0]; | 
|  | args.response.success({ | 
|  | //actionFilter: vmActionfilter, | 
|  | data: jsonObj | 
|  | }); | 
|  | } | 
|  | }); | 
|  | }, | 
|  | tags: cloudStack.api.tags({ | 
|  | resourceType: 'VMSnapshot', | 
|  | contextId: 'vmsnapshots' | 
|  | }) | 
|  | } | 
|  | }, | 
|  | actions: { | 
|  | //delete a snapshot | 
|  | remove: { | 
|  | label: 'label.action.vmsnapshot.delete', | 
|  | messages: { | 
|  | confirm: function(args) { | 
|  | return 'message.action.vmsnapshot.delete'; | 
|  | }, | 
|  | notification: function(args) { | 
|  | return 'label.action.vmsnapshot.delete'; | 
|  | } | 
|  | }, | 
|  | action: function(args) { | 
|  | $.ajax({ | 
|  | url: createURL("deleteVMSnapshot&vmsnapshotid=" + args.context.vmsnapshots[0].id), | 
|  | dataType: "json", | 
|  | async: true, | 
|  | success: function(json) { | 
|  | var jid = json.deletevmsnapshotresponse.jobid; | 
|  | args.response.success({ | 
|  | _custom: { | 
|  | jobId: jid | 
|  | } | 
|  | }); | 
|  | } | 
|  | }); | 
|  | }, | 
|  | notification: { | 
|  | poll: pollAsyncJobResult | 
|  | } | 
|  | }, | 
|  | restart: { | 
|  | label: 'label.action.vmsnapshot.revert', | 
|  | messages: { | 
|  | confirm: function(args) { | 
|  | return 'label.action.vmsnapshot.revert'; | 
|  | }, | 
|  | notification: function(args) { | 
|  | return 'message.action.vmsnapshot.revert'; | 
|  | } | 
|  | }, | 
|  | action: function(args) { | 
|  | $.ajax({ | 
|  | url: createURL("revertToVMSnapshot&vmsnapshotid=" + args.context.vmsnapshots[0].id), | 
|  | dataType: "json", | 
|  | async: true, | 
|  | success: function(json) { | 
|  | var jid = json.reverttovmsnapshotresponse.jobid; | 
|  | args.response.success({ | 
|  | _custom: { | 
|  | jobId: jid | 
|  | } | 
|  | }); | 
|  | } | 
|  | }); | 
|  |  | 
|  | }, | 
|  | notification: { | 
|  | poll: pollAsyncJobResult | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  | //detailview end | 
|  | } | 
|  | } | 
|  | })(jQuery, cloudStack); |