Skip to content

Commit 8621ed3

Browse files
committed
added ec2 code and metadata
1 parent 780ebeb commit 8621ed3

File tree

7 files changed

+402
-40
lines changed

7 files changed

+402
-40
lines changed

.doc_gen/metadata/ec2_metadata.yaml

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1581,6 +1581,15 @@ ec2_DescribeRouteTables:
15811581
- description:
15821582
snippet_tags:
15831583
- php.example_code.ec2.service.describeRouteTables
1584+
Python:
1585+
versions:
1586+
- sdk_version: 3
1587+
github: python/example_code/ec2
1588+
excerpts:
1589+
- description:
1590+
snippet_tags:
1591+
- python.example_code.ec2.VpcWrapper.decl
1592+
- python.example_code.ec2.DescribeRouteTables
15841593
services:
15851594
ec2: {DescribeRouteTables}
15861595
ec2_DescribeRegions:
@@ -2003,6 +2012,15 @@ ec2_CreateVpc:
20032012
- description:
20042013
snippet_tags:
20052014
- ec2.Ruby.createVpc
2015+
Python:
2016+
versions:
2017+
- sdk_version: 3
2018+
github: python/example_code/ec2
2019+
excerpts:
2020+
- description:
2021+
snippet_tags:
2022+
- python.example_code.ec2.VpcWrapper.decl
2023+
- python.example_code.ec2.CreateVpc
20062024
services:
20072025
ec2: {CreateVpc}
20082026
ec2_DeleteVpc:
@@ -2016,6 +2034,15 @@ ec2_DeleteVpc:
20162034
- description:
20172035
snippet_tags:
20182036
- php.example_code.ec2.service.deleteVpc
2037+
Python:
2038+
versions:
2039+
- sdk_version: 3
2040+
github: python/example_code/ec2
2041+
excerpts:
2042+
- description:
2043+
snippet_tags:
2044+
- python.example_code.ec2.VpcWrapper.decl
2045+
- python.example_code.ec2.DeleteVpc
20192046
services:
20202047
ec2: {DeleteVpc}
20212048
ec2_CreateVpcEndpoint:
@@ -2029,9 +2056,18 @@ ec2_CreateVpcEndpoint:
20292056
- description:
20302057
snippet_tags:
20312058
- php.example_code.ec2.service.createVpcEndpoint
2059+
Python:
2060+
versions:
2061+
- sdk_version: 3
2062+
github: python/example_code/ec2
2063+
excerpts:
2064+
- description:
2065+
snippet_tags:
2066+
- python.example_code.ec2.VpcWrapper.decl
2067+
- python.example_code.ec2.CreateVpcEndpoint
20322068
services:
20332069
ec2: {CreateVpcEndpoint}
2034-
ec2_DeleteVpcEndpoint:
2070+
ec2_DeleteVpcEndpoints:
20352071
languages:
20362072
PHP:
20372073
versions:
@@ -2042,8 +2078,17 @@ ec2_DeleteVpcEndpoint:
20422078
- description:
20432079
snippet_tags:
20442080
- php.example_code.ec2.service.deleteVpcEndpoint
2081+
Python:
2082+
versions:
2083+
- sdk_version: 3
2084+
github: python/example_code/ec2
2085+
excerpts:
2086+
- description:
2087+
snippet_tags:
2088+
- python.example_code.ec2.VpcWrapper.decl
2089+
- python.example_code.ec2.DeleteVpcEndpoints
20452090
services:
2046-
ec2: {DeleteVpcEndpoint}
2091+
ec2: {DeleteVpcEndpoints}
20472092
ec2_DescribeIamInstanceProfileAssociations:
20482093
languages:
20492094
.NET:

python/example_code/ec2/README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,20 @@ Code excerpts that show you how to call individual service functions.
5656
- [CreateKeyPair](key_pair.py#L57)
5757
- [CreateLaunchTemplate](../../cross_service/resilient_service/auto_scaler.py#L383)
5858
- [CreateSecurityGroup](security_group.py#L42)
59+
- [CreateVpc](vpc.py#L41)
60+
- [CreateVpcEndpoint](vpc.py#L95)
5961
- [DeleteKeyPair](key_pair.py#L118)
6062
- [DeleteLaunchTemplate](../../cross_service/resilient_service/auto_scaler.py#L447)
6163
- [DeleteSecurityGroup](security_group.py#L148)
64+
- [DeleteVpc](vpc.py#L151)
65+
- [DeleteVpcEndpoints](vpc.py#L131)
6266
- [DescribeAvailabilityZones](../../cross_service/resilient_service/auto_scaler.py#L473)
6367
- [DescribeIamInstanceProfileAssociations](../../cross_service/resilient_service/auto_scaler.py#L216)
6468
- [DescribeImages](instance.py#L253)
6569
- [DescribeInstanceTypes](instance.py#L274)
6670
- [DescribeInstances](instance.py#L106)
6771
- [DescribeKeyPairs](key_pair.py#L89)
72+
- [DescribeRouteTables](vpc.py#L72)
6873
- [DescribeSecurityGroups](security_group.py#L108)
6974
- [DescribeSubnets](../../cross_service/resilient_service/auto_scaler.py#L821)
7075
- [DescribeVpcs](../../cross_service/resilient_service/auto_scaler.py#L684)
@@ -180,4 +185,4 @@ in the `python` folder.
180185

181186
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
182187

183-
SPDX-License-Identifier: Apache-2.0
188+
SPDX-License-Identifier: Apache-2.0
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
"""
5+
Unit tests for cleanup in vpc.py.
6+
"""
7+
import sys
8+
9+
import boto3
10+
import pytest
11+
import os
12+
from botocore.exceptions import ClientError
13+
from botocore import waiter
14+
15+
script_dir = os.path.dirname(os.path.abspath(__file__))
16+
17+
18+
sys.path.append(script_dir)
19+
# Add relative path to include VpcWrapper.
20+
sys.path.append(os.path.dirname(script_dir))
21+
from vpc import VpcWrapper
22+
23+
# Add relative path to include demo_tools in this code example without need for setup.
24+
sys.path.append(os.path.join(script_dir, "../../.."))
25+
26+
from test_tools.fixtures.common import *
27+
28+
29+
@pytest.mark.parametrize("error_code", [None, "TestException"])
30+
def test_create(monkeypatch, make_stubber, error_code):
31+
ec2_client = boto3.client("ec2")
32+
ec2_stubber = make_stubber(ec2_client)
33+
34+
# Mock the waiters.
35+
monkeypatch.setattr(waiter.Waiter, "wait", lambda arg, **kwargs: None)
36+
37+
wrapper = VpcWrapper(ec2_client)
38+
vpc_id = "vpc-a01106c2"
39+
cidr_block = "10.0.0.0/16"
40+
ec2_stubber.stub_create_vpc(cidr_block, vpc_id, error_code=error_code)
41+
if error_code is None:
42+
created_vpc_id = wrapper.create(cidr_block)
43+
assert created_vpc_id == vpc_id
44+
else:
45+
with pytest.raises(ClientError) as exc_info:
46+
wrapper.create(cidr_block)
47+
assert exc_info.value.response["Error"]["Code"] == error_code
48+
49+
50+
@pytest.mark.parametrize("error_code", [None, "TestException"])
51+
def test_create_vpc_endpoint(make_stubber, error_code):
52+
ec2_client = boto3.client("ec2")
53+
ec2_stubber = make_stubber(ec2_client)
54+
55+
wrapper = VpcWrapper(ec2_client)
56+
vpc_id = "XXXXXXXXXXXX"
57+
service_name = "com.amazonaws.us-west-2.s3"
58+
route_table_id = "XXXXXXXXXXXXX"
59+
vpc_endpoint_id = f"vpce-{vpc_id}"
60+
ec2_stubber.stub_create_vpc_endpoint(
61+
vpc_id, route_table_id, service_name, error_code=error_code
62+
)
63+
if error_code is None:
64+
created_endpoint_id = wrapper.create_vpc_endpoint(
65+
vpc_id, service_name, [route_table_id]
66+
)
67+
assert created_endpoint_id["VpcEndpointId"] == vpc_endpoint_id
68+
else:
69+
with pytest.raises(ClientError) as exc_info:
70+
wrapper.create_vpc_endpoint(vpc_id, service_name, [route_table_id])
71+
assert exc_info.value.response["Error"]["Code"] == error_code
72+
73+
74+
@pytest.mark.parametrize("error_code", [None, "TestException"])
75+
def test_describe_route_tables(make_stubber, error_code):
76+
ec2_client = boto3.client("ec2")
77+
ec2_stubber = make_stubber(ec2_client)
78+
79+
wrapper = VpcWrapper(ec2_client)
80+
vpc_id = "XXXXXXXXXXXX"
81+
route_table_id = "XXXXXXXXXXXXX"
82+
filters = [{"Name": "vpc-id", "Values": [vpc_id]}]
83+
ec2_stubber.stub_describe_route_tables(
84+
filters, vpc_id, route_table_id, error_code=error_code
85+
)
86+
if error_code is None:
87+
wrapper.describe_route_tables([vpc_id])
88+
else:
89+
with pytest.raises(ClientError) as exc_info:
90+
wrapper.describe_route_tables([vpc_id])
91+
assert exc_info.value.response["Error"]["Code"] == error_code
92+
93+
94+
@pytest.mark.parametrize("error_code", [None, "TestException"])
95+
def test_delete_vpc_endpoints(make_stubber, error_code):
96+
ec2_client = boto3.client("ec2")
97+
ec2_stubber = make_stubber(ec2_client)
98+
99+
wrapper = VpcWrapper(ec2_client)
100+
vpc_endpoint_id = "XXXXXXXXXXXX"
101+
ec2_stubber.stub_delete_vpc_endpoints([vpc_endpoint_id], error_code=error_code)
102+
if error_code is None:
103+
wrapper.delete_vpc_endpoints([vpc_endpoint_id])
104+
else:
105+
with pytest.raises(ClientError) as exc_info:
106+
wrapper.delete_vpc_endpoints([vpc_endpoint_id])
107+
assert exc_info.value.response["Error"]["Code"] == error_code
108+
109+
110+
@pytest.mark.parametrize("error_code", [None, "TestException"])
111+
def test_delete(make_stubber, error_code):
112+
ec2_client = boto3.client("ec2")
113+
ec2_stubber = make_stubber(ec2_client)
114+
115+
wrapper = VpcWrapper(ec2_client)
116+
vpc_id = "XXXXXXXXXXXX"
117+
ec2_stubber.stub_delete_vpc(vpc_id, error_code=error_code)
118+
if error_code is None:
119+
wrapper.delete(vpc_id)
120+
else:
121+
with pytest.raises(ClientError) as exc_info:
122+
wrapper.delete(vpc_id)
123+
assert exc_info.value.response["Error"]["Code"] == error_code

0 commit comments

Comments
 (0)