added add/remove fixed_ip actions to servers

This commit is contained in:
Sandy Walsh 2011-07-08 10:54:43 -07:00
parent f81fc89cc8
commit 2bba8e2e2b
3 changed files with 41 additions and 3 deletions

@ -149,10 +149,11 @@ class OpenStackShell(object):
if args.debug:
httplib2.debuglevel = 1
user, apikey, projectid, url = args.username, args.apikey, args.projectid, args.url
user, apikey, projectid, url = args.username, args.apikey, \
args.projectid, args.url
#FIXME(usrleon): Here should be restrict for project id same as for username or apikey
# but for compatibility it is not.
#FIXME(usrleon): Here should be restrict for project id same as
# for username or apikey but for compatibility it is not.
if not user:
raise CommandError("You must provide a username, either via "
@ -782,6 +783,22 @@ class OpenStackShell(object):
print_list(self.cs.zones.list(), ['ID', 'Name', 'Is Active', \
'API URL', 'Weight Offset', 'Weight Scale'])
@arg('server', metavar='<server>', help='Name or ID of server.')
@arg('network_id', metavar='<network_id>', help='Network ID.')
def do_add_fixed_ip(self, args):
"""Add new IP address to network."""
server = self._find_server(args.server)
server.add_fixed_ip(args.network_id)
print_dict(server._info)
@arg('server', metavar='<server>', help='Name or ID of server.')
@arg('address', metavar='<address>', help='IP Address.')
def do_remove_fixed_ip(self, args):
"""Remove an IP address from a server."""
server = self._find_server(args.server)
server.remove_fixed_ip(args.address)
print_dict(server._info)
def _find_server(self, server):
"""Get a server by name or ID."""
return self._find_resource(self.cs.servers, server)

@ -275,6 +275,10 @@ class FakeClient(OpenStackClient):
assert_equal(body[action], None)
elif action == 'migrate':
assert_equal(body[action], None)
elif action == 'addFixedIp':
assert_equal(body[action].keys(), ['networkId'])
elif action == 'removeFixedIp':
assert_equal(body[action].keys(), ['address'])
else:
fail("Unexpected server action: %s" % action)
return (202, None)

@ -149,9 +149,26 @@ def test_revert_resized_server():
cs.servers.revert_resize(s)
cs.assert_called('POST', '/servers/1234/action')
def test_migrate_server():
s = cs.servers.get(1234)
s.migrate()
cs.assert_called('POST', '/servers/1234/action')
cs.servers.migrate(s)
cs.assert_called('POST', '/servers/1234/action')
def test_add_fixed_ip():
s = cs.servers.get(1234)
s.add_fixed_ip(1)
cs.assert_called('POST', '/servers/1234/action')
cs.servers.add_fixed_ip(s, 1)
cs.assert_called('POST', '/servers/1234/action')
def test_remove_fixed_ip():
s = cs.servers.get(1234)
s.remove_fixed_ip('10.0.0.1')
cs.assert_called('POST', '/servers/1234/action')
cs.servers.remove_fixed_ip(s, '10.0.0.1')
cs.assert_called('POST', '/servers/1234/action')