Files
openstack-api-simulator/examples/python/openstacksdk_cookbook.py
T
inecs 6033967e6a Initial commit: stateful OpenStack API laboratory simulator.
Ship Keystone auth, multi-service handlers (Yoga→Dalmatian), Compose/Helm
packaging, API contract packs, and pytest/Pulumi coverage labs.
2026-07-18 04:26:48 +03:00

78 lines
2.4 KiB
Python

#!/usr/bin/env python3
"""OpenStack SDK cookbook against openstack-api-simulator.
Creates network + server + volume, updates metadata, cleans up.
"""
from __future__ import annotations
import sys
import openstack
def main() -> int:
conn = openstack.connect(
auth_url="http://127.0.0.1:5000/v3",
project_name="demo",
username="admin",
password="secret",
user_domain_name="Default",
project_domain_name="Default",
region_name="RegionOne",
)
print("identity ok:", conn.identity.get_project(conn.current_project_id).name)
image = conn.image.find_image("cirros", ignore_missing=False)
network = conn.network.find_network("demo-net", ignore_missing=False)
print("boot image:", image.id, image.name)
print("network:", network.id, network.name)
app_net = conn.network.create_network(name="sdk-app-net", admin_state_up=True)
app_subnet = conn.network.create_subnet(
name="sdk-app-subnet",
network_id=app_net.id,
ip_version=4,
cidr="10.88.0.0/24",
)
print("created net/subnet:", app_net.id, app_subnet.id)
server = conn.compute.create_server(
name="sdk-cookbook-vm",
flavor_id="1",
image_id=image.id,
networks=[{"uuid": network.id}],
metadata={"managed_by": "openstacksdk"},
)
server = conn.compute.wait_for_server(server, status="ACTIVE", failures=["ERROR"], wait=60)
print("server ACTIVE:", server.id, server.name, server.status)
conn.compute.set_server_metadata(server, playbook="sdk", env="lab")
server = conn.compute.get_server(server.id)
print("metadata:", dict(server.metadata or {}))
volume = conn.block_storage.create_volume(name="sdk-cookbook-vol", size=5)
volume = conn.block_storage.wait_for_status(volume, status="available", wait=60)
print("volume:", volume.id, volume.status)
conn.compute.delete_server(server, ignore_missing=True)
print("server deleted")
conn.block_storage.delete_volume(volume, ignore_missing=True)
print("volume deleted")
conn.network.delete_subnet(app_subnet, ignore_missing=True)
conn.network.delete_network(app_net, ignore_missing=True)
print("network cleaned")
print("OPENSTACKSDK_COOKBOOK_OK")
return 0
if __name__ == "__main__":
try:
raise SystemExit(main())
except Exception as exc: # noqa: BLE001
print("OPENSTACKSDK_COOKBOOK_FAIL:", exc, file=sys.stderr)
raise