summaryrefslogtreecommitdiff
path: root/openstackclient/compute
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/compute')
-rw-r--r--openstackclient/compute/v2/host.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/openstackclient/compute/v2/host.py b/openstackclient/compute/v2/host.py
index f2257d12..5af25310 100644
--- a/openstackclient/compute/v2/host.py
+++ b/openstackclient/compute/v2/host.py
@@ -44,6 +44,63 @@ class ListHost(command.Lister):
) for s in data))
+class SetHost(command.Command):
+ """Set host properties"""
+ def get_parser(self, prog_name):
+ parser = super(SetHost, self).get_parser(prog_name)
+ parser.add_argument(
+ "host",
+ metavar="<host>",
+ help="The host to modify (name or ID)"
+ )
+ status = parser.add_mutually_exclusive_group()
+ status.add_argument(
+ '--enable',
+ action='store_true',
+ help='Enable the host'
+ )
+ status.add_argument(
+ '--disable',
+ action='store_true',
+ help='Disable the host'
+ )
+ maintenance = parser.add_mutually_exclusive_group()
+ maintenance.add_argument(
+ '--enable-maintenance',
+ action='store_true',
+ help='Enable maintenance mode for the host'
+ )
+ maintenance.add_argument(
+ '--disable-maintenance',
+ action='store_true',
+ help='Disable maintenance mode for the host',
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ kwargs = {}
+
+ if parsed_args.enable:
+ kwargs['status'] = True
+ if parsed_args.disable:
+ kwargs['status'] = False
+ if parsed_args.enable_maintenance:
+ kwargs['maintenance_mode'] = True
+ if parsed_args.disable_maintenance:
+ kwargs['maintenance_mode'] = False
+
+ compute_client = self.app.client_manager.compute
+ foundhost = utils.find_resource(
+ compute_client.hosts,
+ parsed_args.host
+ )
+
+ compute_client.hosts.update(
+ foundhost.id,
+ kwargs
+ )
+
+
class ShowHost(command.Lister):
"""Show host command"""