import logging from autotest_lib.client.common_lib import enum, global_config # Changing this file has consequences that need to be understood. # Adding a protection level to the enum requires you to append your change to # the end of the enum or a database migration needs to be added to migrate # older protections to match the layout of the new enum. # Removing a protection level from the enum requires a database migration to # update the integer values in the DB and migrate hosts that use the removed # protection to a default protection level. # IF THIS IS NOT DONE HOSTS' PROTECTION LEVELS WILL BE CHANGED RANDOMLY. Protection = enum.Enum('No protection', # Repair can do anything to # this host. 'Repair software only', # repair should try to fix any # software problem 'Repair filesystem only', # Repair should only try to # recover the file system. 'Do not repair', # Repair should not touch this # host. 'Do not verify', # Don't even try to verify # this host ) running_client = global_config.global_config.check_stand_alone_client_run() try: _bad_value = object() default_protection = global_config.global_config.get_config_value( 'HOSTS', 'default_protection', default=_bad_value) if default_protection == _bad_value: if not running_client: raise global_config.ConfigError( 'No HOSTS.default_protection defined in global_config.ini') else: default = Protection.get_value(default_protection) # It is OK to have an empty global configuration object (stand alone client) # so we trap this exception. except global_config.ConfigError: pass choices = Protection.choices()