307 |
307 |
|
308 |
308 |
|
309 |
309 |
class ServerAddressHandler(BaseHandler):
|
310 |
|
allowed_methods = ('GET', 'PUT', 'DELETE')
|
|
310 |
"""Handler responsible for Server Addresses
|
|
311 |
|
|
312 |
handles Reboot, Shutdown and Start actions.
|
|
313 |
|
|
314 |
@HTTP methods: GET
|
|
315 |
@Parameters: Id of server and networkID (eg public, private)
|
|
316 |
@Responses: HTTP 200 if successfully call rapi, itemNotFound, serviceUnavailable otherwise
|
|
317 |
|
|
318 |
"""
|
|
319 |
allowed_methods = ('GET',)
|
311 |
320 |
|
312 |
321 |
def read(self, request, id, networkID=None):
|
313 |
322 |
"""List IP addresses for a server"""
|
314 |
323 |
|
315 |
|
if networkID is None:
|
316 |
|
pass
|
317 |
|
return {}
|
|
324 |
try:
|
|
325 |
server = VirtualMachine.objects.get(id=id)
|
|
326 |
address = {'public': { 'ip': {'addr': server.ipfour}, 'ip6': {'addr': server.ipsix}},'private': ''}
|
|
327 |
except VirtualMachine.DoesNotExist:
|
|
328 |
raise fault.itemNotFound
|
|
329 |
except VirtualMachine.MultipleObjectsReturned:
|
|
330 |
raise fault.serviceUnavailable
|
|
331 |
except Exception, e:
|
|
332 |
log.exception('Unexpected error: %s' % e)
|
|
333 |
raise fault.serviceUnavailable
|
318 |
334 |
|
319 |
|
def update(self, request, id, networkID=None):
|
320 |
|
"""Share an IP address to another in the group"""
|
321 |
|
return accepted
|
|
335 |
if networkID == "public":
|
|
336 |
address = {'public': { 'ip': {'addr': server.ipfour}, 'ip6': {'addr': server.ipsix}}}
|
|
337 |
elif networkID == "private":
|
|
338 |
address = {'private': ''}
|
|
339 |
return { "addresses": address }
|
322 |
340 |
|
323 |
|
def delete(self, request, id, networkID=None):
|
324 |
|
"""Unshare an IP address"""
|
325 |
|
return accepted
|
326 |
341 |
|
327 |
342 |
|
328 |
343 |
class ServerActionHandler(BaseHandler):
|