diff --git a/novaclient/v1_1/servers.py b/novaclient/v1_1/servers.py index 02af563f1..78bb4351c 100644 --- a/novaclient/v1_1/servers.py +++ b/novaclient/v1_1/servers.py @@ -293,6 +293,12 @@ class Server(base.Resource): """ self.manager.reset_state(self, state) + def reset_network(self): + """ + Reset network of an instance. + """ + self.manager.reset_network(self) + def add_security_group(self, security_group): """ Add a security group to an instance. @@ -780,6 +786,12 @@ class ServerManager(local_base.BootingManagerWithFind): """ self._action('os-resetState', server, dict(state=state)) + def reset_network(self, server): + """ + Reset network of an instance. + """ + self._action('resetNetwork', server) + def add_security_group(self, server, security_group): """ Add a Security Group to a instance diff --git a/novaclient/v1_1/shell.py b/novaclient/v1_1/shell.py index d53ca08e7..95f1e6b9a 100644 --- a/novaclient/v1_1/shell.py +++ b/novaclient/v1_1/shell.py @@ -2380,6 +2380,12 @@ def do_reset_state(cs, args): _find_server(cs, args.server).reset_state(args.state) +@utils.arg('server', metavar='', help='Name or ID of server.') +def do_reset_network(cs, args): + """Reset network of an instance.""" + _find_server(cs, args.server).reset_network() + + @utils.arg('--host', metavar='', default=None, help='Name of host.') @utils.arg('--servicename', metavar='', default=None, diff --git a/tests/v1_1/fakes.py b/tests/v1_1/fakes.py index ab1da609e..d93e92ae3 100644 --- a/tests/v1_1/fakes.py +++ b/tests/v1_1/fakes.py @@ -497,6 +497,8 @@ class FakeHTTPClient(base_client.HTTPClient): 'disk_over_commit']) elif action == 'os-resetState': assert body[action].keys() == ['state'] + elif action == 'resetNetwork': + assert body[action] is None elif action == 'addSecurityGroup': assert body[action].keys() == ['name'] elif action == 'removeSecurityGroup': diff --git a/tests/v1_1/test_servers.py b/tests/v1_1/test_servers.py index 0c8760156..f281ee663 100644 --- a/tests/v1_1/test_servers.py +++ b/tests/v1_1/test_servers.py @@ -404,6 +404,13 @@ class ServersTest(utils.TestCase): cs.servers.reset_state(s, 'newstate') cs.assert_called('POST', '/servers/1234/action') + def test_reset_network(self): + s = cs.servers.get(1234) + s.reset_network() + cs.assert_called('POST', '/servers/1234/action') + cs.servers.reset_network(s) + cs.assert_called('POST', '/servers/1234/action') + def test_add_security_group(self): s = cs.servers.get(1234) s.add_security_group('newsg') diff --git a/tests/v1_1/test_shell.py b/tests/v1_1/test_shell.py index a0e9d1612..5bb954f0f 100644 --- a/tests/v1_1/test_shell.py +++ b/tests/v1_1/test_shell.py @@ -759,6 +759,11 @@ class ShellTest(utils.TestCase): self.assert_called('POST', '/servers/1234/action', {'os-resetState': {'state': 'active'}}) + def test_reset_network(self): + self.run_command('reset-network sample-server') + self.assert_called('POST', '/servers/1234/action', + {'resetNetwork': None}) + def test_services_list(self): self.run_command('service-list') self.assert_called('GET', '/os-services')