Fix subnets can not be deleted from network topology panel

The structure of DetailView was changed, so the url for the delete
subnet action needs to be updated so that subnets can be deleted properly.

Added the required method get_subnets_data in DetailView.

Added JS code to remove the subnet from the network node on network
topology panel after the subnet is deleted.

Fixed router interface not being removed from the network topology
panel after it's deleted.

Closes-bug: #1643414

Change-Id: I60cc161655b994c8e3ace5efc37459f3e9e60d67
This commit is contained in:
Ying Zuo 2017-06-28 21:08:54 -07:00
parent 1afe62b506
commit fb4ae6bbda
2 changed files with 22 additions and 4 deletions

View File

@ -139,6 +139,10 @@ class DetailView(tabs.TabbedTableView):
redirect=self.get_redirect_url())
return network
def get_subnets_data(self):
# MultiTableMixin requires this method to be defined
pass
def get_context_data(self, **kwargs):
context = super(DetailView, self).get_context_data(**kwargs)
network = self._get_data()

View File

@ -850,13 +850,13 @@ horizon.network_topology = {
self.removeNode(self.data.networks[deviceId]);
break;
case 'port':
self.removePort(deviceId, deleteData.device_data);
self.removePortOrSubnet(deviceId, deleteData.device_data);
break;
}
self.delete_balloon();
},
removePort: function(portId, deviceData) {
removePortOrSubnet: function(portId, deviceData) {
var self = this;
var routerId = deviceData.router_id;
var networkId = deviceData.network_id;
@ -881,16 +881,30 @@ horizon.network_topology = {
}
}
}
} else {
var networkData = self.find_by_id(networkId).data;
var subnets = networkData.subnets;
for (var subnet in subnets) {
if (subnets[subnet].id === portId) {
if (subnets.length == 1) {
delete(networkData.subnets);
} else {
subnets.splice(subnet, 1);
}
self.force.start();
break;
}
}
}
},
delete_port: function(routerId, portId, networkId) {
var message = {id:portId};
var data = {network_id:networkId,routerId:routerId};
var data = {network_id:networkId,router_id:routerId};
if (routerId) {
horizon.networktopologymessager.post_message(portId, 'router/' + routerId + '/', message, 'port', 'delete', data);
} else {
horizon.networktopologymessager.post_message(portId, 'network/' + networkId + '/', message, 'port', 'delete', data);
horizon.networktopologymessager.post_message(portId, 'network/' + networkId + '/?tab=network_tabs__subnets_tab', message, 'port', 'delete', data);
}
},