Vijava 学习笔记 删除虚拟机(delete Virtual Machine)

本文详细介绍了如何使用特定代码实现虚拟机的删除操作,包括请求构建、虚拟机查找、状态验证及销毁任务执行等关键步骤。同时,阐述了在虚拟机删除过程中可能遇到的异常情况及其处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源代码:

package com.vmware.transfar.test;

import com.vmware.transfar.request.Request;
import com.vmware.transfar.request.VirtualMachineOperate;
import com.vmware.transfar.service.impl.ResourceOperateServiceImp;

/**
 * 删除虚拟机
 * @author zhb
 *
 */
public class TestDeleteVm {
    public static void main(String[] args){
        ResourceOperateServiceImp imple=new ResourceOperateServiceImp();
        Request request = new Request();
        request.setCommandName("deleteVm"); //
        request.setRequestFlag("hello delete vm");
        VirtualMachineOperate vm = new VirtualMachineOperate();
        request.setVirtualMachineOperate(vm);
        vm.setOperateType("delete");
        vm.setVmname("vm7");
        vm.setVmProdId("vm7");    
        imple.<span style="color:#ff0000;">deleteVm</span>(request);//删除指定名称的虚拟机
    }
}


ResourceOperateServiceImp 类的deleteVm 方法

/**
	 * 删除虚拟机
	 * @param request
	 * @return
	 */

	public Response deleteVm(Request request) {
		Response response = createResponse(request);
		ServiceInstance serviceInstance = null;
		try{

			serviceInstance = Session.getInstance("192.168.0.22", "administrator@vsphere.local", "Vixuan12#");

			VirtualMachine vm = <span style="color:#ff0000;">ResourceOperatePublic.getVirtualMachine</span>(serviceInstance,request.getVirtualMachineOperate());		 //查找指定名称的虚拟机
			if(!vm.getRuntime().getPowerState().name().equalsIgnoreCase(VirtualMachinePowerState.poweredOff.name()))//判断虚拟机是否断电
				throw new ResPoolException("",ResPoolException.VM_POWER_ERR); 
			Task task = vm.destroy_Task();//执行指定虚拟机的销毁工作。
			String result =task.waitForMe();
		    if(result == Task.SUCCESS)  
		    { 

			    response.setResultFlag(IMessageHandleService.SUCCESS);
			    response.setResultMessage("ɾ�������("+request.getVirtualMachineOperate().getVmname()+")�ɹ�!");

		    }else  
		    { 

		    	response.setResultFlag(IMessageHandleService.FAILURE);
		    	response.setResultMessage("ɾ�������("+request.getVirtualMachineOperate().getVmname()+")ʧ��!"); 
		    }
		}catch(ManagedObjectNotFound e){

			response.setResultFlag(IMessageHandleService.FAILURE);
	    	response.setResultMessage("�����("+request.getVirtualMachineOperate().getVmname()+")����ʧ�ܣ������Ҳ���!");
    	}catch(ResPoolException resPoolException){ 

			response.setResultFlag(IMessageHandleService.FAILURE);
	    	response.setResultMessage("�����("+request.getVirtualMachineOperate().getVmname()+")ɾ��ʧ��,"+resPoolException.getMessage());
		}catch(Exception e)
		{

			response.setResultFlag(IMessageHandleService.FAILURE);
	    	response.setResultMessage("ɾ�������("+request.getVirtualMachineOperate().getVmname()+")ʧ��!");
		}finally
		{
			serviceInstance.getServerConnection().logout();
		}
	    return response;
	}

<span style="color:#ff0000;">ResourceOperatePublic 类的 getVirtualMachine()方法 获取指定名称虚拟机对象</span>
	/**
	 * 得取虚拟机
	 * @return
	 * @throws Exception
	 */
    public static VirtualMachine getVirtualMachine(ServiceInstance serviceInstance,VirtualMachineOperate vm) throws ResPoolException
    {
    	VirtualMachine result = null;
    	try
    	{ 

			Folder rootFolder = serviceInstance.getRootFolder();
			InventoryNavigator	inventoryNavigator=new InventoryNavigator(rootFolder);
			result = (VirtualMachine) new InventoryNavigator(
					rootFolder).searchManagedEntity("VirtualMachine", vm.getVmname());
    		result.getName();
    	}catch(RuntimeException e)
    	{
    		throw new ResPoolException("δ�ܵ�ȡ���������!",ResPoolException.HOST_NO_FIND);
    	}catch(Exception e)
    	{ 
    		throw new ResPoolException("��ȡ���������("+vm.getVmname()+")ʧ��:"+e.getMessage(),ResPoolException.VM_NO_FIND);
    	}  
    	return result;
    } 




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值