1 import logging 2 from autotest_lib.client.common_lib import enum, global_config 3 4 # Changing this file has consequences that need to be understood. 5 # Adding a protection level to the enum requires you to append your change to 6 # the end of the enum or a database migration needs to be added to migrate 7 # older protections to match the layout of the new enum. 8 # Removing a protection level from the enum requires a database migration to 9 # update the integer values in the DB and migrate hosts that use the removed 10 # protection to a default protection level. 11 # IF THIS IS NOT DONE HOSTS' PROTECTION LEVELS WILL BE CHANGED RANDOMLY. 12 13 Protection = enum.Enum('No protection', # Repair can do anything to 14 # this host. 15 'Repair software only', # repair should try to fix any 16 # software problem 17 'Repair filesystem only', # Repair should only try to 18 # recover the file system. 19 'Do not repair', # Repair should not touch this 20 # host. 21 'Do not verify', # Don't even try to verify 22 # this host 23 ) 24 25 running_client = global_config.global_config.check_stand_alone_client_run() 26 27 try: 28 _bad_value = object() 29 default_protection = global_config.global_config.get_config_value( 30 'HOSTS', 'default_protection', default=_bad_value) 31 if default_protection == _bad_value: 32 if not running_client: 33 raise global_config.ConfigError( 34 'No HOSTS.default_protection defined in global_config.ini') 35 else: 36 default = Protection.get_value(default_protection) 37 38 # It is OK to have an empty global configuration object (stand alone client) 39 # so we trap this exception. 40 except global_config.ConfigError: 41 pass 42 43 choices = Protection.choices() 44