UI

ucloudstack采用的是前后端分离的架构,就是说前端可以选择使用web、swing甚至其它的界面,都可以。

我们来看cloudstack的UI信息吧,所有的cloudstack的UI都在{cloudstack_home}/cloudstack/ui目录下。

用firefox打开工程,打开firebug,找到login.js,在100行加上断点。

执行登录,这时就会触发断点,让我们看看发生了什么:

最终是使用jquery的ajax来提交post请求给服务器端,也就是说,manager server提供给我们的是一组API,我们可以通过http的请求方式提交请求。

处理http请求

看完了前端,我们继续看一下后端处理。

在web.xml中,我们看到所有的api/请求都会到ApiServlet中处理。

    <servlet>
<servlet-name>apiServlet</servlet-name>
<servlet-class>com.cloud.api.ApiServlet</servlet-class>
<load-on-startup></load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>apiServlet</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>

在ApiServlet中,重点看下

    @Override
public void init(ServletConfig config) throws ServletException {
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, config.getServletContext());
}

这样在web容器中就可以查看spring中使用注解的接口了。

说实话这块感觉设计的挺一般的,一个servlet里边承担了太多的任务,我打了个断点在

processRequest(req, resp);

这个方法中,但是一个登录的操作就走了四次断点,一个退出操作又走了两次,不清楚这块为什么这样设计。

而且很多业务代码都在这个类中操作,感觉很冗余。但这个不是我们重点关心的问题。

CloudStack API提供的三种角色

  1. 管​理​员​。​获​得​云​的​所​有​功​能​,包​括​虚​拟​和​物​理​资​源​管​理​。​
  2. 域​管​理​员​。​进​入​到​虚​拟​资​源​的​云​属​于​管​理​员​的​域​。
  3. 用​户​。​只​访​问​允​许​用​户​管​理​的​功​能​,虚​拟​实​例​,存​储​,和​网​络​。​

API文档的地址

http://cloudstack.apache.org/docs/api/

可以看到不同角色的API的地址,进去之后,可以看到每个API的详细描述。

处理简单列举一下4.1中API的新特性

在VM中重新配置物理网络

支持IPV6

扩展VMX设置

重新设置SSH密钥来访问虚拟机

在4.1中改变的API命令:

API Commands
Description
createNetworkOffering
The following request parameters have been added:
  • isPersistent
  • startipv6
  • endipv6
  • ip6gateway
  • ip6cidr
listNetworkOfferings
listNetworks
The following request parameters have been added:
  • isPersistent
    This parameter determines if the network or network offering listed are persistent or not.
  • ip6gateway
  • ip6cidr
createVlanIpRange
The following request parameters have been added:
  • startipv6
  • endipv6
  • ip6gateway
  • ip6cidr
deployVirtualMachine
The following parameter has been added: ip6Address.
The following parameter is updated to accept the IPv6 address: iptonetworklist.
CreateZoneCmd
The following parameter have been added: ip6dns1, ip6dns2.
listRouters
listVirtualMachines
For nic responses, the following fields have been added.
  • ip6address
  • ip6gateway
  • ip6cidr
listVlanIpRanges
For nic responses, the following fields have been added.
  • startipv6
  • endipv6
  • ip6gateway
  • ip6cidr
listRouters
listZones
For DomainRouter and DataCenter response, the following fields have been added.
  • ip6dns1
  • ip6dns2
addF5LoadBalancer
configureNetscalerLoadBalancer
addNetscalerLoadBalancer
listF5LoadBalancers
configureF5LoadBalancer
listNetscalerLoadBalancers
The following response parameter is removed: inline.
listFirewallRules
createFirewallRule
The following request parameter is added: traffictype (optional).
listUsageRecords
The following response parameter is added: virtualsize.
deleteIso
The following request parameter is added: forced (optional).
createStoragePool
The following request parameters are made mandatory:
  • podid
  • clusterid
createAccount
The following new request parameters are added: accountid, userid
createUser
The following new request parameter is added: userid
createDomain
The following new request parameter is added: domainid
listZones
The following request parameters is added: securitygroupenabled

同时添加了一些新的API

  • createEgressFirewallRules (creates an egress firewall rule on the guest network.)
  • deleteEgressFirewallRules (deletes a egress firewall rule on the guest network.)
  • listEgressFirewallRules (lists the egress firewall rules configured for a guest network.)
  • resetSSHKeyForVirtualMachine (Resets the SSHkey for virtual machine.)
  • addBaremetalHost (Adds a new host.)
  • addNicToVirtualMachine (Adds a new NIC to the specified VM on a selected network.)
  • removeNicFromVirtualMachine (Removes the specified NIC from a selected VM.)
  • updateDefaultNicForVirtualMachine (Updates the specified NIC to be the default one for a selected VM.)
  • addRegion (Registers a Region into another Region.)
  • updateRegion (Updates Region details: ID, Name, Endpoint, User API Key, and User Secret Key.)
  • removeRegion (Removes a Region from current Region.)
  • listRegions (List all the Regions. Filter them by using the ID or Name.)
  • getUser (This API can only be used by the Admin. Get user details by using the API Key.)

配置8096端口

8096端​口​, 不​需​要​验​证​即​可​进​行​API调​用​. 在​所​有​的​3.0.1版​本​全​新​安​装​时​, 这​个​端​口​都​是​默​认​被​禁​用​的​. 你​可​以​通​过​下​面​的​设​置​启​用​8096(或​使​用​其​它​端​口​号​):

  1. 确​保​第​一​个​管​理​服​务​器​安​装​并​运​行​.
  2. 设​置​你​期​望​的​端​口​号​到​全​局​配​置​参​数​ integration.api.port.
  3. 重​启​管​理​服​务​器​.
  4. 在​管​理​服​务​器​的​节​点​上​, 创​建​一​个​防​火​墙​规​则​以​便​允​许​访​问​这​个​端​口​.

使用API请求

所​有​CloudStack API请​求​都​是​以​HTTP GET/POST形​式​提​交​, 同​时​附​上​相​关​的​命​令​和​参​数​. 无​论​是​HTTP或​HTTPS, 一​个​请​求​都​有​以​下​内​容​组​成​:

  • CloudStack API URL: 这​是​Web服​务​API入​口​(例​如​, http://www.cloud.com:8080/client/api)
  • 命​令​: 你​想​要​执​行​的​Web服​务​命​令​, 比​如​开​启​一​个​虚​拟​机​或​创​建​一​个​磁​盘​卷​
  • 参​数​: 命​令​所​需​的​任​何​必​要​或​可​选​的​参​数​

一​个​API GET请​求​的​样​例​看​起​来​像​这​样​:

http://localhost:8080/client/api?command=deployVirtualMachine&serviceOfferingId=1&diskOfferingId=1&templateId=2&zoneId=4&apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D

更容易读的方式:

http://localhost:8080/client/api
?command=deployVirtualMachine
&serviceOfferingId=
&diskOfferingId=
&templateId=
&zoneId= &apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXqjB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ
&signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D

虚拟化平台cloudstack(8)——从UI开始的更多相关文章

  1. 虚拟化平台cloudstack新版本的调试

    虚拟化平台cloudstack(7)——新版本的调试 调试环境 ubuntu 12.04 JDK1.7 apache-maven-3.10 eclipse 4.2 Juno mysql 5 源码下载及 ...

  2. 虚拟化平台cloudstack(5)——参考资料

    虚拟化的几种方式 完全虚拟化: 半虚拟化: 硬件辅助虚拟化: 详细的内容可以看: http://pan.baidu.com/share/link?shareid=4134188256&uk=2 ...

  3. 虚拟化平台cloudstack(2)——安装(上)

    vmware workstation安装ubuntu server12.04 这个其实没什么说的了,下软件,安装,一顿下一步,OK. 安装完成后,为ubuntu server 12.04安装桌面. 使 ...

  4. 虚拟化平台cloudstack(7)——新版本的调试

    调试环境 ubuntu 12.04 JDK1.7 apache-maven-3.10 eclipse 4.2 Juno mysql 5 源码下载及调试 上面的几个软件在上一篇中已经介绍了. 在新的版本 ...

  5. 虚拟化平台cloudstack(6)——使用maven:jetty调试

    调试环境 ubuntu 12.04 JDK1.7 apache-maven-3.10 eclipse 4.2 Juno mysql 5 apache ant JDK的配置和安装 安装可以参考: htt ...

  6. 虚拟化平台cloudstack(4)——几个异常

    cloudstack主机添加不成功 CloudStack正常启动,添加区域.提供点和群集都正常,但是添加主机时提示添加不成功. 先添加主机: 然后出现提示: 在网上找了一圈,基本上没什么回复,没办法, ...

  7. 虚拟化平台cloudstack(3)——安装(下)

    登录时用户名和密码错误 默认账号密码 admin/password 管理节点安装好后,初始化数据库,完了使用admin和password登陆提示用户名密码错误,查看日志: Fail to genera ...

  8. 从SDN鼻祖Nicira到VMware NSX 网络虚拟化平台的简单探讨

    以前的大二层技术,一般是在物理网络底层使用IS-IS路由技术,再在此基础之上,实现数据中心网络的二层扩展,如公有的Trill.SPB技术和Cisco私有的OTV.Fabricpath技术:前沿一些的网 ...

  9. 【VMware虚拟化解决方案】 基于VMware虚拟化平台VDI整体性能分析与优化

    一.说一说 本来打算将前期项目里面出现的问题的分析思路与解决方法写出来,第一.疏导一下自己的思路,第二.分析并找出自身在技术层面所存在欠缺.但由于每个人都有一根懒经所以迟迟未动.今天突然发现51CTO ...

随机推荐

  1. 给JavaScript初学者的24条最佳实践

    ­.fluid-width-video-wrapper { width: 100%; position: relative; padding: 0 } .fluid-width-video-wrapp ...

  2. RGB颜色中的参数是变量的时候,为什么要加上两个+号在左右?

    <script> function draw(){ var c=document.getElementById("mycanvas"); var cxt=c.getCo ...

  3. MSBuild Devenv 编译VC 工程

    Devenv "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" dap_cp ...

  4. jQuery操作Dom、jQuery事件机制、jQuery补充部分

    jQuery操作Dom: 修改属性: //使用attr()方法 //attr(name, value) //name:要修改的属性的属性名 //value:对应的值 //attr方法,如果当前标签有要 ...

  5. c# 搭建高效分布式web (进一步实现软件的热插拔)

    一 加入 和其他网站相同的特性 nginx 做代理 并且和IIS 进行搭配搭建 web 前台 二 缓存使用 memcached 和session 共享做服务器的缓存处理减轻sql数据库的压力 包含关系 ...

  6. MySQL Table is marked as crashed 解决方法

    MYSQL数据表出现问题,提示: ERROR 144 (HY000): Table './dpt/dpt_production' is marked as crashed and last (auto ...

  7. Spring 学习笔记 3. 尚硅谷_佟刚_Spring_配置 Bean

    1,bean 的配置 <bean id="helloWorld" class="com.yfy.HelloWorld"> <property ...

  8. UIAlertController的使用

    在iOS8中,苹果对UIAlertView和UIActionSheet进行了重新的封装,成为适应性更强,灵活性更高的UIAlertController.具体使用方法如下. UIAlertControl ...

  9. getIdentifier()获取资源Id

    工作需要使用getIdentifier()方法可以方便的获各应用包下的指定资源ID.主要有两种方法:(1)方式一Resources resources = context.getResources() ...

  10. [收集]在iPhone桌面的应用程序图标右上角显示数字

    能够在ios桌面的程序icon右上角显示数字(badge number)的方法 在ViewController中的viewDidLoad方法中添加如下代码即可 - (void)viewDidLoad ...