mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			357 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			357 lines
		
	
	
		
			11 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.installWizard = {
 | |
|     // Check if install wizard should be invoked
 | |
|     check: function(args) {
 | |
|       $.ajax({
 | |
|         url: createURL('listZones'),
 | |
|         dataType: 'json',
 | |
|         async: true,
 | |
|         success: function(data) {
 | |
|           args.response.success({
 | |
|             doInstall: !data.listzonesresponse.zone
 | |
|           });
 | |
|         }
 | |
|       });
 | |
|     },
 | |
| 
 | |
|     changeUser: function(args) {
 | |
|       $.ajax({
 | |
|         url: createURL('updateUser'),
 | |
|         data: {
 | |
|           id: cloudStack.context.users[0].userid,
 | |
|           password: md5Hashed ? $.md5(args.data.password) : todb(args.data.password)
 | |
|         },
 | |
|         dataType: 'json',
 | |
|         async: true,
 | |
|         success: function(data) {
 | |
|           args.response.success({
 | |
|             data: { newUser: data.updateuserresponse.user }
 | |
|           });
 | |
|         }
 | |
|       });
 | |
|     },
 | |
| 
 | |
|     // Copy text
 | |
|     copy: {
 | |
|       // Tooltips
 | |
|       'tooltip.addZone.name': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addZone.name'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addZone.ip4dns1': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addZone.dns1'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addZone.ip4dns2': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addZone.dns2'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addZone.internaldns1': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addZone.internaldns1'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addZone.internaldns2': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addZone.internaldns2'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.configureGuestTraffic.name': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.configureGuestTraffic.name'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.configureGuestTraffic.description': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.configureGuestTraffic.description'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.configureGuestTraffic.guestGateway': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.configureGuestTraffic.guestGateway'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.configureGuestTraffic.guestNetmask': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.configureGuestTraffic.guestNetmask'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.configureGuestTraffic.guestStartIp': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.configureGuestTraffic.guestStartIp'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.configureGuestTraffic.guestEndIp': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.configureGuestTraffic.guestEndIp'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addPod.name': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addPod.name'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addPod.reservedSystemGateway': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addPod.reservedSystemGateway'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addPod.reservedSystemNetmask': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addPod.reservedSystemNetmask'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addPod.reservedSystemStartIp': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addPod.reservedSystemStartIp'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addPod.reservedSystemEndIp': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addPod.reservedSystemEndIp'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addCluster.name': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addCluster.name'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addHost.hostname': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addHost.hostname'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addHost.username': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addHost.username'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addHost.password': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addHost.password'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addPrimaryStorage.name': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addPrimaryStorage.name'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addPrimaryStorage.server': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addPrimaryStorage.server'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addPrimaryStorage.path': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addPrimaryStorage.path'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addSecondaryStorage.nfsServer': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addSecondaryStorage.nfsServer'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       'tooltip.addSecondaryStorage.path': function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.tooltip.addSecondaryStorage.path'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       // Intro text
 | |
|       whatIsCloudStack: function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.copy.whatIsCloudStack'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       whatIsAZone: function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.copy.whatIsAZone'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       whatIsAPod: function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.copy.whatIsAPod'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       whatIsACluster: function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.copy.whatIsACluster'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       whatIsAHost: function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.copy.whatIsAHost'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       whatIsPrimaryStorage: function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.copy.whatIsPrimaryStorage'
 | |
|         });
 | |
|       },
 | |
| 
 | |
|       whatIsSecondaryStorage: function(args) {
 | |
|         args.response.success({
 | |
|           text: 'message.installWizard.copy.whatIsSecondaryStorage'
 | |
|         });
 | |
|       }
 | |
|     },
 | |
| 
 | |
|     action: function(args) {
 | |
|       var success = args.response.success;
 | |
|       var message = args.response.message;
 | |
|       
 | |
|       // Get default network offering
 | |
|       var selectedNetworkOffering;
 | |
|       $.ajax({
 | |
|         url: createURL("listNetworkOfferings&state=Enabled&guestiptype=Shared"),
 | |
|         dataType: "json",
 | |
|         async: false,
 | |
|         success: function(json) {
 | |
|           selectedNetworkOffering = $.grep(
 | |
|             json.listnetworkofferingsresponse.networkoffering,
 | |
|             function(networkOffering) {
 | |
|               var services = $.map(networkOffering.service, function(service) {
 | |
|                 return service.name;
 | |
|               });
 | |
| 							
 | |
|               //pick the network offering including SecurityGroup, but excluding Lb and StaticNat. (bug 13665)
 | |
|               return (($.inArray('SecurityGroup', services) != -1) && ($.inArray('Lb', services) == -1) && ($.inArray('StaticNat', services) == -1)) ;
 | |
|             }
 | |
|           )[0];					
 | |
|         }
 | |
|       });
 | |
|      
 | |
|       cloudStack.zoneWizard.action($.extend(true, {}, args, {
 | |
|         // Plug in hard-coded values specific to quick install
 | |
|         data: {
 | |
|           zone: {
 | |
|             networkType: 'Basic',            
 | |
|             networkOfferingId: selectedNetworkOffering.id
 | |
|           },
 | |
| 					pluginFrom: {
 | |
| 					  name: 'installWizard',
 | |
| 						selectedNetworkOffering: selectedNetworkOffering,
 | |
| 						selectedNetworkOfferingHavingSG: true
 | |
| 					}						
 | |
|         },
 | |
|         response: {
 | |
|           success: function(args) {
 | |
|             var enableZone = function() {
 | |
|               message('Enabling zone...');
 | |
|               cloudStack.zoneWizard.enableZoneAction({
 | |
|                 data: args.data,
 | |
|                 formData: args.data,
 | |
|                 launchData: args.data,
 | |
|                 response: {
 | |
|                   success: function(args) {
 | |
|                     pollSystemVMs();
 | |
|                   }
 | |
|                 }
 | |
|               });              
 | |
|             };
 | |
| 
 | |
|             var pollSystemVMs = function() {
 | |
|               // Poll System VMs, then enable zone
 | |
|               message('Creating system VMs (this may take a while)');
 | |
|               var poll = setInterval(function() {
 | |
|                 $.ajax({
 | |
|                   url: createURL('listSystemVms'),
 | |
|                   success: function(data) {
 | |
|                     var systemVMs = data.listsystemvmsresponse.systemvm;
 | |
| 
 | |
|                     if (systemVMs && systemVMs.length > 1) {
 | |
|                       if (systemVMs.length == $.grep(systemVMs, function(vm) {
 | |
|                         return vm.state == 'Running';
 | |
|                       }).length) {
 | |
|                         clearInterval(poll);
 | |
|                         message('System VMs ready.');
 | |
|                         setTimeout(pollBuiltinTemplates, 500);
 | |
|                       }
 | |
|                     }
 | |
|                   }
 | |
|                 });
 | |
|               }, 5000);
 | |
|             };
 | |
| 
 | |
|             // Wait for builtin template to be present -- otherwise VMs cannot launch
 | |
|             var pollBuiltinTemplates = function() {
 | |
|               message('Waiting for builtin templates to load...');
 | |
|               var poll = setInterval(function() {
 | |
|                 $.ajax({
 | |
|                   url: createURL('listTemplates'),
 | |
|                   data: {
 | |
|                     templatefilter: 'all'
 | |
|                   },
 | |
|                   success: function(data) {
 | |
|                     var templates = data.listtemplatesresponse.template ?
 | |
|                       data.listtemplatesresponse.template : [];
 | |
|                     var builtinTemplates = $.grep(templates, function(template) {
 | |
|                       return template.templatetype == 'BUILTIN';
 | |
|                     });
 | |
| 
 | |
|                     if (builtinTemplates.length) {
 | |
|                       clearInterval(poll);
 | |
|                       message('Your CloudStack is ready!');
 | |
|                       setTimeout(success, 1000);
 | |
|                     }
 | |
|                   }
 | |
|                 });
 | |
|               }, 5000);
 | |
|             };
 | |
| 
 | |
|             enableZone();
 | |
|           }
 | |
|         }
 | |
|       }));
 | |
|     }
 | |
|   };
 | |
| }(jQuery, cloudStack));
 |