mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			220 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			220 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // 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.affinityGroups = {
 | |
|         title: 'label.affinity.groups',
 | |
|         listView: {
 | |
|             id: 'affinityGroups',
 | |
|             fields: {
 | |
|                 name: {
 | |
|                     label: 'label.name'
 | |
|                 },
 | |
|                 type: {
 | |
|                     label: 'label.type'
 | |
|                 }
 | |
|             },
 | |
|             dataProvider: function(args) {
 | |
|                 var data = {};
 | |
|                 listViewDataProvider(args, data);
 | |
|                 if (args.context != null) {
 | |
|                     if ("instances" in args.context) {
 | |
|                         $.extend(data, {
 | |
|                             virtualmachineid: args.context.instances[0].id
 | |
|                         });
 | |
|                     }
 | |
|                 }
 | |
|                 $.ajax({
 | |
|                     url: createURL('listAffinityGroups'),
 | |
|                     data: data,
 | |
|                     success: function(json) {
 | |
|                         var items = json.listaffinitygroupsresponse.affinitygroup;
 | |
|                         args.response.success({
 | |
|                             data: items
 | |
|                         });
 | |
|                     }
 | |
|                 });
 | |
|             },
 | |
|             actions: {
 | |
|                 add: {
 | |
|                     label: 'label.add.affinity.group',
 | |
| 
 | |
|                     messages: {
 | |
|                         notification: function(args) {
 | |
|                             return 'label.add.affinity.group';
 | |
|                         }
 | |
|                     },
 | |
| 
 | |
|                     createForm: {
 | |
|                         title: 'label.add.affinity.group',
 | |
|                         fields: {
 | |
|                             name: {
 | |
|                                 label: 'label.name',
 | |
|                                 validation: {
 | |
|                                     required: true
 | |
|                                 }
 | |
|                             },
 | |
|                             description: {
 | |
|                                 label: 'label.description'
 | |
|                             },
 | |
|                             type: {
 | |
|                                 label: 'label.type',
 | |
|                                 select: function(args) {
 | |
|                                     $.ajax({
 | |
|                                         url: createURL('listAffinityGroupTypes'),
 | |
|                                         success: function(json) {
 | |
|                                             var types = [];
 | |
|                                             var items = json.listaffinitygrouptypesresponse.affinityGroupType;
 | |
|                                             if (items != null) {
 | |
|                                                 for (var i = 0; i < items.length; i++) {
 | |
|                                                     types.push({
 | |
|                                                         id: items[i].type,
 | |
|                                                         description: items[i].type
 | |
|                                                     });
 | |
|                                                 }
 | |
|                                             }
 | |
|                                             args.response.success({
 | |
|                                                 data: types
 | |
|                                             })
 | |
|                                         }
 | |
|                                     });
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                     },
 | |
| 
 | |
|                     action: function(args) {
 | |
|                         var data = {
 | |
|                             name: args.data.name,
 | |
|                             type: args.data.type
 | |
|                         };
 | |
|                         if (args.data.description != null && args.data.description.length > 0)
 | |
|                             $.extend(data, {
 | |
|                                 description: args.data.description
 | |
|                             });
 | |
| 
 | |
|                         $.ajax({
 | |
|                             url: createURL('createAffinityGroup'),
 | |
|                             data: data,
 | |
|                             success: function(json) {
 | |
|                                 var jid = json.createaffinitygroupresponse.jobid;
 | |
|                                 args.response.success({
 | |
|                                     _custom: {
 | |
|                                         jobId: jid,
 | |
|                                         getUpdatedItem: function(json) {
 | |
|                                             return json.queryasyncjobresultresponse.jobresult.affinitygroup;
 | |
|                                         }
 | |
|                                     }
 | |
|                                 });
 | |
|                             }
 | |
|                         });
 | |
|                     },
 | |
| 
 | |
|                     notification: {
 | |
|                         poll: pollAsyncJobResult
 | |
|                     }
 | |
|                 }
 | |
|             },
 | |
|             detailView: {
 | |
|                 actions: {
 | |
|                     remove: {
 | |
|                         label: 'label.delete.affinity.group',
 | |
|                         messages: {
 | |
|                             confirm: function(args) {
 | |
|                                 return 'message.delete.affinity.group';
 | |
|                             },
 | |
|                             notification: function(args) {
 | |
|                                 return 'label.delete.affinity.group';
 | |
|                             }
 | |
|                         },
 | |
|                         action: function(args) {
 | |
|                             $.ajax({
 | |
|                                 url: createURL('deleteAffinityGroup'),
 | |
|                                 data: {
 | |
|                                     id: args.context.affinityGroups[0].id
 | |
|                                 },
 | |
|                                 success: function(json) {
 | |
|                                     var jid = json.deleteaffinitygroupresponse.jobid;
 | |
|                                     args.response.success({
 | |
|                                         _custom: {
 | |
|                                             jobId: jid
 | |
|                                         }
 | |
|                                     });
 | |
|                                 }
 | |
|                             });
 | |
|                         },
 | |
|                         notification: {
 | |
|                             poll: pollAsyncJobResult
 | |
|                         }
 | |
|                     }
 | |
|                 },
 | |
| 
 | |
|                 viewAll: {
 | |
|                     path: 'instances',
 | |
|                     label: 'label.instances'
 | |
|                 },
 | |
| 
 | |
|                 tabs: {
 | |
|                     details: {
 | |
|                         title: 'label.details',
 | |
|                         fields: [{
 | |
|                             name: {
 | |
|                                 label: 'label.name'
 | |
|                             }
 | |
|                         }, {
 | |
|                             description: {
 | |
|                                 label: 'label.description'
 | |
|                             },
 | |
|                             type: {
 | |
|                                 label: 'label.type'
 | |
|                             },
 | |
|                             id: {
 | |
|                                 label: 'label.id'
 | |
|                             }
 | |
|                         }],
 | |
| 
 | |
|                         dataProvider: function(args) {
 | |
|                             $.ajax({
 | |
|                                 url: createURL('listAffinityGroups'),
 | |
|                                 data: {
 | |
|                                     id: args.context.affinityGroups[0].id
 | |
|                                 },
 | |
|                                 success: function(json) {
 | |
|                                     var item = json.listaffinitygroupsresponse.affinitygroup[0];
 | |
|                                     args.response.success({
 | |
|                                         actionFilter: affinitygroupActionfilter,
 | |
|                                         data: item
 | |
|                                     });
 | |
|                                 }
 | |
|                             });
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     };
 | |
| 
 | |
|     var affinitygroupActionfilter = cloudStack.actionFilter.affinitygroupActionfilter = function(args) {
 | |
|         var jsonObj = args.context.item;
 | |
|         var allowedActions = [];
 | |
|         if (jsonObj.type != 'ExplicitDedication' || isAdmin()) {
 | |
|             allowedActions.push("remove");
 | |
|         }
 | |
|         return allowedActions;
 | |
|     }
 | |
| 
 | |
| })(cloudStack);
 |