VMWare创建虚拟机(二)

基于java创建虚拟机

baseUrl:vSphere地址

1.获取session

public String testSession() {
    String param = "username:password";
    String header = Base64.getEncoder().encodeToString(param.getBytes(StandardCharsets.UTF_8));
    Object ret = Forest.post(baseUrl + "/rest/com/vmware/cis/session")
            .setSslSocketFactoryBuilder(new MySSLSocketFactoryBuilder())
            .addHeader("Authorization", "Basic " + header)
            .execute();

    JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(ret));
    System.out.println(jsonObject);
    return jsonObject.getString("value");
}

2.获取 Datacenter

@Test
public void testGetDatacenter(){
    String session = testSession();
    String url = baseUrl + "/rest/vcenter/datacenter";
    Object ret = Forest.get(url)
            .setSslSocketFactoryBuilder(new MySSLSocketFactoryBuilder())
            .addHeader("vmware-api-session-id", session)
            .execute();
    JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(ret));
    System.out.println(jsonObject);
}

 3.获取Datastore

@Test
public void testGetDatastore(){
    String session = testSession();
    String url = baseUrl + "/rest/vcenter/datastore";
    Object ret = Forest.get(url)
            .setSslSocketFactoryBuilder(new MySSLSocketFactoryBuilder())
            .addHeader("vmware-api-session-id", session)
            .execute();
    JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(ret));
    System.out.println(jsonObject);
}

4.获取Folder

@Test
public void testGetFolder(){
    String session = testSession();
    String url = baseUrl + "/rest/vcenter/folder";
    Object ret = Forest.get(url)
            .setSslSocketFactoryBuilder(new MySSLSocketFactoryBuilder())
            .addHeader("vmware-api-session-id", session)
            .addQuery("filter.type", "VIRTUAL_MACHINE")
            .execute();
    JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(ret));
    System.out.println(jsonObject);
}

5.获取Host

@Test
public void testGetHost(){
    String session = testSession();
    String url = baseUrl + "/rest/vcenter/host";
    Object ret = Forest.get(url)
            .setSslSocketFactoryBuilder(new MySSLSocketFactoryBuilder())
            .addHeader("vmware-api-session-id", session)
            .execute();
    JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(ret));
    System.out.println(jsonObject);
}

6.获取Network

@Test
public void testGetNetwork(){
    String session = testSession();
    String url = baseUrl + "/rest/vcenter/network";
    Object ret = Forest.get(url)
            .setSslSocketFactoryBuilder(new MySSLSocketFactoryBuilder())
            .addHeader("vmware-api-session-id", session)
            .addQuery("filter.names", "b3369eb6-91a6-4387-8ca5-9ac90537d99e")
            .execute();
    JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(ret));
    JSONArray jsonArray = jsonObject.getJSONArray("value");
    JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(jsonArray.get(0)));
    String network = json.getString("network");
    System.out.println(network);
    System.out.println(jsonObject);
}

7.创建vm

@Test
    public void vmTest() throws Exception {
        VMCreateSpec vm = new VMCreateSpec();
        //虚拟机名称
        vm.setName("test-s");
        //操作系统
        vm.setGuest_OS("COREOS_64");
        //虚拟机硬件版本
        vm.setHardware_version("VMX_17");
        //虚拟机安置信息
        PlacementSpec placementSpec = new PlacementSpec();
        placementSpec.setHost("host-4049");
        placementSpec.setDatastore("datastore-4050");
        placementSpec.setFolder("group-v4040");
        vm.setPlacement(placementSpec);
        //cpu信息
        CpuSpec cpuSpec = new CpuSpec();
        cpuSpec.setCount(1);
        cpuSpec.setCores_per_socket(1);
        cpuSpec.setHot_add_enabled(false);
        cpuSpec.setHot_remove_enabled(false);
        vm.setCpu(cpuSpec);
        //内存信息
        MemorySpec memorySpec = new MemorySpec();
        memorySpec.setSize_MiB(2048);
        memorySpec.setHot_add_enabled(true);
        vm.setMemory(memorySpec);
        //磁盘信息
        DiskSpec diskSpec = new DiskSpec();
        diskSpec.setType("SCSI");
        /* TODO 注释部分为新建磁盘
        DiskSpec.VmdkSpec vmdkSpec = new DiskSpec.VmdkSpec();
        vmdkSpec.setCapacity(20 * Constants.GB);
        vmdkSpec.setName("test-1");
        diskSpec.setNew_vmdk(vmdkSpec);*/
        //基于vmdk文件创建虚拟机
        DiskSpec.VmdkBacking vmdkBacking = new DiskSpec.VmdkBacking();
        vmdkBacking.setType("VMDK_FILE");
        vmdkBacking.setVmdk_file("[datastore2] test-q/test-q.vmdk");//文件路径
        diskSpec.setBacking(vmdkBacking);
        vm.setDisks(Arrays.asList(diskSpec));
        //网络信息
        EthernetSpec ethernetSpec = new EthernetSpec();
        EthernetSpec.EthernetBackingSpec ethernetBackingSpec = new EthernetSpec.EthernetBackingSpec();
        ethernetBackingSpec.setType(EthernetBackingTypeEnum.STANDARD_PORTGROUP.getStatus());
        ethernetBackingSpec.setNetwork("network-4011");
        ethernetSpec.setStart_connected(true)
                .setMac_type(MacAddressTypeEnum.GENERATED.getStatus())
                .setBacking(ethernetBackingSpec);
        vm.setNics(Arrays.asList(ethernetSpec));
        //光驱信息
//        CdromSpec cdromSpec = new CdromSpec();
//        cdromSpec.setStart_connected(true);
//        CdromSpec.CdromBackingSpec cdromBackingSpec = new CdromSpec.CdromBackingSpec();
//        cdromBackingSpec.setType(CdromBackingTypeEnum.ISO_FILE.getStatus());
//        cdromBackingSpec.setIso_file("[datastore1] iso/CentOS-7-x86_64-Minimal-1804.iso");
//        cdromSpec.setBacking(cdromBackingSpec);
//        vm.setCdroms(Arrays.asList(cdromSpec));

        JSONObject json = new JSONObject();
        json.put("spec", vm);
        System.out.println(JSONObject.toJSONString(json));
        String session = testSession();
        String url = baseUrl + "/rest/vcenter/vm";
        Object ret = Forest.post(url)
                .setSslSocketFactoryBuilder(new MySSLSocketFactoryBuilder())
                .addHeader("vmware-api-session-id", session)
                .addHeader("Content-type", "application/json")
                .addBody(JSONObject.toJSONString(json))
                .execute();
        JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(ret));

        System.out.println("返回值:::" + jsonObject);

    }

以上

为创建虚拟机代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值