+ def save_network_ports(self, noAct=False):
+ # First search for any network that already has a filled in 'ports'
+ # field. We'll assume there can only be one, so it must be the right
+ # one.
+ for networkSlice in self.networkslices.all():
+ network = networkSlice.network
+ if (network.owner.id != self.id):
+ continue
+ if network.ports:
+ network.ports = self._network_ports
+ if (not noAct):
+ network.save()
+ return
+
+ # Now try a network that is a "NAT", since setting ports on a non-NAT
+ # network doesn't make much sense.
+ for networkSlice in self.networkslices.all():
+ network = networkSlice.network
+ if (network.owner.id != self.id):
+ continue
+ if network.template.translation=="NAT":
+ network.ports = self._network_ports
+ if (not noAct):
+ network.save()
+ return
+
+ # uh oh, we didn't find a network
+
+ raise ValueError("No network was found that ports could be set on")
+