mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	If there are many projects and accounts, listing projects/accounts will take long time getting the resource limitation and resource count in the process. However resource count/limitation are not needed sometimes. Add an option 'details' to listProjects and listAccounts. If you do not need the resource count/limitation, please add details=min to api call. The api execution time will be reduced significantly.
		
			
				
	
	
		
			195 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			195 lines
		
	
	
		
			8.2 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.lbCertificatePolicy = {
 | |
|         dialog: function(args) {
 | |
|             return function(args) {
 | |
|                 var success = args.response.success;
 | |
|                 var context = args.context;
 | |
| 
 | |
|                 var certid = {
 | |
|                     certificate: {
 | |
|                         label: 'label.certificate.name',
 | |
|                         select: function(args) {
 | |
|                             var data = {};
 | |
|                             var item = {};
 | |
| 
 | |
|                             if (context != null) {
 | |
|                                 if (context.networks != null) {
 | |
|                                     $.extend(data, {account: context.networks[0].account});
 | |
|                                     $.extend(data, {domain: context.networks[0].domain});
 | |
|                                 }
 | |
|                             }
 | |
| 
 | |
|                             $.extend(data, {
 | |
|                                 details: 'min'
 | |
|                             });
 | |
| 
 | |
|                             $.ajax({
 | |
|                                 url: createURL('listAccounts'),
 | |
|                                 async: false,
 | |
|                                 data: data,
 | |
|                                 success: function(json) {
 | |
|                                     var items = json.listaccountsresponse.account;
 | |
|                                     $.extend(item, {accountid: items[0].id});
 | |
|                                 }
 | |
|                             });
 | |
| 
 | |
|                             $.ajax({
 | |
|                                 url: createURL('listSslCerts'),
 | |
|                                 async: false,
 | |
|                                 data: item,
 | |
|                                 success: function(json) {
 | |
|                                     if(!json.listsslcertsresponse || !json.listsslcertsresponse.sslcert){
 | |
|                                         args.response.success({
 | |
|                                             data: {id: 'No certificates ID', 
 | |
|                                                     description: 'No certificates found'}
 | |
|                                         });
 | |
|                                         return;
 | |
|                                     }
 | |
|                                     var items = json.listsslcertsresponse.sslcert;
 | |
|                                     args.response.success({
 | |
|                                         data: $.map(items, function(item) {
 | |
|                                                 return {
 | |
|                                                     id: item.id,
 | |
|                                                     description: item.id
 | |
|                                                 };
 | |
|                                             })
 | |
|                                     });
 | |
|                                 }
 | |
|                             });
 | |
|                         }
 | |
|                     }
 | |
|                 };
 | |
| 
 | |
|                 var $item = args.$item;
 | |
| 
 | |
|                 cloudStack.dialog.createForm({
 | |
|                     form: {
 | |
|                         title: 'Configure Certificate',
 | |
|                         desc: 'Please complete the following fields',
 | |
|                         fields: certid
 | |
|                     },
 | |
|                     after: function(args) {
 | |
|                         // Remove fields not applicable to sticky method
 | |
|                         args.$form.find('.form-item:hidden').remove();
 | |
| 
 | |
|                         var data = cloudStack.serializeForm(args.$form);
 | |
| 
 | |
|                         /* $item indicates that this is an existing sticky rule;
 | |
|                re-create sticky rule with new parameters */
 | |
|                         if ($item) {
 | |
|                             var $loading = $('<div>').addClass('loading-overlay');
 | |
| 
 | |
|                             $loading.prependTo($item);
 | |
|                             cloudStack.lbStickyPolicy.actions.recreate(
 | |
|                                 $item.data('multi-custom-data').id,
 | |
|                                 $item.data('multi-custom-data').lbRuleID,
 | |
|                                 data,
 | |
|                                 function() { // Complete
 | |
|                                     $(window).trigger('cloudStack.fullRefresh');
 | |
|                                 },
 | |
|                                 function(error) { // Error
 | |
|                                     $(window).trigger('cloudStack.fullRefresh');
 | |
|                                 }
 | |
|                             );
 | |
|                         } else {
 | |
|                             success({
 | |
|                                 data: data
 | |
|                             });
 | |
|                         }
 | |
|                     }
 | |
|                 });
 | |
|             };
 | |
|         },
 | |
| 
 | |
|         actions: {
 | |
|             add: function(lbRuleID, data, complete, error) {
 | |
| 
 | |
|                 $.ajax({
 | |
|                     url: createURL('assignCertToLoadBalancer'),
 | |
|                     data: {certid: data.certificate, lbruleid: lbRuleID},
 | |
|                     success: function(json) {
 | |
|                         cloudStack.ui.notifications.add({
 | |
|                                 desc: 'Add new LB Certificate',
 | |
|                                 section: 'Network',
 | |
|                                 poll: pollAsyncJobResult,
 | |
|                                 _custom: {
 | |
|                                     jobId: json.assigncerttoloadbalancerresponse.jobid
 | |
|                                 }
 | |
|                             },
 | |
|                             complete, {},
 | |
|                             error, {}
 | |
|                         );
 | |
|                     },
 | |
|                     error: function(json) {
 | |
|                         complete();
 | |
|                         cloudStack.dialog.notice({
 | |
|                             message: parseXMLHttpResponse(json)
 | |
|                         });
 | |
|                     }
 | |
|                 });
 | |
|             },
 | |
|             'delete': function(stickyRuleID, complete, error) {
 | |
|                 $.ajax({
 | |
|                     url: createURL('deleteLBStickinessPolicy'),
 | |
|                     data: {
 | |
|                         id: stickyRuleID
 | |
|                     },
 | |
|                     success: function(json) {
 | |
|                         cloudStack.ui.notifications.add({
 | |
|                                 desc: 'Remove previous LB sticky rule',
 | |
|                                 section: 'Network',
 | |
|                                 poll: pollAsyncJobResult,
 | |
|                                 _custom: {
 | |
|                                     jobId: json.deleteLBstickinessrruleresponse.jobid
 | |
|                                 }
 | |
|                             },
 | |
|                             complete, {},
 | |
|                             error, {}
 | |
|                         );
 | |
|                     },
 | |
|                     error: function(json) {
 | |
|                         complete();
 | |
|                         cloudStack.dialog.notice({
 | |
|                             message: parseXMLHttpResponse(json)
 | |
|                         });
 | |
|                     }
 | |
|                 });
 | |
|             },
 | |
|             recreate: function(stickyRuleID, lbRuleID, data, complete, error) {
 | |
|                 var addStickyPolicy = function() {
 | |
|                     cloudStack.lbStickyPolicy.actions.add(
 | |
|                         lbRuleID,
 | |
|                         data,
 | |
|                         complete,
 | |
|                         error
 | |
|                     );
 | |
|                 };
 | |
| 
 | |
|                 // Delete existing rule
 | |
|                 if (data.methodname !== 'None') {
 | |
|                     addStickyPolicy();
 | |
|                 } else {
 | |
|                     cloudStack.lbStickyPolicy.actions['delete'](stickyRuleID, complete, error);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     };
 | |
| }(jQuery, cloudStack));
 |