25 from cm.models.user_network
import UserNetwork
26 from cm.models.available_network
import AvailableNetwork
27 from cm.models.user
import User
28 from cm.utils.exception
import CMException
29 from cm.utils.decorators
import admin_cm_log
30 from common.states
import available_network_states
32 from netaddr
import IPNetwork
44 def add(caller_id, address, mask):
47 ipnet = IPNetwork(
'%s/%d' % (address, mask))
48 if AvailableNetwork.network_exists(ipnet):
49 raise CMException(
'network_exists')
52 new_net = AvailableNetwork()
53 new_net.address = ipnet.network
56 if ipnet.is_private():
57 new_net.state = available_network_states[
'ok']
59 new_net.state = available_network_states[
'locked']
74 net = AvailableNetwork.objects.get(id=pool_id)
76 raise CMException(
'available_network_not_found')
91 net = UserNetwork.objects.get(id=network_id)
93 raise CMException(
'network_not_found')
106 for network
in AvailableNetwork.objects.all():
107 response.append(network.dict)
127 user = User.get(user_id)
128 user_networks = UserNetwork.objects.filter(user=user)
130 user_networks = UserNetwork.objects.all()
132 raise CMException(
'network_not_found')
135 for network
in user_networks:
136 if not (only_unused
and network.is_in_use()):
137 response.append(network.dict)
152 user_network = UserNetwork.objects.get(id=network_id)
154 raise CMException(
'network_not_found')
157 for lease
in user_network.lease_set.all():
158 response.append(lease.dict)
172 network = AvailableNetwork.objects.get(id=pool_id)
174 raise CMException(
'available_network_not_found')
175 network.state = available_network_states[
'locked']
189 network = AvailableNetwork.objects.get(id=pool_id)
191 raise CMException(
'available_network_not_found')
192 network.state = available_network_states[
'ok']