Revision d73d59e4

b/api/handlers.py
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):
b/api/urls.py
62 62
    url_with_format(r'^servers/(?P<id>[^/]+)$', server_handler),
63 63
    url_with_format(r'^servers/(?P<id>[^/]+)/action$', server_actions_handler),
64 64
    url_with_format(r'^servers/(?P<id>[^/]+)/ips$', server_address_handler),
65
    url_with_format(r'^servers/(?P<id>[^/]+)/ips/private$', server_address_handler),
66
    url_with_format(r'^servers/(?P<id>[^/]+)/ips/public/(?P<address>[^/]+)$', server_address_handler),
65
    url_with_format(r'^servers/(?P<id>[^/]+)/ips/(?P<networkID>[^/]+)$', server_address_handler),
67 66
    url_with_format(r'^servers/(?P<id>[^/]+)/backup_schedule', server_backup_handler),
68 67
    url_with_format(r'^servers/(?P<id>[^/]+)/meta$', server_metadata_handler),
69 68
    url_with_format(r'^servers/(?P<id>[^/]+)/meta/(?P<key>[^/]+)$', server_metadata_handler),

Also available in: Unified diff