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