diff --git a/plugins/network/api/routes.py b/plugins/network/api/routes.py index 3dfdc87..a011fa8 100644 --- a/plugins/network/api/routes.py +++ b/plugins/network/api/routes.py @@ -24,9 +24,13 @@ def _upsert_primary_ip(asset, ip): """Create/update/clear the asset's primary IP Communication from an ipaddress string. No-op if the IP CommunicationType is not seeded.""" ip = (ip or '').strip() - if not ip: - return comm = Communication.query.filter_by(assetid=asset.assetid, isprimary=True).first() + if not ip: + # Clearing the field clears the row's IP - it used to return early, so + # an address could be typed but never taken back out. + if comm: + comm.ipaddress = None + return if comm: comm.ipaddress = ip return diff --git a/plugins/network/frontend/views/NetworkDeviceForm.vue b/plugins/network/frontend/views/NetworkDeviceForm.vue index a10fe55..dbaa4b3 100644 --- a/plugins/network/frontend/views/NetworkDeviceForm.vue +++ b/plugins/network/frontend/views/NetworkDeviceForm.vue @@ -112,6 +112,16 @@ placeholder="e.g., sw-bldg1-floor2" /> +
+ + +