mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-11-04 00:02:37 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			359 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			359 lines
		
	
	
		
			14 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(dictionary['message.enabling.zone.dots']);
 | 
						|
                            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(dictionary['message.creating.systemVM']);
 | 
						|
                            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('message.systems.vms.ready');
 | 
						|
                                                setTimeout(pollBuiltinTemplates, 500);
 | 
						|
                                            }
 | 
						|
                                        }
 | 
						|
                                    }
 | 
						|
                                });
 | 
						|
                            }, 5000);
 | 
						|
                        };
 | 
						|
 | 
						|
                        // Wait for builtin template to be present -- otherwise VMs cannot launch
 | 
						|
                        var pollBuiltinTemplates = function() {
 | 
						|
                            message('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('message.your.cloudstack.is.ready');
 | 
						|
                                            setTimeout(success, 1000);
 | 
						|
                                        }
 | 
						|
                                    }
 | 
						|
                                });
 | 
						|
                            }, 5000);
 | 
						|
                        };
 | 
						|
 | 
						|
                        enableZone();
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }));
 | 
						|
        }
 | 
						|
    };
 | 
						|
}(jQuery, cloudStack));
 |