Add opennebula api urls and add delete vm api
This commit is contained in:
		
					parent
					
						
							
								358d70570a
							
						
					
				
			
			
				commit
				
					
						b7e8eceb25
					
				
			
		
					 4 changed files with 19 additions and 13 deletions
				
			
		|  | @ -12,6 +12,8 @@ import debug_toolbar | ||||||
| 
 | 
 | ||||||
| urlpatterns = [   url(r'^index.html$', LandingView.as_view()), | urlpatterns = [   url(r'^index.html$', LandingView.as_view()), | ||||||
|                   url(r'^hosting/', include('hosting.urls', namespace="hosting")), |                   url(r'^hosting/', include('hosting.urls', namespace="hosting")), | ||||||
|  |                   url(r'^open_api/', include('opennebula_api.urls', | ||||||
|  |                       namespace='opennebula_api')), | ||||||
|                   url(r'^railshosting/', RailsHostingView.as_view(), name="rails.hosting"), |                   url(r'^railshosting/', RailsHostingView.as_view(), name="rails.hosting"), | ||||||
|                   url(r'^nodehosting/', NodeJSHostingView.as_view(), name="node.hosting"), |                   url(r'^nodehosting/', NodeJSHostingView.as_view(), name="node.hosting"), | ||||||
|                   url(r'^djangohosting/', DjangoHostingView.as_view(), name="django.hosting"), |                   url(r'^djangohosting/', DjangoHostingView.as_view(), name="django.hosting"), | ||||||
|  |  | ||||||
|  | @ -213,6 +213,9 @@ class OpenNebulaManager(): | ||||||
|         vm_id = self.oneadmin_client.call( |         vm_id = self.oneadmin_client.call( | ||||||
|                     oca.VmTemplate.METHODS['instantiate'], |                     oca.VmTemplate.METHODS['instantiate'], | ||||||
|                     template_id, |                     template_id, | ||||||
|  |                     '', | ||||||
|  |                     False, | ||||||
|  |                     '' | ||||||
|                 ) |                 ) | ||||||
|         try: |         try: | ||||||
|             self.oneadmin_client.call( |             self.oneadmin_client.call( | ||||||
|  | @ -226,8 +229,11 @@ class OpenNebulaManager(): | ||||||
|         return vm_id |         return vm_id | ||||||
| 
 | 
 | ||||||
|     def delete_vm(self, vm_id): |     def delete_vm(self, vm_id): | ||||||
|         vm = self._get_vm(vm_id) |         self.oneadmin_client.call( | ||||||
|         vm.delete() |                 oca.VirtualMachine.METHODS['action'],  | ||||||
|  |                 'terminate', | ||||||
|  |                 vm_id | ||||||
|  |                 ) | ||||||
| 
 | 
 | ||||||
|     def _get_template_pool(self): |     def _get_template_pool(self): | ||||||
|         try: |         try: | ||||||
|  |  | ||||||
|  | @ -98,14 +98,3 @@ class VirtualMachineSerializer(serializers.ModelSerializer): | ||||||
|     def update(self, instance, validated_data): |     def update(self, instance, validated_data): | ||||||
|         pass |         pass | ||||||
| 
 | 
 | ||||||
|     def delete(self, instance, validated_data): |  | ||||||
|         try: |  | ||||||
|             owner = instance.owner |  | ||||||
|             manager = OpenNebulaManager(email=owner.email, |  | ||||||
|                                         password=owner.password[0:20], |  | ||||||
|                                         create_user = True) |  | ||||||
|             manager.delete_vm(template_id) |  | ||||||
|         except OpenNebulaException as err: |  | ||||||
|             raise serializers.ValidationError("OpenNebulaException occured. {0}".format(err)) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|  |  | ||||||
|  | @ -49,3 +49,12 @@ class VmDetailsView(generics.RetrieveUpdateDestroyAPIView): | ||||||
| 
 | 
 | ||||||
|     queryset = VirtualMachine.objects.all() |     queryset = VirtualMachine.objects.all() | ||||||
|     serializer_class = VirtualMachineSerializer |     serializer_class = VirtualMachineSerializer | ||||||
|  | 
 | ||||||
|  |     def perform_destroy(self, instance): | ||||||
|  |         owner = instance.owner | ||||||
|  |         manager = OpenNebulaManager(email=owner.email, | ||||||
|  |                                     password=owner.password[0:20], | ||||||
|  |                                     create_user = True) | ||||||
|  |         manager.delete_vm(instance.opennebula_id) | ||||||
|  |         instance.delete() | ||||||
|  | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue