Skip to content

Commit

Permalink
Display only dhcp broadcast network in Deployment form (#2841)
Browse files Browse the repository at this point in the history
  • Loading branch information
szok committed Oct 18, 2016
1 parent c57ef70 commit 828a096
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 2 deletions.
7 changes: 6 additions & 1 deletion src/ralph/data_center/models/physical.py
Expand Up @@ -348,11 +348,16 @@ def _get_available_network_environments(self):
).distinct())
return NetworkEnvironment.objects.none()

def _get_available_networks(self, as_query=False):
def _get_available_networks(
self, as_query=False, is_broadcasted_in_dhcp=False
):
if self.rack_id:
query = Network.objects.filter(racks=self.rack_id).distinct()
else:
query = Network.objects.none()
if is_broadcasted_in_dhcp:
query = query.filter(dhcp_broadcast=True)

return query if as_query else list(query)

class Meta:
Expand Down
10 changes: 10 additions & 0 deletions src/ralph/data_center/tests/test_models.py
Expand Up @@ -291,6 +291,16 @@ def test_get_available_networks(self):
[self.net, self.net2]
)

def test_get_available_networks_is_broadcasted_in_dhcp(self):
self._prepare_rack(self.dc_asset, '192.168.1.1', '192.168.1.0/24')
self.net3 = NetworkFactory(
address='192.168.3.0/24', dhcp_broadcast=True
)
self.assertCountEqual(
self.dc_asset._get_available_networks(is_broadcasted_in_dhcp=True),
[self.net, self.net2]
)

def test_get_available_networks_no_rack(self):
NetworkFactory(address='192.168.1.0/24')
NetworkFactory(address='192.168.2.0/24')
Expand Down
4 changes: 3 additions & 1 deletion src/ralph/deployment/deployment.py
Expand Up @@ -138,7 +138,9 @@ def next_free_ip_choices(actions, objects):
"""
networks = []
for obj in objects:
networks.append(set(obj._get_available_networks()))
networks.append(set(obj._get_available_networks(
is_broadcasted_in_dhcp=True
)))
# get common part
networks = set.intersection(*networks)
ips = [
Expand Down

0 comments on commit 828a096

Please sign in to comment.