diff --git a/app/models.py b/app/models.py index e904ad4b83cafc53219f019785627c0ef831a651..ecdb0e82e055ce414e4640f97a2aa3a0929f8d5d 100644 --- a/app/models.py +++ b/app/models.py @@ -868,6 +868,10 @@ class Network(CreatedMixin, db.Model): def netmask(self): return self.network_ip.netmask + @property + def broadcast(self): + return self.network_ip.broadcast_address + @property def first(self): return ipaddress.ip_address(self.first_ip) @@ -961,6 +965,7 @@ class Network(CreatedMixin, db.Model): "vlan_id": self.vlan_id, "address": self.address, "netmask": str(self.netmask), + "broadcast": str(self.broadcast), "first_ip": self.first_ip, "last_ip": self.last_ip, "gateway": self.gateway, diff --git a/app/templates/network/view_network.html b/app/templates/network/view_network.html index 8527eb91b916803b86e88b9cb2978ad600b2e8ff..2170093b4053179e94189b2b1b5b9745c956a0b5 100644 --- a/app/templates/network/view_network.html +++ b/app/templates/network/view_network.html @@ -4,42 +4,44 @@ {% block title %}View Ansible network - CSEntry{% endblock %} {% block networks_nav %} - <li class="nav-item"> - <a class="nav-link active" href="{{ url_for('network.view_network', vlan_name=network.vlan_name) }}">View network</a> - </li> +<li class="nav-item"> + <a class="nav-link active" href="{{ url_for('network.view_network', vlan_name=network.vlan_name) }}">View network</a> +</li> {% endblock %} {% block networks_main %} - <div class="row"> - <div class="col-sm-9"> - <dl class="row"> - <dt class="col-sm-3">Vlan name</dt> - <dd class="col-sm-9">{{ network.vlan_name }}</dd> - <dt class="col-sm-3">Vlan id</dt> - <dd class="col-sm-9">{{ network.vlan_id }}</dd> - <dt class="col-sm-3">Description</dt> - <dd class="col-sm-9">{{ network.description | safe }}</dd> - <dt class="col-sm-3">Address</dt> - <dd class="col-sm-9">{{ network.address }}</dd> - <dt class="col-sm-3">First IP</dt> - <dd class="col-sm-9">{{ network.first_ip }}</dd> - <dt class="col-sm-3">Last IP</dt> - <dd class="col-sm-9">{{ network.last_ip }}</dd> - <dt class="col-sm-3">Gateway</dt> - <dd class="col-sm-9">{{ network.gateway }}</dd> - <dt class="col-sm-3">Network Scope</dt> - <dd class="col-sm-9">{{ network.scope }}</dd> - <dt class="col-sm-3">Domain</dt> - <dd class="col-sm-9">{{ network.domain }}</dd> - <dt class="col-sm-3">Admin only</dt> - <dd class="col-sm-9">{{ network.admin_only }}</dd> - <dt class="col-sm-3">Hosts</dt> - <dd class="col-sm-9">{{ link_to_interfaces_host(network.interfaces) }}</dd> - <dt class="col-sm-3">Created by</dt> - <dd class="col-sm-9">{{ network.user }}</dd> - <dt class="col-sm-3">Created at</dt> - <dd class="col-sm-9">{{ network.created_at }}</dd> - </dl> - </div> +<div class="row"> + <div class="col-sm-9"> + <dl class="row"> + <dt class="col-sm-3">Vlan name</dt> + <dd class="col-sm-9">{{ network.vlan_name }}</dd> + <dt class="col-sm-3">Vlan id</dt> + <dd class="col-sm-9">{{ network.vlan_id }}</dd> + <dt class="col-sm-3">Description</dt> + <dd class="col-sm-9">{{ network.description | safe }}</dd> + <dt class="col-sm-3">Address</dt> + <dd class="col-sm-9">{{ network.address }}</dd> + <dt class="col-sm-3">First IP</dt> + <dd class="col-sm-9">{{ network.first_ip }}</dd> + <dt class="col-sm-3">Last IP</dt> + <dd class="col-sm-9">{{ network.last_ip }}</dd> + <dt class="col-sm-3">Gateway</dt> + <dd class="col-sm-9">{{ network.gateway }}</dd> + <dt class="col-sm-3">Broadcast</dt> + <dd class="col-sm-9">{{ network.broadcast }}</dd> + <dt class="col-sm-3">Network Scope</dt> + <dd class="col-sm-9">{{ network.scope }}</dd> + <dt class="col-sm-3">Domain</dt> + <dd class="col-sm-9">{{ network.domain }}</dd> + <dt class="col-sm-3">Admin only</dt> + <dd class="col-sm-9">{{ network.admin_only }}</dd> + <dt class="col-sm-3">Hosts</dt> + <dd class="col-sm-9">{{ link_to_interfaces_host(network.interfaces) }}</dd> + <dt class="col-sm-3">Created by</dt> + <dd class="col-sm-9">{{ network.user }}</dd> + <dt class="col-sm-3">Created at</dt> + <dd class="col-sm-9">{{ network.created_at }}</dd> + </dl> </div> -{%- endblock %} +</div> +{%- endblock %} \ No newline at end of file diff --git a/tests/functional/test_api.py b/tests/functional/test_api.py index 5ca9c1ac614b6507fdb531868812a71f2f35a465..41cc3b082b4a9fe9bf74a1dcc61bbaa75e8e48ba 100644 --- a/tests/functional/test_api.py +++ b/tests/functional/test_api.py @@ -723,6 +723,7 @@ def test_create_network(client, admin_token, network_scope_factory): "vlan_id", "address", "netmask", + "broadcast", "first_ip", "last_ip", "gateway", @@ -742,6 +743,7 @@ def test_create_network(client, admin_token, network_scope_factory): assert response.get_json()["last_ip"] == "172.16.1.250" assert response.get_json()["gateway"] == "172.16.1.254" assert response.get_json()["netmask"] == "255.255.255.0" + assert response.get_json()["broadcast"] == "172.16.1.255" # Check that address and name shall be unique response = post(client, f"{API_URL}/network/networks", data=data, token=admin_token)