Skip to content

Commit dbbde36

Browse files
feat: add bigger example for iaas (#5)
* fix allowed_addresses * adds bigger example for iaas together with iaasalpha * Update examples/iaas_and_iaasalpha/resourse_example.py * Adjust example * Update example --------- Co-authored-by: Vicente Pinto <vicente.pinto@freiheit.com>
1 parent aceaac7 commit dbbde36

File tree

1 file changed

+117
-0
lines changed

1 file changed

+117
-0
lines changed

examples/iaas/example_setup.py

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
import os
2+
import time
3+
4+
from stackit.core.configuration import Configuration
5+
from stackit.iaas.api.default_api import DefaultApi
6+
from stackit.iaas.models.create_area_address_family import CreateAreaAddressFamily
7+
from stackit.iaas.models.create_area_ipv4 import CreateAreaIPv4
8+
from stackit.iaas.models.create_network_area_payload import CreateNetworkAreaPayload
9+
from stackit.iaas.models.create_network_area_route_payload import CreateNetworkAreaRoutePayload
10+
from stackit.iaas.models.create_network_payload import CreateNetworkPayload
11+
from stackit.iaas.models.network_range import NetworkRange
12+
from stackit.iaas.models.route import Route
13+
from stackit.iaasalpha.api.default_api import DefaultApi as AlphaDefaultApi
14+
from stackit.iaasalpha.models.boot_volume import BootVolume
15+
from stackit.iaasalpha.models.boot_volume_source import BootVolumeSource
16+
from stackit.iaasalpha.models.create_nic_payload import CreateNICPayload
17+
from stackit.iaasalpha.models.create_public_ip_payload import CreatePublicIPPayload
18+
from stackit.iaasalpha.models.create_security_group_payload import CreateSecurityGroupPayload
19+
from stackit.iaasalpha.models.create_server_networking_with_nics import CreateServerNetworkingWithNics
20+
from stackit.iaasalpha.models.create_server_payload import CreateServerPayload
21+
from stackit.iaasalpha.models.create_server_payload_networking import CreateServerPayloadNetworking
22+
from stackit.resourcemanager.api.default_api import DefaultApi as ResourceDefaultApi
23+
from stackit.resourcemanager.models.create_project_payload import CreateProjectPayload
24+
from stackit.resourcemanager.models.member import Member
25+
26+
project_id = os.getenv("PROJECT_ID")
27+
organization_id = os.getenv("ORGANIZATION_ID")
28+
image_id = os.getenv("IMAGE_ID")
29+
30+
# Create a new API client, that uses default authentication and configuration
31+
config = Configuration()
32+
client = DefaultApi(config)
33+
alpha_client = AlphaDefaultApi(config)
34+
resource_client = ResourceDefaultApi(config)
35+
36+
create_network_area_payload = CreateNetworkAreaPayload(
37+
name="network-area",
38+
addressFamily=CreateAreaAddressFamily(
39+
ipv4=CreateAreaIPv4(
40+
networkRanges=[
41+
NetworkRange(prefix="192.0.2.0/24"),
42+
],
43+
transferNetwork="192.0.2.0/24",
44+
default_nameservers=["192.0.2.0"],
45+
)
46+
),
47+
)
48+
network_area = client.create_network_area(organization_id, create_network_area_payload)
49+
50+
51+
project = resource_client.create_project(
52+
CreateProjectPayload(
53+
name="network_area",
54+
container_parent_id=organization_id,
55+
labels={"networkArea": network_area.area_id},
56+
members=[Member(role="owner", subject="example@stackit.cloud")],
57+
)
58+
)
59+
project_id = project.project_id
60+
network_area_area_id = network_area.area_id
61+
62+
default_network_creation_response = client.create_network(
63+
project_id,
64+
CreateNetworkPayload(
65+
name="default",
66+
),
67+
)
68+
69+
security_group1 = alpha_client.create_security_group(
70+
project_id,
71+
CreateSecurityGroupPayload(
72+
name="My-security-group",
73+
description="This is created via Python SDK",
74+
labels={"key": "value"},
75+
),
76+
)
77+
security_group1_groupid = security_group1.id
78+
79+
network = client.create_network(
80+
project_id,
81+
CreateNetworkPayload(
82+
name="network",
83+
),
84+
)
85+
86+
nic1 = alpha_client.create_nic(
87+
project_id,
88+
network.network_id,
89+
CreateNICPayload(
90+
allowed_addresses=["192.0.2.0/24"],
91+
security_groups=[security_group1_groupid],
92+
),
93+
)
94+
95+
public_ip = alpha_client.create_public_ip(
96+
project_id, CreatePublicIPPayload(network_interface=nic1.id)
97+
)
98+
99+
server = alpha_client.create_server(
100+
project_id,
101+
CreateServerPayload(
102+
name="example-server",
103+
boot_volume=BootVolume(
104+
size=64,
105+
source=BootVolumeSource(
106+
id=image_id,
107+
type="image",
108+
),
109+
),
110+
keypair_name="key",
111+
labels={"key": "value"},
112+
machine_type="t1.2",
113+
availability_zone="eu01-1",
114+
),
115+
)
116+
time.sleep(180) # wait for server to be created, temporary sleep until waiter methods are implemented
117+
alpha_client.add_nicto_server(project_id, server.id, nic1.id)

0 commit comments

Comments
 (0)