Skip to content

Commit 5c4f2a5

Browse files
feat(cloud): add security groups examples
Refs GCLOUD2-18775
1 parent 9010134 commit 5c4f2a5

2 files changed

Lines changed: 220 additions & 0 deletions

File tree

examples/cloud/security_groups.py

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
from gcore import Gcore
2+
from gcore.types.cloud.security_group_create_params import SecurityGroup
3+
4+
5+
def main() -> None:
6+
gcore = Gcore()
7+
8+
security_group_id = create_security_group(client=gcore)
9+
list_security_groups(client=gcore)
10+
get_security_group(client=gcore, security_group_id=security_group_id)
11+
update_security_group(client=gcore, security_group_id=security_group_id)
12+
13+
# Rules
14+
rule_id = create_security_group_rule(client=gcore, security_group_id=security_group_id)
15+
rule_id = replace_security_group_rule(client=gcore, rule_id=rule_id, security_group_id=security_group_id)
16+
delete_security_group_rule(client=gcore, rule_id=rule_id)
17+
18+
delete_security_group(client=gcore, security_group_id=security_group_id)
19+
20+
21+
def create_security_group(*, client: Gcore) -> str:
22+
print("\n=== CREATE SECURITY GROUP ===")
23+
security_group = client.cloud.security_groups.create(security_group=SecurityGroup(name="gcore-go-example"))
24+
print(f"Created security group: ID={security_group.id}, name={security_group.name}")
25+
print("========================")
26+
return security_group.id
27+
28+
29+
def list_security_groups(*, client: Gcore) -> None:
30+
print("\n=== LIST SECURITY GROUPS ===")
31+
security_groups = client.cloud.security_groups.list()
32+
for count, security_group in enumerate(security_groups, 1):
33+
print(f"{count}. Security group: ID={security_group.id}, name={security_group.name}")
34+
print("========================")
35+
36+
37+
def get_security_group(*, client: Gcore, security_group_id: str) -> None:
38+
print("\n=== GET SECURITY GROUP ===")
39+
security_group = client.cloud.security_groups.get(group_id=security_group_id)
40+
print(
41+
f"Security group: ID={security_group.id}, name={security_group.name}, description={security_group.description}"
42+
)
43+
print("========================")
44+
45+
46+
def update_security_group(*, client: Gcore, security_group_id: str) -> None:
47+
print("\n=== UPDATE SECURITY GROUP ===")
48+
security_group = client.cloud.security_groups.update(
49+
group_id=security_group_id,
50+
name="gcore-go-example-updated",
51+
)
52+
print(f"Updated security group: ID={security_group.id}, name={security_group.name}")
53+
print("========================")
54+
55+
56+
def delete_security_group(*, client: Gcore, security_group_id: str) -> None:
57+
print("\n=== DELETE SECURITY GROUP ===")
58+
client.cloud.security_groups.delete(group_id=security_group_id)
59+
print(f"Deleted security group: ID={security_group_id}")
60+
print("========================")
61+
62+
63+
def create_security_group_rule(*, client: Gcore, security_group_id: str) -> str:
64+
print("\n=== CREATE SECURITY GROUP RULE ===")
65+
rule = client.cloud.security_groups.rules.create(
66+
group_id=security_group_id,
67+
direction="ingress",
68+
protocol="tcp",
69+
ethertype="IPv4",
70+
port_range_min=80,
71+
port_range_max=80,
72+
remote_ip_prefix="0.0.0.0/0",
73+
description="Allow HTTP traffic",
74+
)
75+
print(f"Created security group rule: ID={rule.id}, protocol={rule.protocol}, port={rule.port_range_min}")
76+
print("========================")
77+
return rule.id
78+
79+
80+
def replace_security_group_rule(*, client: Gcore, rule_id: str, security_group_id: str) -> str:
81+
print("\n=== REPLACE SECURITY GROUP RULE ===")
82+
rule = client.cloud.security_groups.rules.replace(
83+
rule_id=rule_id,
84+
direction="ingress",
85+
security_group_id=security_group_id,
86+
protocol="tcp",
87+
ethertype="IPv4",
88+
port_range_min=443,
89+
port_range_max=443,
90+
remote_ip_prefix="0.0.0.0/0",
91+
description="Allow HTTPS traffic",
92+
)
93+
print(f"Replaced security group rule: ID={rule.id}, protocol={rule.protocol}, port={rule.port_range_min}")
94+
print("========================")
95+
return rule.id
96+
97+
98+
def delete_security_group_rule(*, client: Gcore, rule_id: str) -> None:
99+
print("\n=== DELETE SECURITY GROUP RULE ===")
100+
client.cloud.security_groups.rules.delete(rule_id=rule_id)
101+
print(f"Deleted security group rule: ID={rule_id}")
102+
print("========================")
103+
104+
105+
if __name__ == "__main__":
106+
main()
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
import asyncio
2+
3+
from gcore import AsyncGcore
4+
from gcore.types.cloud.security_group_create_params import SecurityGroup
5+
6+
7+
async def main() -> None:
8+
gcore = AsyncGcore()
9+
10+
security_group_id = await create_security_group(client=gcore)
11+
await list_security_groups(client=gcore)
12+
await get_security_group(client=gcore, security_group_id=security_group_id)
13+
await update_security_group(client=gcore, security_group_id=security_group_id)
14+
15+
# Rules
16+
rule_id = await create_security_group_rule(client=gcore, security_group_id=security_group_id)
17+
rule_id = await replace_security_group_rule(client=gcore, rule_id=rule_id, security_group_id=security_group_id)
18+
await delete_security_group_rule(client=gcore, rule_id=rule_id)
19+
20+
await delete_security_group(client=gcore, security_group_id=security_group_id)
21+
22+
23+
async def create_security_group(client: AsyncGcore) -> str:
24+
print("\n=== CREATE SECURITY GROUP ===")
25+
security_group = await client.cloud.security_groups.create(
26+
security_group=SecurityGroup(name="gcore-go-example")
27+
)
28+
print(f"Created security group: ID={security_group.id}, name={security_group.name}")
29+
print("========================")
30+
return security_group.id
31+
32+
33+
async def list_security_groups(*, client: AsyncGcore) -> None:
34+
print("\n=== LIST SECURITY GROUPS ===")
35+
security_groups = await client.cloud.security_groups.list()
36+
count = 0
37+
async for security_group in security_groups:
38+
count += 1
39+
print(f"{count}. Security group: ID={security_group.id}, name={security_group.name}")
40+
print("========================")
41+
42+
43+
async def get_security_group(*, client: AsyncGcore, security_group_id: str) -> None:
44+
print("\n=== GET SECURITY GROUP ===")
45+
security_group = await client.cloud.security_groups.get(group_id=security_group_id)
46+
print(
47+
f"Security group: ID={security_group.id}, name={security_group.name}, description={security_group.description}"
48+
)
49+
print("========================")
50+
51+
52+
async def update_security_group(*, client: AsyncGcore, security_group_id: str) -> None:
53+
print("\n=== UPDATE SECURITY GROUP ===")
54+
security_group = await client.cloud.security_groups.update(
55+
group_id=security_group_id,
56+
name="gcore-go-example-updated",
57+
)
58+
print(f"Updated security group: ID={security_group.id}, name={security_group.name}")
59+
print("========================")
60+
61+
62+
63+
async def delete_security_group(*, client: AsyncGcore, security_group_id: str) -> None:
64+
print("\n=== DELETE SECURITY GROUP ===")
65+
await client.cloud.security_groups.delete(group_id=security_group_id)
66+
print(f"Deleted security group: ID={security_group_id}")
67+
print("========================")
68+
# Security Group Rules functions
69+
70+
71+
async def create_security_group_rule(*, client: AsyncGcore, security_group_id: str) -> str:
72+
print("\n=== CREATE SECURITY GROUP RULE ===")
73+
rule = await client.cloud.security_groups.rules.create(
74+
group_id=security_group_id,
75+
direction="ingress",
76+
protocol="tcp",
77+
ethertype="IPv4",
78+
port_range_min=80,
79+
port_range_max=80,
80+
remote_ip_prefix="0.0.0.0/0",
81+
description="Allow HTTP traffic",
82+
)
83+
print(f"Created security group rule: ID={rule.id}, protocol={rule.protocol}, port={rule.port_range_min}")
84+
print("========================")
85+
return rule.id
86+
87+
88+
async def replace_security_group_rule(*, client: AsyncGcore, rule_id: str, security_group_id: str) -> str:
89+
print("\n=== REPLACE SECURITY GROUP RULE ===")
90+
rule = await client.cloud.security_groups.rules.replace(
91+
rule_id=rule_id,
92+
direction="ingress",
93+
security_group_id=security_group_id,
94+
protocol="tcp",
95+
ethertype="IPv4",
96+
port_range_min=443,
97+
port_range_max=443,
98+
remote_ip_prefix="0.0.0.0/0",
99+
description="Allow HTTPS traffic",
100+
)
101+
print(f"Replaced security group rule: ID={rule.id}, protocol={rule.protocol}, port={rule.port_range_min}")
102+
print("========================")
103+
return rule.id
104+
105+
106+
async def delete_security_group_rule(*, client: AsyncGcore, rule_id: str) -> None:
107+
print("\n=== DELETE SECURITY GROUP RULE ===")
108+
await client.cloud.security_groups.rules.delete(rule_id=rule_id)
109+
print(f"Deleted security group rule: ID={rule_id}")
110+
print("========================")
111+
112+
113+
if __name__ == "__main__":
114+
asyncio.run(main())

0 commit comments

Comments
 (0)