class PlainBoxConfig(config.Config): """ Configuration for PlainBox itself """ environment = config.Section( help_text=_("Environment variables for scripts and jobs")) welcome_text = config.Variable(section="common", help_text=_( "Welcome text to display prior to test" " selection/execution")) default_provider = config.Variable( section="common", help_text=_("Name of the default provider to use"), validator_list=[config.ChoiceValidator(['all', 'stub'])], default="all") class Meta: # TODO: properly depend on xdg and use real code that also handles # XDG_CONFIG_HOME. filename_list = [ '/etc/xdg/plainbox.conf', os.path.expanduser('~/.config/plainbox.conf') ]
class PlainBoxConfig(config.Config): """ Configuration for PlainBox itself """ environment = config.Section( help_text=_("Environment variables for scripts and jobs")) class Meta: # TODO: properly depend on xdg and use real code that also handles # XDG_CONFIG_HOME. filename_list = [ '/etc/xdg/plainbox.conf', os.path.expanduser('~/.config/plainbox.conf') ]
class PlainBoxConfig(config.Config): """ Configuration for PlainBox itself """ environment = config.Section( help_text=_("Environment variables for scripts and jobs")) extcmd = config.Variable( section='FEATURE-FLAGS', kind=str, default="legacy", validator_list=[config.ChoiceValidator(["legacy", "glibc"])], help_text=_("Which implementation of extcmd to use")) class Meta: # TODO: properly depend on xdg and use real code that also handles # XDG_CONFIG_HOME. filename_list = [ '/etc/xdg/plainbox.conf', os.path.expanduser('~/.config/plainbox.conf')]
class LauncherDefinitionLegacy(LauncherDefinition): """ Launcher definition class for 'unversioned' launchers. This definition is used for launchers that do not specify 'launcher_version' in their [launcher] section. """ api_flags = config.Variable( section='launcher', kind=list, default=[], help_text=_('List of feature-flags the application requires')) api_version = config.Variable( section='launcher', default='0.99', help_text=_('Version of API the launcher uses')) title = config.Variable( section="welcome", help_text=_("Application Title")) text = config.Variable( section="welcome", help_text=_("Welcome Message")) dont_suppress_output = config.Variable( section="ui", kind=bool, default=False, help_text=_("Don't suppress the output of certain job plugin types.")) whitelist_filter = config.Variable( section="suite", # TODO: valid regexp text validator help_text=_("Pattern that whitelists need to match to be displayed")) whitelist_selection = config.Variable( section="suite", # TODO: valid regexp text validator help_text=_("Pattern that whitelists need to match to be selected")) skip_whitelist_selection = config.Variable( section="suite", kind=bool, default=False, help_text=_("If enabled then suite selection screen is not displayed")) skip_test_selection = config.Variable( section="suite", kind=bool, default=False, help_text=_("If enabled then test selection screen is not displayed")) input_type = config.Variable( section="submission", # TODO: probably a choice validator help_text=_("Type of the input field?")) ok_btn_text = config.Variable( section="submission", help_text=_("Label on the 'send' button")) submit_to_hexr = config.Variable( section="submission", kind=bool, # TODO: default? help_text=_("If enabled then test results will be also sent to HEXR")) submit_to = config.Variable( section="transport", validator_list=[config.ChoiceValidator(get_all_transports().keys())], help_text=_("Where to submit the test results to")) # TODO: Add a validator to ensure it looks like a valid URL submit_url = config.Variable( section="transport", help_text=_("HTTP endpoint to submit data to, using the" " transport specified with submit_to.")) secure_id = config.Variable( section="submission", validator_list=[config.PatternValidator(SECURE_ID_PATTERN)], help_text=_("Secure ID to identify the system this" " submission belongs to.")) exporter = config.Section( help_text=_("Section with only exported unit ids as keys (no values)"))
class LauncherDefinition1(LauncherDefinition): """ Definition for launchers version 1. As specced in https://goo.gl/qJYtPX """ def __init__(self): super().__init__() launcher_version = config.Variable( section="launcher", default='1', help_text=_("Version of launcher to use")) app_id = config.Variable( section='launcher', default='checkbox-cli', help_text=_('Identifier of the application')) app_version = config.Variable( section='launcher', help_text=_('Version of the application')) api_flags = config.Variable( section='launcher', kind=list, default=[], validator_list=[config.SubsetValidator(get_all_sa_flags())], help_text=_('List of feature-flags the application requires')) api_version = config.Variable( section='launcher', default='0.99', validator_list=[config.ChoiceValidator( get_known_sa_api_versions())], help_text=_('Version of API the launcher uses')) stock_reports = config.Variable( section='launcher', kind=list, validator_list=[config.SubsetValidator({ 'text', 'certification', 'certification-staging', 'submission_files'})], default=['text', 'certification', 'submission_files'], help_text=_('List of stock reports to use')) providers = config.Variable( section='providers', name='use', kind=list, default=['*'], help_text=_('Which providers to load; glob patterns can be used')) test_plan_filters = config.Variable( section='test plan', name='filter', default=['*'], kind=list, help_text=_('Constrain interactive choice to test plans matching this' 'glob')) test_plan_default_selection = config.Variable( section='test plan', name='unit', help_text=_('Select this test plan by default.')) test_plan_forced = config.Variable( section='test plan', name='forced', kind=bool, default=False, help_text=_("Don't allow the user to change test plan.")) test_selection_forced = config.Variable( section='test selection', name='forced', kind=bool, default=False, help_text=_("Don't allow the user to alter test selection.")) ui_type = config.Variable( section='ui', name='type', default='interactive', validator_list=[config.ChoiceValidator( ['interactive', 'silent', 'converged', 'converged-silent'])], help_text=_('Type of stock user interface to use.')) output = config.Variable( section='ui', default='show', validator_list=[config.ChoiceValidator( ['show', 'hide', 'hide-resource-and-attachment'])], help_text=_('Silence or restrict command output')) dont_suppress_output = config.Variable( section="ui", kind=bool, default=False, help_text=_("Don't suppress the output of certain job plugin types.")) restart_strategy = config.Variable( section='restart', name='strategy', help_text=_('Use alternative restart strategy')) restart = config.Section( help_text=_('Restart strategy parameters')) reports = config.ParametricSection( name='report', help_text=_('Report declaration')) exporters = config.ParametricSection( name='exporter', help_text=_('Exporter declaration')) transports = config.ParametricSection( name='transport', help_text=_('Transport declaration')) environment = config.Section( help_text=_('Environment variables to use'))
class LauncherDefinition1(LauncherDefinition): """ Definition for launchers version 1. As specced in https://goo.gl/qJYtPX """ def __init__(self): super().__init__() launcher_version = config.Variable( section="launcher", default='1', help_text=_("Version of launcher to use")) app_id = config.Variable(section='launcher', default='checkbox-cli', help_text=_('Identifier of the application')) app_version = config.Variable(section='launcher', help_text=_('Version of the application')) api_flags = config.Variable( section='launcher', kind=list, default=[SA_RESTARTABLE], validator_list=[config.SubsetValidator(get_all_sa_flags())], help_text=_('List of feature-flags the application requires')) api_version = config.Variable( section='launcher', default='0.99', validator_list=[config.ChoiceValidator(get_known_sa_api_versions())], help_text=_('Version of API the launcher uses')) stock_reports = config.Variable( section='launcher', kind=list, validator_list=[ config.SubsetValidator({ 'text', 'certification', 'certification-staging', 'submission_files', 'none' }), config.OneOrTheOtherValidator({'none'}, { 'text', 'certification', 'certification-staging', 'submission_files' }), ], default=['text', 'certification', 'submission_files'], help_text=_('List of stock reports to use')) local_submission = config.Variable( section='launcher', kind=bool, default=True, help_text=_("Send/generate submission report locally when using " "checkbox remote")) session_title = config.Variable( section='launcher', default='session title', help_text=_("A title to be applied to the sessions created using " "this launcher that can be used in report generation")) session_desc = config.Variable( section='launcher', default='', help_text=_("A string that can be applied to sessions created using " "this launcher. Useful for storing some contextual " "infomation about the session")) test_plan_filters = config.Variable( section='test plan', name='filter', default=['*'], kind=list, help_text=_('Constrain interactive choice to test plans matching this' 'glob')) test_plan_default_selection = config.Variable( section='test plan', name='unit', help_text=_('Select this test plan by default.')) test_plan_forced = config.Variable( section='test plan', name='forced', kind=bool, default=False, help_text=_("Don't allow the user to change test plan.")) test_selection_forced = config.Variable( section='test selection', name='forced', kind=bool, default=False, help_text=_("Don't allow the user to alter test selection.")) test_exclude = config.Variable( section='test selection', name='exclude', default=[], kind=list, help_text=_("Exclude test matching the patterns from running")) ui_type = config.Variable( section='ui', name='type', default='interactive', validator_list=[config.ChoiceValidator(['interactive', 'silent'])], help_text=_('Type of stock user interface to use.')) output = config.Variable(section='ui', default='show', validator_list=[ config.ChoiceValidator([ 'show', 'hide', 'hide-resource-and-attachment', 'hide-automated' ]) ], help_text=_('Silence or restrict command output')) dont_suppress_output = config.Variable( section="ui", kind=bool, default=False, help_text=_("Don't suppress the output of certain job plugin types.")) verbosity = config.Variable(section="ui", validator_list=[ config.ChoiceValidator( ['normal', 'verbose', 'debug']) ], help_text=_('Verbosity level'), default='normal') auto_retry = config.Variable( section='ui', kind=bool, default=False, help_text=_("Automatically retry failed jobs at the end" " of the session.")) max_attempts = config.Variable( section='ui', kind=int, default=3, help_text=_( "Number of attempts to run a job when in auto-retry mode.")) delay_before_retry = config.Variable( section='ui', kind=int, default=1, help_text=_("Delay (in seconds) before retrying failed jobs in" " auto-retry mode.")) normal_user = config.Variable( section='daemon', kind=str, default='', help_text=_("Username to use for jobs that don't specify user")) restart_strategy = config.Variable( section='restart', name='strategy', help_text=_('Use alternative restart strategy')) restart = config.Section(help_text=_('Restart strategy parameters')) reports = config.ParametricSection(name='report', help_text=_('Report declaration')) exporters = config.ParametricSection(name='exporter', help_text=_('Exporter declaration')) transports = config.ParametricSection(name='transport', help_text=_('Transport declaration')) environment = config.Section(help_text=_('Environment variables to use')) daemon = config.Section(name='daemon', help_text=_('Daemon-specific configuration')) manifest = config.Section(help_text=_('Manifest entries to use'))
class LauncherDefinition(config.Config): """ Launcher definition. Launchers are small executables using one of the available user interfaces as the interpreter. This class contains all the available options that can be set inside the launcher, that will affect the user interface at runtime. """ title = config.Variable(section="welcome", help_text=_("Application Title")) text = config.Variable(section="welcome", help_text=_("Welcome Message")) whitelist_filter = config.Variable( section="suite", # TODO: valid regexp text validator help_text=_("Pattern that whitelists need to match to be displayed")) whitelist_selection = config.Variable( section="suite", # TODO: valid regexp text validator help_text=_("Pattern that whitelists need to match to be selected")) skip_whitelist_selection = config.Variable( section="suite", kind=bool, default=False, help_text=_("If enabled then suite selection screen is not displayed")) skip_test_selection = config.Variable( section="suite", kind=bool, default=False, help_text=_("If enabled then test selection screen is not displayed")) input_type = config.Variable( section="submission", # TODO: probably a choice validator help_text=_("Type of the input field?")) ok_btn_text = config.Variable(section="submission", help_text=_("Label on the 'send' button")) submit_to_hexr = config.Variable( section="submission", kind=bool, # TODO: default? help_text=_("If enabled then test results will be also sent to HEXR")) submit_to = config.Variable( section="transport", validator_list=[config.ChoiceValidator(get_all_transports().keys())], help_text=_("Where to submit the test results to")) # TODO: Add a validator to ensure it looks like a valid URL submit_url = config.Variable( section="transport", help_text=_("HTTP endpoint to submit data to, using the" " transport specified with submit_to.")) secure_id = config.Variable( section="submission", validator_list=[config.PatternValidator(SECURE_ID_PATTERN)], help_text=_("Secure ID to identify the system this" " submission belongs to.")) config_filename = config.Variable( section="config", help_text=_("Name of custom configuration file")) dont_suppress_output = config.Variable( section="ui", kind=bool, default=False, help_text=_("Don't suppress the output of certain job plugin types.")) exporter = config.Section( help_text=_("Section with only exported unit ids as keys (no values)"))