Skip to content

Commit 713c6b0

Browse files
authored
Merge pull request #1173 from rackerlabs/stop-managing-outside-network
chore: sync_keystone: Stop managing OUTSIDE networks for tenants
2 parents 8490db6 + da739c0 commit 713c6b0

File tree

2 files changed

+4
-64
lines changed

2 files changed

+4
-64
lines changed

python/understack-workflows/tests/test_sync_keystone.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,6 @@ def test_handle_project_delete(
117117
tenant_obj if tenant_exists else None
118118
)
119119

120-
mock_delete_network = mocker.patch(
121-
"understack_workflows.main.sync_keystone._delete_outside_network"
122-
)
123120
mock_unmap_devices = mocker.patch(
124121
"understack_workflows.main.sync_keystone._unmap_tenant_from_devices"
125122
)
@@ -130,12 +127,10 @@ def test_handle_project_delete(
130127
mock_pynautobot_api.tenancy.tenants.get.assert_called_once_with(id=project_id)
131128

132129
if tenant_exists:
133-
mock_delete_network.assert_called_once_with(conn_mock, project_id)
134130
mock_unmap_devices.assert_called_once_with(
135131
tenant_id=project_id, nautobot=mock_pynautobot_api
136132
)
137133
tenant_obj.delete.assert_called_once()
138134
else:
139-
mock_delete_network.assert_not_called()
140135
mock_unmap_devices.assert_not_called()
141136
tenant_obj.delete.assert_not_called()

python/understack-workflows/understack_workflows/main/sync_keystone.py

Lines changed: 4 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
_EXIT_API_ERROR = 1
2222
_EXIT_EVENT_UNKNOWN = 2
2323

24-
OUTSIDE_NETWORK_NAME = "OUTSIDE"
25-
2624

2725
class Event(StrEnum):
2826
ProjectCreate = "identity.project.created"
@@ -50,55 +48,7 @@ def argument_parser():
5048
return parser
5149

5250

53-
def _create_outside_network(conn: Connection, project_id: uuid.UUID):
54-
network = _find_outside_network(conn, project_id.hex)
55-
if network:
56-
logger.info(
57-
"%s Network %s already exists for this tenant",
58-
OUTSIDE_NETWORK_NAME,
59-
network.id,
60-
)
61-
else:
62-
payload = {
63-
"project_id": project_id.hex,
64-
"name": OUTSIDE_NETWORK_NAME,
65-
"router:external": False,
66-
}
67-
network = conn.network.create_network(**payload) # type: ignore
68-
logger.info(
69-
"Created %s Network %s for tenant", OUTSIDE_NETWORK_NAME, network.id
70-
)
71-
conn.network.create_rbac_policy( # type: ignore
72-
object_type="network",
73-
object_id=network.id,
74-
action="access_as_external",
75-
target_project_id=project_id.hex,
76-
)
77-
conn.network.create_rbac_policy( # type: ignore
78-
object_type="network",
79-
object_id=network.id,
80-
action="access_as_shared",
81-
target_project_id=project_id.hex,
82-
)
83-
84-
85-
def _delete_outside_network(conn: Connection, project_id: uuid.UUID):
86-
network = _find_outside_network(conn, project_id.hex)
87-
if network:
88-
conn.delete_network(network.id)
89-
logger.info(
90-
"Deleted %s Network %s for this tenant", OUTSIDE_NETWORK_NAME, network.id
91-
)
92-
93-
94-
def _find_outside_network(conn: Connection, project_id: str):
95-
return conn.network.find_network( # type: ignore
96-
project_id=project_id,
97-
name_or_id=OUTSIDE_NETWORK_NAME,
98-
)
99-
100-
101-
def _tenant_attrs(conn: Connection, project_id: uuid.UUID) -> tuple[str, str, bool]:
51+
def _tenant_attrs(conn: Connection, project_id: uuid.UUID) -> tuple[str, str]:
10252
project = conn.identity.get_project(project_id.hex) # type: ignore
10353
domain_id = project.domain_id
10454
is_default_domain = domain_id == "default"
@@ -110,7 +60,7 @@ def _tenant_attrs(conn: Connection, project_id: uuid.UUID) -> tuple[str, str, bo
11060
domain_name = domain.name
11161

11262
tenant_name = f"{domain_name}:{project.name}"
113-
return tenant_name, str(project.description), is_default_domain
63+
return tenant_name, str(project.description)
11464

11565

11666
def _unmap_tenant_from_devices(
@@ -127,14 +77,12 @@ def handle_project_create(
12777
conn: Connection, nautobot: pynautobot.api, project_id: uuid.UUID
12878
) -> int:
12979
logger.info("got request to create tenant %s", project_id.hex)
130-
tenant_name, tenant_description, is_default_domain = _tenant_attrs(conn, project_id)
80+
tenant_name, tenant_description = _tenant_attrs(conn, project_id)
13181

13282
try:
13383
tenant = nautobot.tenancy.tenants.create(
13484
id=str(project_id), name=tenant_name, description=tenant_description
13585
)
136-
if is_default_domain:
137-
_create_outside_network(conn, project_id)
13886
except Exception:
13987
logger.exception(
14088
"Unable to create project %s / %s", str(project_id), tenant_name
@@ -149,7 +97,7 @@ def handle_project_update(
14997
conn: Connection, nautobot: pynautobot.api, project_id: uuid.UUID
15098
) -> int:
15199
logger.info("got request to update tenant %s", project_id.hex)
152-
tenant_name, tenant_description, is_default_domain = _tenant_attrs(conn, project_id)
100+
tenant_name, tenant_description = _tenant_attrs(conn, project_id)
153101

154102
existing_tenant = nautobot.tenancy.tenants.get(id=project_id)
155103
logger.info("existing_tenant: %s", existing_tenant)
@@ -170,8 +118,6 @@ def handle_project_update(
170118
existing_tenant.last_updated, # type: ignore
171119
)
172120

173-
if is_default_domain:
174-
_create_outside_network(conn, project_id)
175121
except Exception:
176122
logger.exception(
177123
"Unable to update project %s / %s", str(project_id), tenant_name
@@ -189,7 +135,6 @@ def handle_project_delete(
189135
logger.warning("tenant %s does not exist, nothing to delete", project_id)
190136
return _EXIT_SUCCESS
191137

192-
_delete_outside_network(conn, project_id)
193138
_unmap_tenant_from_devices(tenant_id=project_id, nautobot=nautobot)
194139

195140
tenant = cast(Record, tenant)

0 commit comments

Comments
 (0)