CloudStack二次开发帮助文档

1星(超过10%的资源)
所需积分/C币:9 2018-10-20 11:04:36 713KB PDF
27
收藏 收藏
举报

CloudStack二次开发帮助文档 CLOUDSTACK二次开发帮助文档 3 1. 用CLOUDSTACK的源码进行工作 3 1.1. 源码获得方式 3 2. 包与依赖 3 2.1. 包 3 2.2. 依赖 4 2.3. 未来 5 3. 异常与日志 5 3.1. 日志 5 3.2. 异常和异常捕获 6 3.3. CLOUDSTACK异常 8 4. 代码联合工作 9 4.1. 组件 9 4.2. 组件加载 10 5. CLOUDSTACK API开发 11 5.1. 如何编写API 11 5.2. API注解 16 5.2.1. API命令注解 16 5.2.2. API响应注解 17 6. CLOUDSTACK中使用SPRING 17 6.1. CLOUDSTACK组件 18 6.2. 如何声明一个CLOUDSTACK组件 19 6.3. AUTO-WIRING 19 6.4. CLOUDSTACK SPRING组件的编码约定 20 6.4.1. 注意自动注入的时间 20 6.4.2. 公用构造器 20 6.4.3. 组件自主初始化 20 6.4.4. 运行时注入 21 6.4.5. CloudStack定制化AOP(面向切面的编程) 21 6.4. 6. 可插拔适配器 24 6.4.7. 模块和组件 26 6.4.8. 什么时候用或者不用@Inject 28 6.5. 组件生命周期 28 7. 数据访问层 29 7.1. 需要知道的 29 7.2. 在哪能找到例子 29 7.3. DAO 29 7.4. 写一个新的VO和DAO 30 7.5. 使用 34 7.5.1. 使用DAO 34 7.5.2. 更新VOs 34 7.5.3. 搜索 34 7.5.4. 使用事务 36 7.5.5. 处理嵌套事务 38 7.5.6. 处理锁 38 8. 使用JUNIT和SPRING进行单元测试 38
Cloudstack二次开发帮助文档 Cloudstack二次开发帮助文档 本文档翻译自官方 Wiki,转载请注明来源,谢谢。作者:马金凯,QQ:9613121 1用 Cloudstack的源码进行工作 11.源码获得方式 使用git将源码克隆到本地 gitclonehttps://git-wip-us.apache.org/repos/asf/cloudstack.git 切换版本: git checkout<分攴> 2包与依赖 21.包 下面的表格列出了所有的包与其作用,如果你想为 Cloud stack添加代码,请阅读这个 列表再决定将代码添加到哪个包里面 项目 包名 作用 说明 utils cloud-utiljar 可以在任何项目 中使用此工具集 apl cloud-api jar REST API Agent ApI Java API core cloud-core Jar Serverresource实 现 server cloud- server. ]ar管理服务器 nt cloud- agent jar代理容器 第3页 Cloudstack二次开发帮助文档 cloud-ovmjar Oracle VM的未来的 Serverresource Serverresource|包 agent-simulator Server resource模 拟与回归测试 vmware-base VMWare 的 Server resource 22.依赖 cu」util cloJd-api clau」core cloud-server cloud-agent cloud-ovm cloud-ymware- simulator 包的依赖关系反应了 Cloudstack设计的重要性,因此不应该改变包的关系。ovm、 vmware-base、 agent- simulator和core是所有 Server resource基于 cloud-api的实现 按照这种设计,这些包都不会访问数据库。 cloud-agent是基于 cloud-api的序列化和反 序列化实现,但是理想情况下, cloud= agent仅仅作为容器并且应当基于 cloud-util 第4页 Cloudstack二次开发帮助文档 23未来 cloud-ut oud plug ap cloud-serrer cloud-core cloud- cloud Elout agent rmware- simulat simulator plugin fenhe -soult Cloudstack在未来会向上面这种结构进行转变,并且将API划分为以下三种 包 作用 格式 cloud-api 运行、管理、维护和配置REST 〔OAM&P〕、最终用户 cloud-plugin-api 补充功能API ava cloud-agent-api 与 Server resource通 API JSON 3.异常与日志 Cloudstack没有一个非常强大的异常与日志,不是我们只说不做,是因为我们并不擅长, 不过我们一直努力在做好这些事情 1.日志 Cloudstack使用log4进行口志记录,可以使用些口志方案。虽然lg4j很老,但是 确实很好,并且真正重要的不是工具而是内容。 Cloudstack应当部署在INFO或者以上 级别,并使用GMT标准时间。修改日志级别并不需要重启 Cloudstack,下面是推荐日 第5页 Cloudstack二次开发帮助文档 志级别以供参考: 级别 何时使用 FATAL 服务宕机或者JVM宕机 ERROR系统出现了不能修复的问题,但是不影响系统的运行,只会造成特定请求 失败 WARNING系统出现了问题,并且可以修复,管理员如果想了解,可以看看此类日 INFO 管理员比较关注这些信息 DEBUG 此类信息有助于管理员调试问题,出现 FATAL或 ERROR信息时,可以打 开 DEBUG,以提供足够的信息调试问题 TRACE 重复并且讨厌的日志,不应该在止常调试中打开它,不过实在解决不了问 题的时候可能有用 32.异常和异常捕获 下面是一些异常处理的示例: 1、如果正在编写切入点代码,需要由你捕获所冇异常(检査异常和非检査异常),并且 妥善记录所有错误,你可以这样做: try f coae.··; 3 catch (Exception specific to your code )i Specific exception handling and logging 3 catch (Exception e)t s logger. warn " Caught unexpected exception",e); exception handling code 2、如果你不是编写切入点代码,可以这样做: try t code 1 catch(XenAPIException e)i //Do either this: s logger. warn( Caught a xen api exception e); //or throw new CloudRuntimeException( "Caught a xen api exception",e); 第6页 Cloudstack二次开发帮助文档 // Don ' t ever do jusT this. throw new CloudRuntimeException ("Got a xen api exception") 3、永远不要声明一个方法直接抛出异常 public void irresponsibleMethod( throws Exception; public void responsibleMethodo throws XenAPIException; public void runtime ExceptMethod();/抛出的 CloudRuntimeException 不应该被记录到切入点 public void innocentCalleroi try irresponsibleMethod (; responsibleMethodo runtimeExceptionMethodo 3 catch(Exception e)i s logger. warn Unable to execute",e); throw new CloudRuntimeException "Unable to execute",e) /这里有什么错? //1.如果异常是从 responsibleMethod抛出的,调用者可能会忘记 处理 XenAPIEXception /2.如果异常是从 runtime ExceptionMethod抛出的,调用者会重 复处理异常 4、永远不要抛出异常本身,如果需要抛岀检查异常,你需要找到个合适的去使用, 如果是非检查异常,例如空指针,你可以抛出 Cloud Runtime Exception 5、不要把原来的异常再次抛出 try t some code 3 catch(XenAPIException e)t //catch generic error here s logger debug("Theres an exception. Rolling back code: e getMessage; 第7页 Cloudstack二次开发帮助文档 rollback some code. throw e;// note there's no"new"here 6、如果你有一个后台任务列表,处理每个任务的异常都非常重要,如果有任何个异 常没有处理,可能会导致灾难性后果: for (Task task taskList)i try t process task; f catch (Exception e )i handle exception and continue 3.3. Cloud stack异常 异常 被谁抛出 作用 使用 CloudRuntime Exception 任何 发生了不能捕获尽可能多的输出 异 可调试信息 Resource UnvailableException组件的处理与资物理资源不能使异常必须在某个 源分配 用 范围内,告诉调用 者异常影响的是 主机、存储池、集 群、提供点还是区 域,以便调用者重 试 InsufficientCapacity Exception|组件的处理与资物理资源超出范异常必须在某个 源分配 范围内,告诉调川 者异常影响的是 主札、存储池、集 群、提供点还是区 域,以便调用者重 第8页 Cloudstack二次开发帮助文档 试 4代码联合工作 目前,你可能看到了很多不同的代码,是不是感觉非常混乱?怎么下手?怎么让他们工 作起来?下面就来告诉你。 41.组件 Cloudstack部署了下面些组件,它们都是单例并且数据处理都经过它们,不过每个组 件有不同的作用 类型 作用 示例 Manager 单独控制过程 VirtualMachine manager Adapter 不同的方式实现相同的功 First FitDeploymentPlanner 能,适配器通常用于到达 个步骤时,用多种方式实现 这个步骤 DAO 数据访问层 Hostdao Service 攴持平台AP的 Java API| Uservm service Pluggableservice定义了一套平台API插入到| F5 ExternalloadBalancerelement Cloudstack中 Service SystemIntegrityChec保证管理节点启动的完整性 DatabaseUpgrade Checker ke ComponenLibrary部署管理、适配器、DAO的 DefaultComponentLibrary 集合 Interceptor 为执行过程提供面向切面的 Databasecallback 实现 第9页 Cloudstack二次开发帮助文档 42组件加载 组件的加载声明在 components. xml中,下面是示例: c?xml version=1.0 2> <components. xml> <system-integrity-checker> <checker name="ManagementServerNode/> <checker name="DatabaseIntegrity Checker"/> <checker name="DatabaseUpgrade Checker / </system-integrity-checker> <interceptor library="com. cloud configuration. DefaultInterceptorLibrary / <management-server library="com. cloud configuration. DefaultComponentLibrary"> <adapters key="com.cloud nctwork. guru. NetworkGuru"> <adapter name="GuestNetworkGuru"/> <adapter name="OvsGuestNetworkGuru"> <adapter name="PublicNetworkGuru /> <adapter name="Pod BasedNetworkGuru"> <adapter name="ControlNetworkGuru"/> <adapter name="DirectNetworkGuru"/> <adapter name="DirectPodBasedNetworkGuru/> ≤/ adapters> </management-server> </components. xmI> 第10页

...展开详情
试读 43P CloudStack二次开发帮助文档
立即下载
限时抽奖 低至0.43元/次
身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
LvanKoKo 太坑了,下载下来的根本没有内容
2020-12-25
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
CloudStack二次开发帮助文档 9积分/C币 立即下载
1/43
CloudStack二次开发帮助文档第1页
CloudStack二次开发帮助文档第2页
CloudStack二次开发帮助文档第3页
CloudStack二次开发帮助文档第4页
CloudStack二次开发帮助文档第5页
CloudStack二次开发帮助文档第6页
CloudStack二次开发帮助文档第7页
CloudStack二次开发帮助文档第8页
CloudStack二次开发帮助文档第9页

试读结束, 可继续读4页

9积分/C币 立即下载