| 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() |