Skip to content

Commit

Permalink
NetworkManager: change resource state to 'AVAILABLE' after create res…
Browse files Browse the repository at this point in the history
…ponse from 'PENDING' (#8132)
  • Loading branch information
zkarpinski authored Sep 21, 2024
1 parent 82cb6be commit acd682d
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 5 deletions.
5 changes: 5 additions & 0 deletions moto/networkmanager/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,11 @@ def _get_resource_from_arn(self, arn: str) -> Any:
except (KeyError, ValueError, AttributeError):
raise ResourceNotFound(arn)

def update_resource_state(self, resource_arn: str, state: str) -> None:
# Acceptable states: PENDING, AVAILABLE, DELETING, UPDATING
resource = self._get_resource_from_arn(resource_arn)
resource.state = state

def create_global_network(
self,
description: Optional[str],
Expand Down
26 changes: 21 additions & 5 deletions moto/networkmanager/responses.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,11 @@ def create_global_network(self) -> str:
description=description,
tags=tags,
)
return json.dumps(dict(GlobalNetwork=global_network.to_dict()))
resp_dict = dict(GlobalNetwork=global_network.to_dict())
self.networkmanager_backend.update_resource_state(
global_network.global_network_arn, "AVAILABLE"
)
return json.dumps(resp_dict)

def create_core_network(self) -> str:
params = json.loads(self.body)
Expand All @@ -43,7 +47,11 @@ def create_core_network(self) -> str:
policy_document=policy_document,
client_token=client_token,
)
return json.dumps(dict(CoreNetwork=core_network.to_dict()))
resp_dict = dict(CoreNetwork=core_network.to_dict())
self.networkmanager_backend.update_resource_state(
core_network.core_network_arn, "AVAILABLE"
)
return json.dumps(resp_dict)

def delete_core_network(self) -> str:
core_network_id = unquote(self.path.split("/")[-1])
Expand Down Expand Up @@ -122,7 +130,9 @@ def create_site(self) -> str:
location=location,
tags=tags,
)
return json.dumps(dict(Site=site.to_dict()))
resp_dict = dict(Site=site.to_dict())
self.networkmanager_backend.update_resource_state(site.site_arn, "AVAILABLE")
return json.dumps(resp_dict)

def delete_site(self) -> str:
global_network_id = unquote(self.path.split("/")[-3])
Expand Down Expand Up @@ -166,7 +176,9 @@ def create_link(self) -> str:
site_id=site_id,
tags=tags,
)
return json.dumps(dict(Link=link.to_dict()))
resp_dict = dict(Link=link.to_dict())
self.networkmanager_backend.update_resource_state(link.link_arn, "AVAILABLE")
return json.dumps(resp_dict)

def get_links(self) -> str:
params = self._get_params()
Expand Down Expand Up @@ -222,7 +234,11 @@ def create_device(self) -> str:
site_id=site_id,
tags=tags,
)
return json.dumps(dict(Device=device.to_dict()))
resp_dict = dict(Device=device.to_dict())
self.networkmanager_backend.update_resource_state(
device.device_arn, "AVAILABLE"
)
return json.dumps(resp_dict)

def get_devices(self) -> str:
params = self._get_params()
Expand Down
4 changes: 4 additions & 0 deletions tests/test_networkmanager/test_networkmanager.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ def test_create_global_network():
assert global_network["Tags"] == [{"Key": "Name", "Value": "TestNetwork"}]
assert global_network["State"] == "PENDING"

global_network = client.describe_global_networks()["GlobalNetworks"][0]
assert global_network["GlobalNetworkId"] == resp["GlobalNetwork"]["GlobalNetworkId"]
assert global_network["State"] == "AVAILABLE"


@mock_aws
def test_create_core_network():
Expand Down

0 comments on commit acd682d

Please sign in to comment.