Merge pull request #4 from cloudbuilders/fix_instance_launch
Fix instance launch
This commit is contained in:
		@@ -45,6 +45,9 @@ LOG = logging.getLogger('django_openstack.dash')
 | 
			
		||||
class LaunchForm(forms.SelfHandlingForm):
 | 
			
		||||
    image_id = forms.CharField(widget=forms.HiddenInput())
 | 
			
		||||
    name = forms.CharField(max_length=80, label="Server Name")
 | 
			
		||||
    user_data = forms.CharField(widget=forms.Textarea,
 | 
			
		||||
                                label="User Data",
 | 
			
		||||
                                required=False)
 | 
			
		||||
 | 
			
		||||
    # make the dropdown populate when the form is loaded not when django is
 | 
			
		||||
    # started
 | 
			
		||||
@@ -56,14 +59,22 @@ class LaunchForm(forms.SelfHandlingForm):
 | 
			
		||||
                label="Flavor",
 | 
			
		||||
                help_text="Size of Image to launch")
 | 
			
		||||
 | 
			
		||||
        keynamelist = kwargs.get('initial', {}).get('keynamelist', [])
 | 
			
		||||
        self.fields['key_name'] = forms.ChoiceField(choices=keynamelist,
 | 
			
		||||
                label="Key Name",
 | 
			
		||||
                help_text="Which keypair to use for authentication")
 | 
			
		||||
 | 
			
		||||
    def handle(self, request, data):
 | 
			
		||||
        image_id = data['image_id']
 | 
			
		||||
        try:
 | 
			
		||||
            image = api.compute_api(request).images.get(image_id)
 | 
			
		||||
            flavor = api.compute_api(request).flavors.get(data['flavor'])
 | 
			
		||||
            api.compute_api(request).servers.create(data['name'],
 | 
			
		||||
            api.extras_api(request).servers.create(data['name'],
 | 
			
		||||
                                                   image,
 | 
			
		||||
                                                    flavor)
 | 
			
		||||
                                                   flavor,
 | 
			
		||||
                                                   user_data=data['user_data'],
 | 
			
		||||
                                                   key_name=data.get('key_name'))
 | 
			
		||||
 | 
			
		||||
            messages.success(request, "Instance was successfully\
 | 
			
		||||
                                       launched.")
 | 
			
		||||
            return shortcuts.redirect(request.build_absolute_uri())
 | 
			
		||||
@@ -119,11 +130,20 @@ def launch(request, tenant_id, image_id):
 | 
			
		||||
        except:
 | 
			
		||||
            return [(1, 'm1.tiny')]
 | 
			
		||||
 | 
			
		||||
    def keynamelist():
 | 
			
		||||
        try:
 | 
			
		||||
            fl = api.extras_api(request).keypairs.list()
 | 
			
		||||
            sel = [(f.key_name, f.key_name) for f in fl]
 | 
			
		||||
            return sel
 | 
			
		||||
        except:
 | 
			
		||||
            return []
 | 
			
		||||
 | 
			
		||||
    image = api.compute_api(request).images.get(image_id)
 | 
			
		||||
    tenant = api.get_tenant(request, request.user.tenant)
 | 
			
		||||
 | 
			
		||||
    form, handled = LaunchForm.maybe_handle(
 | 
			
		||||
            request, initial={'flavorlist': flavorlist(),
 | 
			
		||||
                              'keynamelist': keynamelist(),
 | 
			
		||||
                              'image_id': image_id})
 | 
			
		||||
    if handled:
 | 
			
		||||
        return handled
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user