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.
This commit is contained in:
2026-07-18 04:26:48 +03:00
commit 6033967e6a
509 changed files with 464404 additions and 0 deletions
+8
View File
@@ -0,0 +1,8 @@
config:
openstack:authUrl: http://127.0.0.1:5000/v3
openstack:userName: admin
openstack:password:
secure: AAABANNOlcqFB+nL7EdsJpTICXXoUIhfYk6vimDAk+KJcI5V8UM=
openstack:tenantName: demo
openstack:domainName: Default
openstack:region: RegionOne
+3
View File
@@ -0,0 +1,3 @@
name: openstack-api-simulator
runtime: python
description: Lab cookbook against openstack-api-simulator (OpenStack, not VMware/vSphere)
+42
View File
@@ -0,0 +1,42 @@
"""Pulumi cookbook: OpenStack network + compute instance on the simulator.
Uses pulumi_openstack (not vsphere). Defaults target local Compose gateway.
"""
from __future__ import annotations
import pulumi
from pulumi_openstack import compute, images, networking
config = pulumi.Config()
# Provider picks up OS_* env vars; also set via Pulumi.yaml / pulumi config.
image = images.get_image(name="cirros", most_recent=True)
demo_net = networking.get_network(name="demo-net")
app_net = networking.Network("pulumi-app-net", name="pulumi-app-net", admin_state_up=True)
app_subnet = networking.Subnet(
"pulumi-app-subnet",
name="pulumi-app-subnet",
network_id=app_net.id,
cidr="10.77.0.0/24",
ip_version=4,
)
instance = compute.Instance(
"pulumi-cookbook-vm",
name="pulumi-cookbook-vm",
flavor_id="1",
image_id=image.id,
networks=[compute.InstanceNetworkArgs(uuid=demo_net.id)],
metadata={
"managed_by": "pulumi",
"stack": "openstack-api-simulator",
},
)
pulumi.export("image_id", image.id)
pulumi.export("server_id", instance.id)
pulumi.export("server_name", instance.name)
pulumi.export("app_network_id", app_net.id)
pulumi.export("app_subnet_id", app_subnet.id)
+3
View File
@@ -0,0 +1,3 @@
pulumi>=3.0
pulumi-openstack>=5.0
requests>=2.28