28 from cm.models.lease
import Lease
29 from cm.utils.exception
import CMException
30 from cm.utils
import log
31 from cm.models.user
import User
32 from cm.models.public_ip
import PublicIP
33 from cm.utils.decorators
import user_log
34 from datetime
import datetime
44 user = User.get(caller_id)
46 ips = PublicIP.objects.filter(user=user).all()
47 return [ip.dict
for ip
in ips]
64 user = User.get(caller_id)
66 if len(user.public_ips.all()) >= user.public_ip:
67 raise CMException(
'public_lease_limit')
69 ips = PublicIP.objects.filter(user=
None).all()
71 raise CMException(
'public_lease_not_found')
75 ip.request_time = datetime.now()
76 ip.release_time =
None
80 raise CMException(
'public_lease_request')
98 def assign(caller_id, lease_id, public_ip_id):
99 user = User.get(caller_id)
102 lease = Lease.objects.filter(user_network__user=user).
get(id=lease_id)
103 public_ip = PublicIP.objects.filter(user=user).
get(id=public_ip_id)
105 log.exception(caller_id, str(e))
106 raise CMException(
"lease_not_found")
109 raise CMException(
'lease_not_assigned')
111 if public_ip.lease !=
None:
112 raise CMException(
'public_lease_assigned')
114 public_ip.assign(lease)
131 user = User.get(caller_id)
134 lease = Lease.objects.get(id=lease_id, user_network__user=user)
136 log.exception(caller_id, str(e))
137 raise CMException(
"lease_not_found")
140 raise CMException(
'lease_not_assigned')
143 public_ip = lease.publicip_set.all()[0]
145 raise CMException(
'public_lease_assigned')
164 user = User.get(caller_id)
165 public_lease = PublicIP.objects.filter(user=user).
get(id=public_ip_id)
167 if public_lease.lease:
168 raise CMException(
'public_lease_assigned')
170 public_lease.user =
None