Home | History | Annotate | Download | only in common_lib
      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