跳转到主要内容

用于构建与OpenStack云交互的应用程序的SDK

项目描述

openstacksdk是一个用于构建与OpenStack云交互的应用程序的客户端库。该项目旨在提供与OpenStack众多服务交互的一致和完整的集合,包括完整的文档、示例和工具。

它还包含一个抽象接口层。云可以做很多事情,但可能只有大约10件事是大多数人定期关心的。如果您想做复杂的事情,SDK的每个服务针对的部分是为您准备的。然而,如果您想要编写能够与任何配置的OpenStack云通信的应用程序,那么云抽象层是为您准备的。

有关openstacksdk历史的更多信息,请参阅 https://docs.openstack.org/openstacksdk/latest/contributor/history.html

入门

身份验证和连接管理

openstacksdk旨在与任何OpenStack云通信。为此,它需要一个配置文件。openstacksdk偏好clouds.yaml文件,但也可以使用环境变量。clouds.yaml文件应由您的云提供商或部署工具提供。示例

clouds:
  mordred:
    region_name: Dallas
    auth:
      username: 'mordred'
      password: XXXXXXX
      project_name: 'demo'
      auth_url: 'https://identity.example.com'

openstacksdk将在以下位置查找clouds.yaml文件

  • 如果设置,则由环境变量OS_CLIENT_CONFIG_FILE指示的路径

  • .(当前目录)

  • 用户主目录下的.openstack目录

  • /etc/openstack目录

您可以使用openstack.connect函数创建连接。云名称可以直接传递给此函数,或者使用环境变量OS_CLOUD指定。如果您没有clouds.yaml文件,而是使用环境变量进行配置,则可以使用特殊的云名称envvars从环境中加载配置。例如

import openstack

# Initialize connection from a clouds.yaml by passing a cloud name
conn_from_cloud_name = openstack.connect(cloud='mordred')

# Initialize connection from a clouds.yaml using the OS_CLOUD envvar
conn_from_os_cloud = openstack.connect()

# Initialize connection from environment variables
conn_from_env_vars = openstack.connect(cloud='envvars')

云层

openstacksdk由四个层次组成,这些层次都建立在彼此之上。最高层次是云层。云层方法通过openstack.connect返回的顶级Connection对象提供。例如

import openstack

# Initialize and turn on debug logging
openstack.enable_logging(debug=True)

# Initialize connection
conn = openstack.connect(cloud='mordred')

# List the servers
for server in conn.list_servers():
    print(server.to_dict())

云层基于可能影响多个服务的逻辑操作。这个层的优势主要体现在需要多个步骤且步骤因提供商而异的操作中。例如

import openstack

# Initialize and turn on debug logging
openstack.enable_logging(debug=True)

# Initialize connection
conn = openstack.connect(cloud='mordred')

# Upload an image to the cloud
image = conn.create_image(
    'ubuntu-trusty', filename='ubuntu-trusty.qcow2', wait=True)

# Find a flavor with at least 512M of RAM
flavor = conn.get_flavor_by_ram(512)

# Boot a server, wait for it to boot, and then do whatever is needed
# to get a public IP address for it.
conn.create_server(
    'my-server', image=image, flavor=flavor, wait=True, auto_ip=True)

代理层

下一层是代理层。大多数用户都会使用这个层。代理层是特定于服务的,因此方法将位于Connection对象的特定于服务连接属性下,如computeblock_storageimage等。例如

import openstack

# Initialize and turn on debug logging
openstack.enable_logging(debug=True)

# Initialize connection
conn = openstack.connect(cloud='mordred')

# List the servers
for server in conn.compute.servers():
    print(server.to_dict())

资源层

在此之下是资源层。它提供对REST API支持的CRUD基本操作的支持,是其他层的基石。通常,您不需要直接使用它,但对于已经拥有Resource对象的操作可能很有帮助。例如

import openstack
import openstack.config.loader
import openstack.compute.v2.server

# Initialize and turn on debug logging
openstack.enable_logging(debug=True)

# Initialize connection
conn = openstack.connect(cloud='mordred')

# List the servers
for server in openstack.compute.v2.server.Server.list(session=conn.compute):
    print(server.to_dict())

原始HTTP层

最后,是原始HTTP层。它公开原始HTTP语义,实际上是围绕requests API的一个智能包装,增加了处理认证和版本管理等操作。因此,您可以像使用getpostput这样的requests API方法一样,并期望收到一个requests.Response对象作为响应(与其他层不同,其他层几乎都返回继承自openstack.resource.Resource的对象)。像资源层一样,通常您不需要直接使用它,但对于与openstacksdk不兼容或将来不会兼容的API进行交互可能很有帮助。例如

import openstack

# Initialize and turn on debug logging
openstack.enable_logging(debug=True)

# Initialize connection
conn = openstack.connect(cloud='mordred')

# List servers
for server in openstack.compute.get('/servers').json():
    print(server)

配置

openstacksdk使用openstack.config模块来解析配置。openstack.config将查找一个或多个云的配置。它将读取环境变量和配置文件,并且还包含一些供应商特定的默认值,以便您不需要额外的信息就可以使用OpenStack

  • 如果您有配置文件,您将获得其中列出的云

  • 如果您有环境变量,您将获得一个名为envvars的云

  • 如果您两者都没有,您将获得一个名为defaults的云,其中包含基本默认值

您可以通过运行openstack.config.loader来查看openstacksdk在当前环境中识别的配置。例如

$ python -m openstack.config.loader

更多信息请参阅https://docs.openstack.org/openstacksdk/latest/user/config/configuration.html

支持的服务

以下服务目前受支持。所有可用OpenStack服务的完整列表可以在项目导航器中找到。

支持的服务

服务

描述

云层

代理和资源层

计算

Nova

计算

✔ (openstack.compute)

硬件生命周期

Ironic

裸金属部署

✔ (openstack.baremetal, openstack.baremetal_introspection)

Cyborg

加速器的生命周期管理

✔ (openstack.accelerator)

存储

Cinder

块存储

✔ (openstack.block_storage)

Swift

对象存储

✔ (openstack.object_store)

Cinder

共享文件系统

✔ (openstack.shared_file_system)

网络

Neutron

网络

✔ (openstack.network)

Octavia

负载均衡

✔ (openstack.load_balancer)

Designate

域名系统(DNS)

✔ (openstack.dns)

共享服务

Keystone

身份

✔ (openstack.identity)

Placement

Placement

✔ (openstack.placement)

Glance

镜像存储

✔ (openstack.image)

Barbican

密钥管理

✔ (openstack.key_manager)

工作负载部署

Magnum

容器编排引擎部署

✔ (openstack.container_infrastructure_management)

编排

Heat

编排

✔ (openstack.orchestration)

Senlin

集群

✔ (openstack.clustering)

Mistral

工作流

✔ (openstack.workflow)

Zaqar

消息传递

✔ (openstack.message)

应用程序生命周期

Masakari

实例高可用性服务

✔ (openstack.instance_ha)

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

openstacksdk-4.0.0.tar.gz (1.2 MB 查看哈希值)

上传时间

构建分发

openstacksdk-4.0.0-py3-none-any.whl (1.7 MB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面