专栏首页使用Python和Requests访问HP OpenStack Nova

使用Python和Requests访问HP OpenStack Nova

因此,我申请加入新的惠普云服务的免费和私人测试版,已经被惠普云团队所接受,今天我终于有一段时间在惠普云端使用OpenStack API。我将从我对服务的第一印象开始:

管理的用户界面非常用户友好,设计与Twitter Bootstrap非常相似,请参阅“管理”部分中“计算”页面的屏幕截图:

以下是实例大小集的截图:

因为他们使用的是OpenStack,所以我认为他们应该将OpenStack的词汇导入到用户界面中,而不是将其称为“Size”,而使用“ Flavor ” 更为明智。

用户界面仍然没有很多功能,我真正想要的是一个“停止”或类似的东西,只有“终止”功能是存在于管理界面,但这些细节他们应该还在工作,因为他们只是在测试版。

另一个重要的信息是,通过使用生成的RSA密钥通过SSH完成对实例的访问。

现在让我们深入OpenStack API。

OpenStack API

要访问OpenStack API,您需要凭证进行身份验证,惠普云服务为您拥有的每个区域/服务在管理界面上提供这些密钥,请参阅下面的屏幕截图(当然,密钥是匿名的):

让我们开始通过子类别 Requests AuthBase来定义认证方案:

class OpenStackAuth(AuthBase):
    def __init__(self, auth_user, auth_key):
        self.auth_key = auth_key
        self.auth_user = auth_user

def __call__(self, r):
    r.headers['X-Auth-User'] = self.auth_user
    r.headers['X-Auth-Key'] = self.auth_key
    return r

如您所见,我们正在使用参数在请求头中定义X-Auth-User和X-Auth-Key。这些参数分别是我们前面引用的帐户ID和访问密钥。现在,您所要做的就是使用身份验证方案自行完成请求,这很容易使用Requests:

ENDPOINT_URL = 'https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/'
ACCESS_KEY = 'Your Access Key'
ACCOUNT_ID = 'Your Account ID'
response = requests.get(ENDPOINT_URL, auth=OpenStackAuth(ACCOUNT_ID, ACCESS_KEY))

就是这样,您只需使用几行代码即可完成认证机制,这就是将请求发送到HP Cloud服务器的方式:

此请求会发送到HP Cloud Endpoint URL(https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/)。现在让我们看看服务器如何回应这个认证请求:

您可以通过打印请求响应对象的标头属性来使用请求显示此身份验证响应。您可以看到服务器用两个重要的标题项来回答我们的请求:X-Server-Management-URL和X-Auth-Token。管理URL现在是我们的新端点,是我们应该用来向HP Cloud服务提出进一步请求的URL,而X-Auth-Token是服务器根据我们的凭据生成的认证令牌,这些令牌通常适用于24小时,但是我还没有测试过。

我们现在需要做的是再次对请求AuthBase类进行子类化,但是这次只定义了我们需要使用的每个新请求中要使用的身份验证令牌。

class OpenStackAuthToken(AuthBase):
    def __init__(self, request):
        self.auth_token = request.headers['x-auth-token']

def __call__(self, r):
    r.headers['X-Auth-Token'] = self.auth_token
    return r

请注意,OpenStackAuthToken正在接收响应请求作为参数,复制X-Auth-Token并将其设置为请求。

让我们使用OpenStack API v.1.1中的一个服务,我打算调用List Server API函数,使用JSON解析结果,然后在屏幕上显示结果:

# Get the management URL from the response header
mgmt_url = response.headers['x-server-management-url']

# Create a new request to the management URL using the /servers path
# and the OpenStackAuthToken scheme we created
r_server = requests.get(mgmt_url + '/servers', auth=OpenStackAuthToken(response))

# Parse the response and show it to the screen
json_parse = json.loads(r_server.text)
print json.dumps(json_parse, indent=4)

这就是我们对这个要求的回应:

{
    "servers": [
        {
            "id": 22378,
            "uuid": "e2964d51-fe98-48f3-9428-f3083aa0318e",
            "links": [
                {
                    "href": "https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/20817201684751/servers/22378",
                    "rel": "self"
                },
                {
                    "href": "https://az-1.region-a.geo-1.compute.hpcloudsvc.com/20817201684751/servers/22378",
                    "rel": "bookmark"
                }
            ],
            "name": "Server 22378"
        },
        {
            "id": 11921,
            "uuid": "312ff473-3d5d-433e-b7ee-e46e4efa0e5e",
            "links": [
                {
                    "href": "https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/20817201684751/servers/11921",
                    "rel": "self"
                },
                {
                    "href": "https://az-1.region-a.geo-1.compute.hpcloudsvc.com/20817201684751/servers/11921",
                    "rel": "bookmark"
                }
            ],
            "name": "Server 11921"
        }
    ]
}

就是这样,现在你知道如何使用Requests和Python来使用OpenStack API。如果你想阅读更多关于API的信息,它是如何工作的,你可以阅读这里文档

本文的版权归 Hero 所有,如需转载请联系作者。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • kolla-mitaka-eol 部署openstack mitaka遇到的问题

    实验需要使用 kolla 部署 openstack mitaka环境,由于是两年前的版本,实验过程中遇到了一些坑,记录如下。

    tanmx
  • 初学者指南OpenStack:基础

    OpenStack是一个开源的云计算平台,可用于构建 公共云和私有云。如编织各种技术组件来提供构建支持任何用例与规模的云服务的能力。

    天空
  • OpenStack Placement

    私有云的用户,尤其是传统 IT 架构转型的私有云用户一般会拥有各式各样的存量资源系统,与这些系统对接会让 OpenStack 的资源体系变得复杂。

    后端云
  • openstack安装(22)

    [root@controller ~]# yum install -y openstack-nova-api openstack-nova-cert opens...

    陈不成i
  • 在 Ubuntu 上安装和配置 OpenStack Nova

    OpenStack 是由 Rackspace 和 NASA 共同开发的云计算平台,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服...

    EltonZheng
  • OpenStack初学者指南:基础知识

    OpenStack 是一个开源云计算平台,可用于构建公共云和私有云。可以编排各种技术组件以提供构建支持任何用例和规模的云服务的能力。

    神话_Tyrannosaurus
  • 完整部署CentOS7.2+OpenStack+kvm 云平台环境

    1.1 百度百科 OpenStack 是一个由 NASA ( 美国国家航空航天局)和 Rackspace 合作研发并发起的,以 Apache 许可证授权的自...

    菲宇
  • 完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建

    公司在IDC机房有两台很高配置的服务器,计划在上面部署openstack云平台虚拟化环境,用于承载后期开发测试和其他的一些对内业务。 以下对openstack的...

    洗尽了浮华
  • openstack安装(20)

    使用OpenStack计算服务来托管和管理云计算系统。OpenStack计算服务是基础设施即服务(IaaS)系统的主要部分,模块主要由Python实现。

    陈不成i

扫码关注云+社区

领取腾讯云代金券