Vijava 学习笔记之 DataStore(基础配置信息)

2023-11-14

vijava 代码

实体类

package com.vmware.pojo;

import java.util.ArrayList;
import java.util.Calendar;

/**
 * 存储信息
 * @author zhb
 */

public class HostDatastoreInfo extends Entity{
    private String name; //名称
    private String url;  //定位数据存储
    private long freeSpace;  //剩余空间容量 单位:byte
    private long maxFileSize; //最大文件容量 单位:byte
    private long capacity;//容量
    private String accessible; //连接状态
    private String uuid;//特定id
    private Calendar timestamp; //空间剩余空间更新时间
    private ArrayList<HostDatastoreMountInfo> hostMounts = new ArrayList<HostDatastoreMountInfo>();//挂载主机相关信息
    private ArrayList<VirtualVmFile> vmFiles = new ArrayList<VirtualVmFile>();//虚拟机文件
    private String dsType;//存储类型

    public long getFreeSpace() {
        return freeSpace;
    }
    public void setFreeSpace(long freeSpace) {
        this.freeSpace = freeSpace;
    }
    public long getMaxFileSize() {
        return maxFileSize;
    }
    public void setMaxFileSize(long maxFileSize) {
        this.maxFileSize = maxFileSize;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Calendar getTimestamp() {
        return timestamp;
    }
    public void setTimestamp(Calendar timestamp) {
        this.timestamp = timestamp;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public ArrayList<HostDatastoreMountInfo> getHostMounts() {
        return hostMounts;
    }
    public void setHostMount(HostDatastoreMountInfo hostMount){
        this.hostMounts.add(hostMount);
    }

    public void setHostMounts(ArrayList<HostDatastoreMountInfo> hostMounts) {
        this.hostMounts = hostMounts;
    }
    public ArrayList<VirtualVmFile> getVmFiles() {
        return vmFiles;
    }
    public void setVmFile(VirtualVmFile vmFile){
        this.vmFiles.add(vmFile);
    }
    public void setVmFiles(ArrayList<VirtualVmFile> vmFiles) {
        this.vmFiles = vmFiles;
    }
    public long getCapacity() {
        return capacity;
    }
    public void setCapacity(long capacity) {
        this.capacity = capacity;
    }
    public String getUuid() {
        return uuid;
    }
    public void setUuid(String uuid) {
        this.uuid = uuid;
    }
    public String getAccessible() {
        return accessible;
    }
    public void setAccessible(String accessible) {
        this.accessible = accessible;
    }
    public String getDsType() {
        return dsType;
    }
    public void setDsType(String dsType) {
        this.dsType = dsType;
    }
}
package com.vmware.pojo;

/**
 * 存储配置安装点的相关信息
 * @author Administrator
 *
 */
public class HostDatastoreMountInfo extends Entity{
    private String path;
    private String accessMode;//访问模式
    private Boolean mounted;  //挂载状态
    private Boolean accessible;  //数据存储是目前从主机访问

    public String getPath() {
        return path;
    }
    public void setPath(String path) {
        this.path = path;
    }
    public String getAccessMode() {
        return accessMode;
    }
    public void setAccessMode(String accessMode) {
        this.accessMode = accessMode;
    }
    public Boolean getMounted() {
        return mounted;
    }
    public void setMounted(Boolean mounted) {
        this.mounted = mounted;
    }
    public Boolean getAccessible() {
        return accessible;
    }
    public void setAccessible(Boolean accessible) {
        this.accessible = accessible;
    }
}
package com.vmware.pojo;

import java.util.Calendar;

/**
 * 虚拟文件
 * @author zhb
 *
 */
public class VirtualVmFile {
    private String path;
    private Long fileSize;
    private Calendar modification;
    private String owner;

    public String getPath() {
        return path;
    }
    public void setPath(String path) {
        this.path = path;
    }
    public Long getFileSize() {
        return fileSize;
    }
    public void setFileSize(Long fileSize) {
        this.fileSize = fileSize;
    }
    public Calendar getModification() {
        return modification;
    }
    public void setModification(Calendar modification) {
        this.modification = modification;
    }
    public String getOwner() {
        return owner;
    }
    public void setOwner(String owner) {
        this.owner = owner;
    }
}

逻辑层:

package com.vmware.HostSystemOption;

import com.vmware.pojo.HostDatastoreInfo;
import com.vmware.pojo.HostDatastoreMountInfo;
import com.vmware.pojo.VirtualVmFile;
import com.vmware.vim25.*;
import com.vmware.vim25.mo.Datastore;
import com.vmware.vim25.mo.HostDatastoreBrowser;
import com.vmware.vim25.mo.Task;
import java.util.ArrayList;

/**
 * Created by vixuan-008 on 2015/4/27.
 */
public class HostSystemDataStoreFound {

    /**
     * 获取HostSystem存储信息
     * @param datastore
     * @return
     */
    public HostDatastoreInfo setDatastore(Datastore datastore,boolean isDiscoveryVmFile)
    {
        HostDatastoreInfo hostDatastore = new HostDatastoreInfo();
        hostDatastore.setName(datastore.getSummary().getName());
        hostDatastore.setUrl(datastore.getSummary().getUrl());
        hostDatastore.setMaxFileSize(datastore.getInfo().getMaxFileSize());
        hostDatastore.setFreeSpace(datastore.getSummary().getFreeSpace());
        hostDatastore.setTimestamp(datastore.getInfo().getTimestamp());
        hostDatastore.setCapacity(datastore.getSummary().getCapacity()); //容量
        hostDatastore.setProgId(datastore.getMOR().val);
        hostDatastore.setAccessible("0"); //连接状态
        hostDatastore.setDsType(datastore.getSummary().getType());
        if(datastore.getSummary().isAccessible())
            hostDatastore.setAccessible("1");
        if(datastore.getHost()!=null)
            for(int j=0;j<datastore.getHost().length;j++)
            {
                HostMountInfo hostMountInfo = datastore.getHost()[j].getMountInfo();
                HostDatastoreMountInfo hostDatastoreMount = new HostDatastoreMountInfo();
                hostDatastoreMount.setPath(hostMountInfo.getPath());
                hostDatastoreMount.setAccessible(hostMountInfo.getAccessible());
                hostDatastoreMount.setAccessMode(hostMountInfo.getAccessMode());
                hostDatastoreMount.setMounted(hostMountInfo.getMounted());
                hostDatastore.setHostMount(hostDatastoreMount);
            }
        if(isDiscoveryVmFile) //是否发现数据源虚拟文件
        {
            ArrayList<VirtualVmFile> vmFiles = getDatastoreVmFile(datastore);
            hostDatastore.setVmFiles(vmFiles);
        }
        return hostDatastore;
    }


    /**
     * 得取数据存储下面虚拟机文件,也就是虚拟磁盘
     * @param datastore
     * @return
     */

    public ArrayList<VirtualVmFile> getDatastoreVmFile(Datastore datastore){
        ArrayList<VirtualVmFile> result = new ArrayList<VirtualVmFile>();
        try{

            HostDatastoreBrowser dsBrowser = datastore.getBrowser();
            DatastoreSummary ds =  datastore.getSummary();
            String dsName = ds.getName();
            VmDiskFileQueryFilter vdiskFilter = new VmDiskFileQueryFilter();
            vdiskFilter.setControllerType(new String [] {});
            VmDiskFileQuery fQuery = new VmDiskFileQuery();
            fQuery.setFilter(vdiskFilter);
            HostDatastoreBrowserSearchSpec searchSpec = new HostDatastoreBrowserSearchSpec();
            searchSpec.setQuery(new FileQuery []{fQuery});
            Task task = dsBrowser.searchDatastoreSubFolders_Task("["+dsName+"]", searchSpec);
            task.waitForMe();
            TaskInfo tInfo = task.getTaskInfo();
            ArrayOfHostDatastoreBrowserSearchResults searchResult = (ArrayOfHostDatastoreBrowserSearchResults)tInfo.getResult();
            int len = searchResult.getHostDatastoreBrowserSearchResults().length;
            for(int j=0 ; j<len; j++)
            {
                HostDatastoreBrowserSearchResults sres =  searchResult.HostDatastoreBrowserSearchResults[j];
                FileInfo [] fileArray = sres.getFile();
                if(fileArray == null) continue;
                for(int k=0 ; k<fileArray.length; k++)
                {
                    VirtualVmFile vmFile = new VirtualVmFile();
                    vmFile.setFileSize(fileArray[k].getFileSize());
                    vmFile.setModification(fileArray[k].getModification());
                    vmFile.setOwner(fileArray[k].getOwner());
                    vmFile.setPath(fileArray[k].getPath());
                    result.add(vmFile);
                }
            }
        }catch(Exception e)
        {

        }
        return result;
    }

}

测试代码:

package com.vmware.main;


import com.vmware.pojo.HostDatastoreInfo;
import com.vmware.util.Session;
import com.vmware.vim25.mo.*;
import com.vmware.HostSystemOption.HostSystemDataStoreFound;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by vixuan-008 on 2015/4/27.
 */
public class HostSystemDataStoreTest {
    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;
            }
            //指定服务器:HostSystem 关联的Datastore
            Datastore[] datastores= hostSystem.getDatastores();
            List<HostDatastoreInfo> list=new ArrayList<HostDatastoreInfo>();
            HostSystemDataStoreFound hostSystemDataStoreFound=new HostSystemDataStoreFound();
            for(int i=0;i<datastores.length;i++){
                Datastore datastore =datastores[i];
                HostDatastoreInfo hostDatastoreInfo=hostSystemDataStoreFound.setDatastore(datastore,false);
                list.add(hostDatastoreInfo);
            }

            //datastore 数量
            System.out.println("size is:"+list.size());
            for(int j=0;j<list.size();j++){
                HostDatastoreInfo datastoreInfo=list.get(j);
                System.out.println("------------start-----------------------");
                System.out.println("name:"+datastoreInfo.getName());
                System.out.println("------------end-----------------------");
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

效果展示:




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vijava 学习笔记之 DataStore(基础配置信息) 的相关文章

随机推荐

  • Linux 下的两个特殊的文件 -- /dev/null 和 /dev/zero 简介及对比

    Linux 下的两个特殊的文件 dev null 和 dev zero 简介及对比 分类 Linux 内核知识学习 总结 2013 10 22 17 00 279人阅读 评论 0 收藏 举报 Linux devnull devzero 目录
  • Spring框架(IOC)

    一 什么是 IOC 1 控制反转 把对象创建和对象之间的调用过程 交给 Spring 进行管理 2 使用 IOC 目的 为了耦合度降低 二 IOC 底层原理 xml 解析 工厂模式 反射 三 IOC过程 xml解析帮助我们得到xml文件中我
  • Windows下zerotier托盘程序 DesktopUI 编译步骤

    Windows下面zerotier托盘程序 DesktopUI 编译步骤 1 安装windows下的 gcc make cargo 工具 2 下载源码 https github com zerotier DesktopUI git 3 cd
  • 命令行下使用CL.exe编译多cpp文件工程

    一 CL exe是控制 Microsoft C 和 C 编译器与链接器的 32 位工具 编译器产生通用对象文件格式 COFF 对象 obj 文件 链接器产生可执行文件 exe 或动态链接库文件 DLL 用法如下 注意 所有编译器选项都区分大
  • [Git专题] 环境搭建

    环境搭建 在正式使用 Git 之前 首先应当安装 Git 并完成一些基础配置 本章内容就教大家在 Ubuntu 和 CentOS 上安装 Git 的方法 安装 Git 客户端 如果你使用的是基于 Debian 的 Linux 发行版本 那么
  • SpringBoot+redis RedisTemplate/jedis 配置多个数据源 灵活切库 选择库

    目录 1 这里也介绍两种方式 一种是redis的 RedisTemplate 另一种是jedis 大家需要哪一种 自己选择 2 这里先说redis 的 RedisTemplate 1 加入依赖并在在yml 文件里面加入配置 2 添加配置文件
  • 推荐106个软件工程本科的计算机毕业设计,有手就会

    对于即将面临毕业设计的计算机专业学生来说 如何选题和成功完成项目是一个艰难的问题 今天 我们将与大四的学生分享一些毕业设计项目 希望能为你提供一些帮助 一 成品列表 以下所有springboot框架项目的源码博主已经打包好上传到百du云了
  • Java操作Excel - Easy Excel

    一 介绍 官网 https easyexcel opensource alibaba com EasyExcel是阿里巴巴开源的 一个基于Java的 快速 简洁 解决大文件内存溢出的Excel处理工具 他能让你在不用考虑性能 内存的等因素的
  • 抖音跳微信小程序(抖音分享卡片和链接)图文教程

    序 1 本博文参考一下资料 获取接口调用凭据 微信开放文档 获取scheme码 微信开放文档 获取授权帐号调用令牌 微信开放文档 用H5打开微信小程序 weixin 46746389的博客 CSDN博客 2 注意 只能是企业认证的小程序才可
  • Vue面试系列之十:watch和computed的区别以及怎么选用

    1 区别 1 1 定义 语义区别 watch
  • 函数模板与普通函数的区别

    函数模板与普通函数的区别 1 普通函数调用时可以发生自动类型转换 隐式转换 2 函数模板调用时 如果利用自动类型推导 不会发生隐式类型转换 3 如果利用显示指定类型的方式 可以发生隐式类型转换 代码示例 include
  • Java物联网方向_物联网专业课程安排——未来主要方向之一

    课程1 物联网产业与技术导论 使用电子工业出版社 物联网 技术 应用 标准 安全与商业模式 等等教材 在学完高等数学 物理 化学 通信原理 数字电路 计算机原理 程序设计原理等课程后开设本课程 全面了解物联网之RFID M2M 传感网 两化
  • 关于加法溢出问题

    开个题目 关于加法溢出问题 以后想到什么情况就在这里更新吧 1 freeRTOS 的时钟节拍函数 要实现一个定时任务A 当前时钟节拍计数器xTickCount 需要延时的时钟节拍 delayTick 延时的时钟节拍时间点tickTime 由
  • 05智慧杆塔

    一张图读懂一个产业之智慧杆塔 智慧杆塔是综合承载多种设备和传感器并具备智慧能力的杆 塔等设施的总称 包括但不限于通信杆 塔 路灯杆和监控杆 智慧杆塔具备的功能由其挂载的设备和传感器决定 这些设备和传感器可通过各种通信技术接入网络和平台 并在
  • R语言实用教程薛毅清华出版社课后题答案

    有R语言实用教程薛毅课后题答案习题1 5 详情请到我的页面资源查看
  • NVMe Cli 使用教程 -- NVMe Read / Write 使用实践

    1 NVMe Write Write命令的官方说明 nvme write
  • C Primer Plus 第五章 编程练习

    第五章 编程练习 5 1 题 目 编写一个程序 把用分钟的时间转换用小时和分钟表示的时间 使用 define或者const创建一个表示60的符号常量或const变量 通过while循环让用户重复输入值 直到用户输入小于或者等于0 的值才停止
  • 网络安全工程师

    岗位职责 1 分析网络现状 对网络系统进行安全评估和安全加固 设计安全的网络解决方案 2 在出现网络攻击或安全事件时 提高服务 帮助用户恢复系统及调查取证 3 针对客户网络架构 建议合理 的网络安全解决方案 4 负责协调解决方案的客户化实施
  • CISSP-安全和风险管理

    俗话说什么是网络安全 那网络安全的基本原则有哪些呢 主要是有可用性 保密性 完整性 1 那什么是可用性 可用性的话 那就是在我们的数据和资源需要随时保持能够授权用户进行访问 用户想要访问想要用的时候 你就应该能用 而不是不能用 2 那什么是
  • Vijava 学习笔记之 DataStore(基础配置信息)

    vijava 代码 实体类 package com vmware pojo import java util ArrayList import java util Calendar 存储信息 author zhb public class