文前说明
作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。
本文仅供学习交流使用,侵权必删。
不用于商业目的,转载请注明出处。
分析整理的版本为 Ovirt 4.2.3 版本。
-
utils 工具包,主要封装了 engine 代码中常用的公共工具类(与业务不相关)。
-
uutils 工具包,主要封装了通用的公共工具类(与业务不相关)。
-
tools 工具包,主要封装了 engine 代码中的工具类(与业务相关)。
1. 工程引用
工程名 |
说明 |
aaa.jar |
用于认证与权限 |
benchmarks.jar |
用于基准测试 |
bll.ejb |
主要负责业务逻辑处理 |
branding.jar |
用于品牌化定制处理 |
dal.jar |
数据库层相关 |
docs.war |
文档处理相关 |
frontend.jar |
前端 GWTP 代码 |
gwt-extension.jar |
前端扩展 |
interface-common-jaxrs.jar |
RestApi 常用类 |
logger.jar |
日志相关 |
restapi-jaxrs.jar |
RestApi 相关 |
restapi-types.jar |
RestApi 模型相关(Mapper) |
root-war.war |
根目录工程 |
scheduler.jar |
调度相关 |
searchbackend.jar |
内部搜索相关 |
services.war |
服务相关 |
tools.jar |
工具类相关 |
工程名 |
说明 |
extensions-tool.jar |
扩展工具类相关 |
restapi-jaxrs.jar |
RestApi 相关 |
services.war |
服务相关 |
sso-client-registration-tool.jar |
SSO 客户端注册工具类相关 |
utils.jar |
公共工具类相关 |
2. 功能整理
2.1 org.ovirt.engine.core.utils
2.1.1 CertificateSubjectHelper 证书处理
方法名 |
参数 |
参数说明 |
方法说明 |
getCertificateSubject |
String hostName |
主机名称 |
获取证书主题,O 和 CN。 |
2.1.2 CollectionUtils 集合工具
方法名 |
参数 |
参数说明 |
方法说明 |
pairsToMap |
List<Pair<U, V>> pairList |
成对列表 |
成对列表转 Map。 |
nullToEmptyList |
List<T> list |
列表 |
如果列表为 NULL,返回空列表;否则返回本身。 |
2.1.3 CorrelationIdTracker 线程 ID 日志跟踪
方法名 |
参数 |
参数说明 |
方法说明 |
setCorrelationId |
correlation |
线程 ID |
在 MDC 中设置关键字为 ovirtCorrelationId 的线程 ID。 |
getCorrelationId |
- |
- |
从 MDC 中获取关键字为 ovirtCorrelationId 的线程 ID。 |
clean |
- |
- |
清除所有关键字为 ovirtCorrelationId 的 MDC。 |
2.1.4 DisjointRanges 不交叉范围处理
- 给出一个范围起始值和范围结束值的列表,遍历该列表,如果发现范围有交叉,则合并两范围。
方法名 |
参数 |
参数说明 |
方法说明 |
addRanges |
List<LongRange> ranges |
范围对象列表 |
增加到不交叉范围列表中。 |
addRange |
long from, long to |
范围初始值;范围结束值 |
增加到不交叉范围列表中。 |
getRanges |
- |
- |
返回不交叉范围集合。 |
2.1.5 EngineLocalConfig 配置文件加载类
- 配置文件路径 /usr/share/ovirt-engine/services/ovirt-engine/ovirt-engine.conf。
- 主要用于获取配置文件中的配置信息。
2.1.6 ErrorTranslatorImpl 错误提示信息资源文件解析
- 解析 AppErrors.properties 和 VdsmErrors.properties 错误提示信息资源文件,进行国际化处理。
2.1.7 JsonHelper 用于 JSON 处理
方法名 |
参数 |
参数说明 |
方法说明 |
objectToJson |
Object input, boolean prettyPrint |
转换对象 |
对象转 JSON 格式字符串。 |
mapToJson |
Map<String, Object> input, boolean prettyPrint |
Map 对象 |
Map 对象转 JSON 格式字符串。 |
jsonToMap |
String jsonString |
JSON 格式字符串 |
JSON 格式字符串转 Map 对象。 |
jsonToList |
String jsonString |
JSON 格式字符串 |
JSON 格式字符串转列表。 |
2.1.8 NameForVmInPoolGenerator 池中虚拟机名称生成
方法名 |
参数 |
参数说明 |
方法说明 |
generateVmName |
- |
- |
根据虚拟机池名称,生成池中虚拟机名称。 |
2.1.9 OvfUtils 用于 Ovf 的处理
2.1.10 PKIResources 用于 engine 和 CA 证书的创建。
方法名 |
参数 |
参数说明 |
方法说明 |
getCaCertificate |
- |
- |
获得 CA 证书 |
getEngineCertificate |
- |
- |
获得 engine 证书 |
2.1.11 ReflectionUtils 用于反射工具
方法名 |
参数 |
参数说明 |
方法说明 |
findConstructor |
Class<T> type,Class<?>... expectedParams |
反射的 class;参数 class 列表 |
根据 class 类型常找参数一致的构造函数。 |
getGetterMethodNames |
Object o |
对象实例 |
获取对象实例所有 get 方法名称列表。 |
getLoggableMethodWithNoArgs |
Object o, String name |
对象实例;方法名称 |
跟方法名称获取对象实例的无参方法对象 Method。 |
invokeMethodWithNoArgs |
Object o, String name |
对象实例;方法名称 |
执行实例对象的无参方法 name。 |
getClassFor |
String className |
class 名称 |
根据 class 名称得到 Class。 |
2.1.12 ResourceUtils 资源文件工具
- 使用
getClassLoader().getResourceAsStream
方法加载。
方法名 |
参数 |
参数说明 |
方法说明 |
loadProperties |
Class<?> cls, String name |
资源文件所在 Class 路径;资源文件名称 |
资源文件与某 Class 类,放在工程下同一目录,通过 Class 类名和资源文件名称,加载资源文件。 |
2.1.13 StringMapUtils 字符串转 Map
方法名 |
参数 |
参数说明 |
方法说明 |
string2Map |
String str |
字符串 |
固定格式字符串转 Map |
{key1=value1,key2=value2,key3}
2.1.14 ThreadUtils 线程工具类
方法名 |
参数 |
参数说明 |
方法说明 |
sleep |
long milliseconds |
睡眠时间(单位毫秒) |
设置线程睡眠 |
2.1.15 Ticketing 动态口令生成类
方法名 |
参数 |
参数说明 |
方法说明 |
generateOTP |
- |
- |
动态口令生成 |
- 该方法用于控制台连接
SetVmTicket
命令,传递的动态口令参数生成。
2.1.16 VmInitUtils 虚拟机网络初始工具类
方法名 |
参数 |
参数说明 |
方法说明 |
jsonNetworksToList |
String jsonNetworks |
虚拟机网络 JSON 格式字符串 |
将虚拟机网络 JSON 格式字符串转为 VmInitNetwork 对象列表。 |
networkListToJson |
List<VmInitNetwork> networkList |
VmInitNetwork 对象列表 |
VmInitNetwork 对象列表转为 JSON 格式字符串。 |
2.1.17 XmlUtils XML 工具类
方法名 |
参数 |
参数说明 |
方法说明 |
loadXmlDoc |
String xmlString |
XML 字符串 |
将 XML 字符串转为 Document 对象。 |
getIntValue |
Element element, String tagName |
节点对象;标签名称 |
根据标签名称和节点对象得到值,再将值强转为整型。 |
getTextValue |
Element element, String tagName |
节点对象;标签名称 |
根据标签名称和节点对象得到值。 |
2.2 org.ovirt.engine.core.utils.archivers.tar
2.2.1 Tar 打包工具类
方法名 |
参数 |
参数说明 |
方法说明 |
doTar |
OutputStream os,File base |
Tar 包输出流;需要打包的目录文件 |
对目标文件/目录打包。 |
2.3 org.ovirt.engine.core.utils.collections
2.3.1 DefaultValueMap 扩展支持默认值的 Map
方法名 |
参数 |
参数说明 |
方法说明 |
put |
String key, Object value, String def |
Key;值;默认值 |
当值为空时,添加默认值。 |
putIfNotEmpty |
String key, Object value |
Key;值 |
当值为空或者空字符串时,不进行添加。 |
2.4 org.ovirt.engine.core.utils.crypt
2.4.1 EngineEncryptionUtils engine 密钥密钥工具类
方法名 |
参数 |
参数说明 |
方法说明 |
encrypt |
String source |
未加密字符串 |
加密传递的字符串(用 RSA 加密算法,使用 engine 证书) |
decrypt |
String source |
加密字符串 |
解密传递的字符串 |
2.5 org.ovirt.engine.core.utils.log
2.5.1 LoggedUtils 日志工具类
方法名 |
参数 |
参数说明 |
方法说明 |
logError |
Logger log, String id, Object obj, Throwable t |
日志对象;错误对象ID;错误对象;异常信息 |
打印错误日志。 |
logReturn |
Logger log, String id, Object obj, Object returnValue |
日志对象;执行对象ID;执行对象;返回对象 |
输出执行对象返回日志,如 vdc 调用等。 |
2.6 org.ovirt.engine.core.utils.pm
2.6.1 FenceConfigHelper 电源管理配置参数相关
方法名 |
参数 |
参数说明 |
方法说明 |
getFenceConfigurationValue |
String key, String version |
Key;版本 |
获取电源管理某个设置的所有配置参数的值。 |
2.7 org.ovirt.engine.core.utils.threadpool
2.7.1 ThreadPoolUtil 线程池工具类
方法名 |
参数 |
参数说明 |
方法说明 |
execute |
Runnable command |
线程对象 |
运行线程 |
execute |
FutureTask<V> command |
线程任务 |
执行线程任务 |
invokeAll |
Collection<? extends Callable<T>> tasks |
给定任务 |
执行给定的任务,返回结果列表 |
2.8 org.ovirt.engine.core.uutils.crypto
2.8.1 CryptMD5 MD5 加密工具类
方法名 |
参数 |
参数说明 |
方法说明 |
crypt |
String password |
需要加密字符串 |
加密 |
crypt |
String password, String salt |
需要加密字符串;加密密钥(最长 8 位) |
加密 |
2.8.2 EnvelopeEncryptDecrypt 内容传输(信封)加密工具类
方法名 |
参数 |
参数说明 |
方法说明 |
encrypt |
String algo,int bits,Certificate cert,int blockSize,byte[] content |
使用的密码算法;密钥的位数;加密证书(使用公钥包装密钥);将内容大小转为块大小(块大小);需要加密的内容 |
加密 |
decrypt |
KeyStore.PrivateKeyEntry pkeyEntry,String blob |
用于解密的私钥对象(证书与密钥);需要解密的内容 |
解密 |
2.8.3 EnvelopePBE 基于口令加密算法工具类
-
PBE 算法(Password Based Encryption,基于口令加密)是一种基于口令的加密算法,其特点是使用口令代替了密钥,而口令由用户自己掌管,采用随机数杂凑多重加密等方法保证数据的安全性。
方法名 |
参数 |
参数说明 |
方法说明 |
encode |
String algorithm, int keySize, int iterations, String randomProvider, String password |
采用的算法;加密密钥的大小;迭代次数;随机数算法(默认为 NativePRNG);需要加密的字符串 |
加密 |
check |
String blob, String password |
已加密的内容;未加密字符串 |
比对是否一致 |
2.9 org.ovirt.engine.core.uutils.ssh
2.9.1 OpenSSHUtils SSH 工具类
方法名 |
参数 |
参数说明 |
方法说明 |
decodeKeyString |
final String key |
公钥字符串 |
将公钥字符串转为实际的公钥 |
getKeyBytes |
final PublicKey key |
公钥 |
将公钥转为 SSH 格式 |
getKeyString |
final PublicKey key, String alias |
公钥;别名 |
将公钥转为授权密钥(使用 SSH 格式) |
isPublicKeyValid |
String publicKey |
公钥 |
检查公钥是否正确 |
arePublicKeysValid |
String publicKeys |
公钥 |
检查公钥是否正确 |
2.10 org.ovirt.engine.core.config
2.10.1 EngineConfigUtils engine 配置文件工具类
方法名 |
参数 |
参数说明 |
方法说明 |
locateFileInPaths |
String... paths |
配置文件路径集合 |
根据给出的配置文件路径集合,返回第一个查找到的配置文件对象 |
网友评论