cloudstack java api_python访问cloudstack的api接口

article/2025/9/9 14:25:31

1.CloudStack API

如同 AWS API 一样,CloudStack API 也是基于 Web Service,可以使用任何一种支持 HTTP 调用的语言(例如 Java,python,)编写代码。

调用代码(caller)首先需要在管理服务器进行认证。目前 CloudStack 采用两种认证方式:

Session 认证:通过 login API,获得一个 JSESSIONID cookie 和一个 SESSIONKEY token。

API Key 认证。

本文代码示例采用 API Key 进行认证。其过程如下:

管理员给调用者分配 API Key 和 Security Key(由 Admin 通过 web console 或者用 registerUserKeys在程序中生成,本文是用python自己生成)。

调用者用 Security Key 以 HMAC SHA-1 哈希算法对 API Key + Command String 生成签名。

最后的 API Request=Base URL+API Path+Command String+Signature。

2.具体操作:

1.下面具体为 admin 用户生成两个 key

1.首先登陆管理台:http://x.x.x.x:8080/client。

w9n2SMzB7GzCAAAAABJRU5ErkJggg==

2.点击(账户) accounts,选择 admin,点击 users tab,找到 admin。

mP5HCwEAAAhCCwlvIcaeZ7QQAACAILQQLcR0PVoIAABAEHEt9H9o6GUfjfcIewAAAABJRU5ErkJggg==

3.可以看到 API Key 和 Security Key,如果两个框没有值,点击工具栏的钥匙小图标,“Generate Keys”,如图 。

生成秘钥:注意生成后,请不要随意修改。

wE1aoRieCrqWgAAAABJRU5ErkJggg==

查看秘钥结果:

MAADgONA8AIAXNAwBIQfMAAFLQPACAFDQPACAFzQMASEHzAABS0DwAgBQ0DwAgBc0DAEhB8wAAUtA8AIAUNA8AIAXNAwBIQfMAAFLQPACAFP8PeIsF5qtW29QAAAAASUVORK5CYII=

4.admin 用户的api key 和security key。

apikey:xxxxxxxxaaaaaa

security key:sssssssssggggg

2.用python生成对应的访问url

注意生成时涉及到了三个点:apikey,securitykey 和command,三者其中一个变了,生成的signature就不能在用

直接上实例代码:

1 #!/usr/bin/env python

2 #-*- coding:utf-8 -*-

4 importurllib25 importurllib6 importhashlib7 importhmac8 importbase6410 importjson11

12 defrequestUrl(url,apikey,signature,command):13 request={}14 request['command']=command15 request['apikey']=apikey16 request['response']='json' #以json方式返回结果,自己根据需求确定,如xml

17 secretkey=signature18 request_url='&'.join(['='.join([r,urllib.quote_plus(request[r])]) for r inrequest.keys()])19 sig_url='&'.join(['='.join([r.lower(),urllib.quote_plus(request[r]).lower()]) for r insorted(request.iterkeys())])20 sig=urllib.quote_plus(base64.encodestring(hmac.new(secretkey,sig_url,hashlib.sha1).digest()).strip())21 req=url+'?'+request_url+'&signature='+sig22 returnreq23 def reqresults(request_url): #取api结果参数

24 res =urllib2.urlopen(request_url)25 returnres.read()26

27 if __name__ == '__main__':28 url = 'http://x.x.x.x:8080/client/api'

29 apikey = 'ssssssssddddd'

30 command = 'listHosts' #命令行,这个根据自己索取内容填写

31 secretkey = 'ddddddssss'

32 request_url =requestUrl(url,apikey,secretkey,command)33 resultsNeed=json.loads(reqresults(request_url))#变成一个json对象,自己去.来.去吧!

在强调一下:

1.只是提供了一个思路,具体方式最后如何访问,自己敲定,也可以用requests。


http://chatgpt.dhexx.cn/article/LDhc8KZM.shtml

相关文章

CloudStack初级部署与实例创建

1 CloudStack 1.1 查看并修改虚拟机网络 打开虚拟机VMware Workstation,选择菜单栏“编辑”->虚拟网络编辑器,查看VMnet8的子网地址。 每台机器VMnet8被分配的子网地址都不相同,但在每个网段中,本机都默认为1,网…

搭建CloudStack环境(Windows版)

应项目需求,需要使用CloudStack搭建云平台,结合官方文档和网上资料,网上资料参差不齐,最后还是自己总结一下安装CloudStack的详细教程。 目录 Step 1) 安装Cygwin Step 2) 安装JDK Step 3) 安装Python 2.7 Step 4) 安装Tomca…

CloudStack高级网络设置

基本设置 参考 https://blog.csdn.net/dandanfengyun/article/details/105726448 测试使用高级网络设置。和基本网络设置基本一样直到添加资源域时状态。。。 开始添加 资源域 添加资源以 选择高级网络设置 配置区域 和基本网络设置类似 注 来宾CIDR 没有必要去修改。。。如…

cloudstack java api_CloudStack API编程指引

前言 本文阐述为CloudStack编写新API或者更新已存在API时应遵循的约定和编程指引。 参考文档 (暂略) 介绍 当你需要为CS添加新的API时,需要创建一个Request类和Response类(或者在扩展CS API功能时它的API Responese已经定义的情况下重用已经存在的API Response类)。…

CloudStack 4.17 安装部署

市面上cloudstack大多部署教程都比较旧,这里写一篇最新版本的部署安装教程(4.17),为了方便解释相关配置以及进行相关配置,本篇会把管理节点和计算节点分开写 1.管理节点部署(admin) 管理节点ip&…

Cloudstack

1、cloudstack介绍 一个开源具有高可用性及扩展性的云计算平台,Cloudstack是一个开源的云操作系统; cloudstack支持管理大部分主流的hypervisors,如:VMware,KVM,Citrix XenServer,Xen Cloud Pla…

【私有云架构】Cloudstack 与 OpenStack:哪个更适合您?

创建云管理平台是因为云计算几乎已成为大多数日常业务使用的必需品。CloudStack 与 OpenStack 之争并不是很重要,而是在控制大量数据的高级云管理平台之间进行选择。 对于许多组织而言,重要的一步是实施逻辑云管理,该管理拥有许多用于控制各种…

CloudStack那些事儿1 : 初识CloudStack

CloudStack是什么呢?百科上对CloudStack的定义如下: CloudStack是一个开源的具有高可用性及扩展性的云计算平台,同时是一个开源云计算解决方案。可以加速高伸缩性的公共和私有云(IaaS)的部署、管理、配置。使用CloudSt…

OpenStack与CloudStack

目录 一、云计算 二、IaaS 三、OpenStack与CloudStack (一)概述 (二)项目历史与运营团队 (三)架构 (四)计算 (五)网络 (六)存…

CloudStack(二)基础网络模式安装部署

概述: 在CloudStack(一)简介及相关理论介绍里面简单的介绍了下cloudstack的相关概念好让我们安装部署的时候好理解一点,在cloudstack的区域里面有两种网络模式, 基础模式 基础网络模式只提供了简单的网络模型,管理网络、来宾网络(只支持1个来宾网络)、存储网络、V-Route(只提供…

CloudStack 云计算平台框架

前言 CloudStack 和OpenStack 一样都是IaaS层 开源框架,可以管理XenServer、ESXI、KVM、OVM等主流虚拟机,相对OpenStack比较简单、稳定; 二、Cloud Stack架构 Zone:相当于现实中的1个数据中心,它是CloudStack中最大的一…

【大数据实验1】cloudstack安装部署(小白式傻瓜教学)

cloudstack安装部署 0 说明1 Prerequisites 先决条件2 Environment 环境2.0 先看看有没有KVM2.1 Operating System 操作系统2.2 Configuring the network 配置网络2.3 Hostname2.4 SELinux2.5 NTP2.6 Configuring the CloudStack Package Repository 配置CloudStack软件包存储库…

Java线程池

目录 一、什么是线程池 二、线程池有哪些好处? ①降低资源的消耗 ②提高响应速度 ③提高线程的可管理能力 三、线程池如何使用 ①创建线程池​编辑 工厂模式: 工厂模式代码实现: ②往线程池当中添加任务 四、Java当中有哪些线程池 ​编辑 ①Executors.newFixedThreadPool …

线程池(一)线程池的基本使用

一、线程池简介 线程池的概念 线程池就是首先创建一些线相衬,它们的集合称为线程池,使用线程池可以很好的提高性能,线程池在系统启动时既创建大量空闲的线程,程序将一个任务传给线程池。线程池就会启动一条线程来执行这个任务&…

线程池介绍及创建线程池的4种方式

1. 什么是线程池 Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序 都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成…

线程池的使用

1.线程池使用场景 java中经常需要用到多线程来处理一些业务,我们非常不建议单纯使用继承Thread或者实现Runnable接口的方式来创建线程,那样势必有创建及销毁线程耗费资源、线程上下文切换问题。同时创建过多的线程也可能引发资源耗尽的风险,这…

线程池_线程池详解

1 线程池使用场景? java中经常需要用到多线程来处理一些业务,我们非常不建议单纯使用继承Thread或者实现Runnable接口的方式来创建线程,那样势必有创建及销毁线程耗费资源、线程上下文切换问题。同时创建过多的线程也可能引发资源耗尽的风险&…

Netty 线程池

Netty的线程池有什么样的特性 Java 原生线程池 Java 原生的线程池主要有三种:ThreadPoolExecutor、ScheduledThreadPoolExecutor、ForkJoinPool。 ThreadPoolExecutor 是最古老的类,我们通常说的线程池,也是指这个类。 ScheduledThreadPoo…

Linux —— 线程池

目录 一、什么是线程池 二、线程池的优点 三、线程池的应用 四、实现一个简单的线程池 五、单例模式 1. 饿汉实现方式 2. 懒汉实现方式 3. 单例模式实现线程池(懒汉方式) 六、其他常见的各种锁 一、什么是线程池 线程池是线程的一种使用模式。在…

线程池的实现原理

系统学习性,移步 IT-BLOG 线程池做的工作主要是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数超过了最大数量超出数量的线程排队等候,等其他线程执行完毕,再从队列…