def do_node_set_maintenance(cc, args): """Enable or disable maintenance mode for a node.""" if args.reason and args.maintenance_mode.lower() in ('false', 'off'): raise exceptions.CommandError(_('Cannot set "reason" when turning off ' 'maintenance mode.')) cc.node.set_maintenance(args.node, args.maintenance_mode.lower(), maint_reason=args.reason)
def do_node_set_provision_state(cc, args): """Provision, rebuild, delete, inspect, provide or manage an instance.""" if args.config_drive and args.provision_state != 'active': raise exceptions.CommandError(_('--config-drive is only valid when ' 'setting provision state to "active"')) cc.node.set_provision_state(args.node, args.provision_state, configdrive=args.config_drive)
def do_node_set_maintenance(cc, args): """Set maintenance mode on or off.""" if args.reason and args.maintenance_mode == 'off': raise exceptions.CommandError( _('Cannot set "reason" when turning off ' 'maintenance mode.')) cc.node.set_maintenance(args.node, args.maintenance_mode, maint_reason=args.reason)
def do_node_set_maintenance(cc, args): """Enable or disable maintenance mode for a node.""" maintenance_mode = utils.bool_argument_value("<maintenance-mode>", args.maintenance_mode) if args.reason and not maintenance_mode: raise exceptions.CommandError( _('Cannot set "reason" when turning off ' 'maintenance mode.')) cc.node.set_maintenance(args.node, maintenance_mode, maint_reason=args.reason)
def find_resource(manager, name_or_id, **find_args): """Look for resource in a given manager. Used as a helper for the _find_* methods. Example: .. code-block:: python def _find_hypervisor(cs, hypervisor): #Get a hypervisor by name or ID. return cliutils.find_resource(cs.hypervisors, hypervisor) """ # first try to get entity as integer id try: return manager.get(int(name_or_id)) except (TypeError, ValueError, exceptions.NotFound): pass # now try to get entity as uuid try: if six.PY2: tmp_id = encodeutils.safe_encode(name_or_id) else: tmp_id = encodeutils.safe_decode(name_or_id) if uuidutils.is_uuid_like(tmp_id): return manager.get(tmp_id) except (TypeError, ValueError, exceptions.NotFound): pass # for str id which is not uuid if getattr(manager, 'is_alphanum_id_allowed', False): try: return manager.get(name_or_id) except exceptions.NotFound: pass try: try: return manager.find(human_id=name_or_id, **find_args) except exceptions.NotFound: pass # finally try to find entity by name try: resource = getattr(manager, 'resource_class', None) name_attr = resource.NAME_ATTR if resource else 'name' kwargs = {name_attr: name_or_id} kwargs.update(find_args) return manager.find(**kwargs) except exceptions.NotFound: msg = _("No %(name)s with a name or " "ID of '%(name_or_id)s' exists.") % \ { "name": manager.resource_class.__name__.lower(), "name_or_id": name_or_id } raise exceptions.CommandError(msg) except exceptions.NoUniqueMatch: msg = _("Multiple %(name)s matches found for " "'%(name_or_id)s', use an ID to be more specific.") % \ { "name": manager.resource_class.__name__.lower(), "name_or_id": name_or_id } raise exceptions.CommandError(msg)