您的位置:首页 > 编程语言 > Java开发

Vijava 学习笔记之HostSystem 包含虚拟机和虚拟网卡v

2015-04-29 11:53 591 查看
vijava 代码:

实体类:

package com.vmware.pojo;

/**
 * Created by vixuan-008 on 2015/4/24.
 */
public class VirtualNic {
    private String name;
    private String portgroup;
    private String mac;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPortgroup() {
        return portgroup;
    }

    public void setPortgroup(String portgroup) {
        this.portgroup = portgroup;
    }

    public String getMac() {
        return mac;
    }

    public void setMac(String mac) {
        this.mac = mac;
    }
}


package com.vmware.pojo;

/**
 * Created by vixuan-008 on 2015/4/24.
 */
public class VirtualSwitch {
    private  String name;
    private String mac;
    private String portgroup;

    public String getMac() {
        return mac;
    }

    public void setMac(String mac) {
        this.mac = mac;
    }

    public String getPortgroup() {
        return portgroup;
    }

    public void setPortgroup(String portgroup) {
        this.portgroup = portgroup;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void addPhysicalMAC(String key){
        if(this.mac==null){
            mac=key;
        }else{
            mac=mac+";"+key;
        }
        setMac(mac);

    }

    public void addPortgroup(String key){
        if(this.portgroup==null){
            portgroup=key;
        }else{
            portgroup=portgroup+";"+key;
        }
        setPortgroup(portgroup);
    }
}


package com.vmware.pojo;

import java.util.List;

/**
 * Created by vixuan-008 on 2015/4/24.
 */
public class NetworkInfo {
    private List<VirtualNic> vnics;//虚拟网卡
    private List<VirtualSwitch> vss;//虚拟交换机

    public List<VirtualNic> getVnics() {
        return vnics;
    }

    public void setVnics(List<VirtualNic> vnics) {
        this.vnics = vnics;
    }

    public List<VirtualSwitch> getVss() {
        return vss;
    }

    public void setVss(List<VirtualSwitch> vss) {
        this.vss = vss;
    }
}


逻辑层:
package com.vmware.HostSystemOption;

import com.vmware.pojo.NetworkInfo;
import com.vmware.pojo.VirtualNic;
import com.vmware.pojo.VirtualSwitch;
import com.vmware.vim25.*;
import com.vmware.vim25.mo.HostSystem;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by vixuan-008 on 2015/4/24.
 */
public class HostSystemNetWork {
    public NetworkInfo getNetworkInfo(HostSystem esxserver) throws Exception {
        NetworkInfo ninfo = new NetworkInfo();
        HostNetworkInfo nwi = esxserver.getConfig().getNetwork();
        HostPortGroup[] portgroups = nwi.getPortgroup();
        Map<String, String> pgMap = new HashMap<String, String>();
        for (HostPortGroup portgroup : portgroups) {
            pgMap.put(portgroup.getKey(), portgroup.getSpec().getName());
        }
        PhysicalNic[] pnics = nwi.getPnic();
        Map<String, String> pnicMap = new HashMap<String, String>();
        for (PhysicalNic pnic : pnics) {
            pnicMap.put(pnic.getKey(), pnic.getMac());
        }
        List<VirtualSwitch> vss = new ArrayList<VirtualSwitch>();
        HostVirtualSwitch[] vswtichs = nwi.getVswitch();
        for (HostVirtualSwitch vswitch : vswtichs) {
            VirtualSwitch vs = new VirtualSwitch();
            vs.setName(vswitch.getName());
            String[] macKeys = vswitch.getPnic();
            if (macKeys != null) {
                for (String key : macKeys) {
                    vs.addPhysicalMAC(pnicMap.get(key));
                }
            }
            String[] pgs = vswitch.getPortgroup();
            if (pgs != null) {
                for (String pg : pgs) {
                    vs.addPortgroup(pgMap.get(pg));
                }
            }
// TODO
            vss.add(vs);
        }
        ninfo.setVss(vss);

        List<VirtualNic> vnics = new ArrayList<VirtualNic>();
        HostVirtualNic[] virtualnics = nwi.getVnic();
        for (HostVirtualNic virtualnic : virtualnics) {
            VirtualNic vnic = new VirtualNic();
            vnic.setName(virtualnic.getDevice());
            vnic.setPortgroup(virtualnic.getPortgroup());
            vnic.setMac(virtualnic.getSpec().getMac());
            vnics.add(vnic);
        }
        ninfo.setVnics(vnics);
        return ninfo;
    }
}


测试代码:

package com.vmware.main;

import com.vmware.HostSystemOption.HostSystemNetWork;
import com.vmware.pojo.NetworkInfo;
import com.vmware.pojo.VirtualNic;
import com.vmware.pojo.VirtualSwitch;
import com.vmware.util.Session;
import com.vmware.vim25.mo.*;
import java.util.List;

/**
 * Created by vixuan-008 on 2015/4/28.
 */
public class HostSystemNetworkTest {
    public static void main(String[] args){
        try{
            String vmname="172.16.1.22";
            ServiceInstance serviceInstance= Session.getInstance("172.16.1.20", "root", "vmware");
            Folder rootFolder = serviceInstance.getRootFolder();
            HostSystem hostSystem = (HostSystem) new InventoryNavigator(
                    rootFolder).searchManagedEntity("HostSystem", vmname);
            if(hostSystem==null)
            {
                System.out.println("No VM " + vmname + " found");
                serviceInstance.getServerConnection().logout();
                return;
            }
            HostSystemNetWork hostSystemNetWork=new HostSystemNetWork();
            NetworkInfo networkInfo=hostSystemNetWork.getNetworkInfo(hostSystem);
            if(networkInfo !=null){
                //虚拟网卡
                List<VirtualNic> vnics=networkInfo.getVnics();
                if(vnics.size()>0){
                    for(VirtualNic virtualNic:vnics){
                        System.out.println("--------start-----------");
                        System.out.println("name:"+virtualNic.getName());
                        System.out.println("mac:"+virtualNic.getMac());
                        System.out.println("protgroup:"+virtualNic.getPortgroup());
                        System.out.println("--------end-----------");
                    }
                }
                //虚拟交换机
                List<VirtualSwitch> vss=networkInfo.getVss();
                if(vss.size()>0){
                    for(VirtualSwitch virtualSwitch:vss){
                        System.out.println("--------start1-----------");
                        System.out.println("name:"+virtualSwitch.getName());
                        System.out.println("mac:"+virtualSwitch.getMac());
                        System.out.println("protgroup:"+virtualSwitch.getPortgroup());
                        System.out.println("--------end1-----------");
                    }
                }
            }

        }catch (Exception e){
            e.printStackTrace();
        }
    }
}


效果展示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: