这里主要是用python来做为开发工具,当然,如果你喜欢,go、java、C都可以。语言只是一种工具,不必纠结那种,用得顺手,方便,而且适合团队作战的最好。

我选python,主要是python是高级语言,拥有大量的开源模板库,初期学习成本低,适合在团队内迅速推广。简单的说就是不用我一个人去搞,我闪了后,别人也能轻松接手维护。

XenServer的开放接口工具叫Xapi,网站是   :  http://xapi-project.github.io/xen-api/   。当然,使用Xapi前,我们首先要理解下Xenserver的结构,借用下官网的一张图:

关于这图里面各个组件的说明,我就不说了,如果要进行Xapi开发,我假设已经拥有对Xenserver一定的基础认识,下面就开始着手进行第一步


首选,搭建一个基本环境,我用的是7.2的版本,下载页面为: https://www.citrix.com/downloads/xenserver/product-software/xenserver-72-standard-edition.html  ,选择“Development Components”-“SDK (Software Development Kit) 7.2.0”,下载后解压,会看到

说明Xenserver支持的几种语言包括python,.net,java,powershell,我们进入XenServerPython,选择这里看到的XenApi.py就是我们的需要唯一一个引用,对,搞了这么多,其实就只需要这个文件,我借助这个,我们首选来写个HelloWorld

#!coding=utf-8
import tracebackimport XenAPI
#如果是集群,必须是集群的master的ip
host='192.168.1.120'
username = 'root'
password = 'password'xen_url = "http://"+hostdef login():url = xen_urlsession = XenAPI.Session( url )session.login_with_password( username, password, '1.2', 'xen-api-scripts-xenapi.py' )return sessiondef loginout(session):if session is not None :session.xenapi.session.logout()if __name__ == "__main__":session = Nonetry:session = login()print(session.xenapi.host.get_all())except Exception as ex :print(traceback.format_exc())finally:loginout(session)

输出类似下面,我的测试集群有三台宿主机:

['OpaqueRef:ee00cb86-944e-86a0-2f9d-3d7031f3d800', 'OpaqueRef:da401fdc-6943-4372-fb30-5be73d21af87', 'OpaqueRef:b63c443c-6e73-fcb6-4966-b35f1ba9b647']

这里分为三个部分,第一部分是登录,通过创建一个XenAPI.Session对象,再通过账号密码登录,如果登录成功,该session保留登录信息,返回出去。第二部分是session.xenapi.host.get_all(),利用session获取当前资源池的host列表,并打印出来。第三部分当然是安全退出。

代码简单,没阅读难度,这里主要要注意的session。Xapi在服务器端会启动一个web服务,暴露出80端口,客户端通过url调用来对Xenserver进行自动化管理,通过连接Xapi,我们获取一个session对象,利用这个session对象调用其它对象查询时,通常是这样的格式:

session.xenapi.host.[支持的方法]
session.xenapi.SR.[支持的方法]
session.xenapi.PIF.[支持的方法]
session.xenapi.VBD.[支持的方法]
......

*更多具体的支持接口以及方法,可以查看  http://xapi-project.github.io/xen-api/

所以这里调用的get_all()是host对象里面的一个方法,用于显示所有的宿主机对象。上面的返回不是你能理解的主机信息,你可以把主机的所有元信息显示出来,可以试试session.xenapi.host.get_record(host),这里的host就是上面的返回列表中的对象。

好吧,如果到这里,都能理解,那ok,Xapi的操作已经毕业了,就是这么简单,下一个继续说怎么创建一个虚拟机。

转载于:https://www.cnblogs.com/easton-wang/p/7560553.html

【DevOps】做个愉快的DevOps之XenServer自动化管理(1)相关推荐

  1. DevOps到底是什么鬼?DevOps介绍及工具推荐

    转载自 DevOps到底是什么鬼?DevOps介绍及工具推荐 什么是DevOps DevOps是Development和Operations的组合,是一组过程.方法与系统的统称,用于促进开发(应用程序 ...

  2. devops 应用_如何在DevOps中应用系统思考

    devops 应用 对于大多数组织而言,采用DevOps需要转变观念. 除非您了解DevOps的核心,否则您可能会认为这是在大肆宣传,或者只是另一个流行语.更糟糕的是,您可能会因为使用了正确的工具而认 ...

  3. DevOps模式: 定义你的DevOps

    遗憾的是,很少有人真的关心 "DevOps 是什么",当然其实也不重要.比 DevOps 是什么来说,更重要的是 "DevOps 能做�什么".据 John W ...

  4. 助力中国 DevOps 运动,ONES 携手 DevOps 社区举办第12届 Meetup

    2021年8月28日,中国 DevOps 社区第12届 Meetup 在 ONES 公司深圳总部举行.ONES 研发总监陈亮宇受邀参加活动,并作了主题为<研发效能管理的挑战与实战>的演讲分 ...

  5. DevOps教程:什么是DevOps

    [注]本文译自: https://www.javatpoint.com/devops   DevOps 是两个单词的复合,一个是 Development,另一个是 Operations.它是一种共同提 ...

  6. 一步一步做项目(8)用例描述管理通知公告(ManagePublicNotice)

    一步一步做项目(8)用例描述管理通知公告(ManagePublicNotice) 在前面一步一步做项目(1)软件需求的基础上继续. 这里对具有增删改查功能的用例进行用例描述,使用用例描述模板,具体示例 ...

  7. azure devops中文显示乱码_Azure DevOps Server:Git权限设置

    Azure DevOps Server 权限概述 在Azure DevOps Server (之前名称为TFS)中,权限是一个比较复杂的概念.从权限层级上来说,包括服务器级别.团队项目集合级别.团队项 ...

  8. devops的重要性_为什么DevOps是当今最重要的技术战略

    devops的重要性 许多人在看到DevOps的一项成果并询问其发生方式时首先了解了DevOps . 不必理解为什么某些东西是实现DevOps的一部分,但是知道这一点以及为什么DevOps策略很重要, ...

  9. 使用devops的团队_具有DevOps心态的团队的蓝图

    使用devops的团队 在我从事软件工程的33年中,我有幸与一些最聪明的头脑和领导者一起工作. 我也很幸运地为一个经理工作,这使我每天都对自己的职业提出质疑,并有条不紊地打破了我的热情,就像一团毁灭性 ...

最新文章

  1. 深度学习基础系列(八)| 偏差和方差
  2. mybatisnet - 1 获取 mybatisnet
  3. SAP CRM OData实现:get_expanded_entityset方法,我测试时没有被调用,但是Li K电脑上调用了
  4. OpenGL中的二维编程——从简单的矩形开始
  5. Delphi XE2 之 FireMonkey 入门(20) - TStyleBook(皮肤、样式相关)
  6. STM32与MS5837压力传感器的I2C通讯
  7. python tts 保存_Python 文件和目录操作学习
  8. 双目测距(五)--匹配算法对比
  9. servlet处理多个请求 笔记
  10. python自定义函数详解_python 自定义函数
  11. STA之RC Corner
  12. MySQL order by、desc、limt的使用
  13. 嵌入式linux kermit,嵌入式开发常用串口工具kermit使用笔记
  14. ps打开图片的三种方式 同步部分基本操作方式
  15. Python编程从入门到实践 动手试一试 代码合集
  16. 括号匹配,实现简单计算器(加减乘除,小括号)
  17. 随手记——(细节)1
  18. L1-054 福到了-java
  19. 编程好学吗?零基础能学编程吗?
  20. android All

热门文章

  1. Laplacian surface editing
  2. 机器学习、数据挖掘、计算机视觉等领域经典书籍推荐
  3. DBSCAN聚类(code)
  4. BN处理较深的神经网络
  5. 建立一个端口为8189的服务器,它无限期等待直到有客户连接这个端口。若客户在网上发送正确的请求连接了这个端口,则服务器与客户之间就建立了一个可靠的连接。
  6. 零基础入门语义分割-Task4 评价函数与损失函数
  7. 知识图谱组队学习Task02——项目介绍
  8. Github Star 9.7K,超级好用的OCR数据合成与半自动标注工具,强烈推荐!
  9. android app启动图标在哪里设置_APP启动图标设计方法!
  10. poj 3322 Bloxorz I (bfs+辅助数组减代码量)