VmwareSDK重连虚拟机网卡

在开发我们的云管平台中,有时候发现虚拟机创建出来后,进行配置的时候,发现连接不上的问题;发现之前我们是在虚拟机创建出来后,就立即进行配置。此时虚拟机可能正处于开机状态或者某些网络相关的服务正在启动,这个时候远程是无法连接此虚拟机的。因此,改进的方案是: 在连接虚拟机进行配置之前,先验证一下网卡是否都连接好了 ,再进行后续配置。下面是检查网卡是否连通,并自动重连的代码:

public void checkVmNetworks(ServiceInstance serviceInstance,String vmId,String vmName){
    Folder rooterFolder = serviceInstance.getRootFolder();
    VirtualMachine vm = (VirtualMachine) new     InventoryNavigator(rootFolder).searchManagedEntity("VirtualMachine",vmName);
    if(null != vm){
         VirtualMachineDeviceManager vmdm = new VirtualMachineDeviceManager(vm);
         List<VirtualEthernetCard> vics = vmdm.getVirtualDeviceOfType(VirtualEthernetCard.class);
         for(VirtualEthernetCard vic:vics){
             String ethernetCardName = vic.getDeviceInfo().getLabel();
             //开机自连
             boolean startConnected = vic.getConnectable().startConnected;
             //网卡是否已连接
             boolean connected = vic.getConnectable().connected;
             if(!startConnected || !connected){
             //重连网卡
             VirtualDeviceConfigSpec vdc = new VirtualDeviceConfigSpec();
             vdc.setOperation(VirtualDeviceConfigSpecOperation.edit);
             VirtualDeviceConnectInfo vdConn = new VirtualDeviceConnectInfo();
             vdConn.setStartConnected(true);
             vdConn.setConnected(true);
             vic.setConnectable(vdConn);
             vdc.setDevice(vic);
             VirtualMachineConfigSpec vmConfigSpec = new VirtualMachineConfigSpec();
             vmConfigSpec.setDeviceChange(new VirtualDeviceConfigSpec[]{vdc});
             Task reconnectTask = vm.reconfigVM_Task(vmConfigSpec);
             String result = reconnectTask.waitForTask();
              System.out.println(result);
             }
             
         }
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值