yup, seems important - lmr, do you want to go ahead and apply this? I'm stuck in a meeting for a while On Tue, Dec 1, 2009 at 2:39 PM, John Admanski <jadmanski@xxxxxxxxxx> wrote: > This looks good to me. > > -- John > > On Tue, Dec 1, 2009 at 2:37 PM, Lucas Meneghel Rodrigues <lmr@xxxxxxxxxx> wrote: >> When the client was made configurable through >> global_config.ini, the scenario "developer >> checking out client directory only" wasn't >> considered, and an exception will be thrown >> due to the lack of a global_config.ini present. >> >> In order to fix this, instead of throwing an >> exception, just print a warning on cases that >> matter, and make all the values that are >> supposed to be grabbed from the config file >> to have a sensible default. >> >> 2nd try: Now a warning is printed only when >> autotest is being run through autoserv, since >> it's probably the only case worth printing >> a warning. >> >> Signed-off-by: Lucas Meneghel Rodrigues <lmr@xxxxxxxxxx> >> --- >> client/bin/autotest | 3 ++- >> client/bin/harness_autoserv.py | 15 ++++++++++++++- >> client/bin/job.py | 2 +- >> client/common_lib/global_config.py | 17 ++++++++--------- >> client/common_lib/host_protections.py | 9 ++++----- >> 5 files changed, 29 insertions(+), 17 deletions(-) >> >> diff --git a/client/bin/autotest b/client/bin/autotest >> index 285be4e..c83e755 100755 >> --- a/client/bin/autotest >> +++ b/client/bin/autotest >> @@ -61,7 +61,8 @@ if len(args) != 1: >> >> drop_caches = global_config.global_config.get_config_value('CLIENT', >> 'drop_caches', >> - type=bool) >> + type=bool, >> + default=True) >> >> # JOB: run the specified job control file. >> job.runjob(os.path.realpath(args[0]), drop_caches, options) >> diff --git a/client/bin/harness_autoserv.py b/client/bin/harness_autoserv.py >> index 4ea16e4..0bfbcdd 100644 >> --- a/client/bin/harness_autoserv.py >> +++ b/client/bin/harness_autoserv.py >> @@ -1,5 +1,6 @@ >> -import os, logging >> +import os, logging, ConfigParser >> from autotest_lib.client.common_lib import autotemp, base_packages, error >> +from autotest_lib.client.common_lib import global_config >> from autotest_lib.client.bin import harness >> >> >> @@ -20,6 +21,18 @@ class harness_autoserv(harness.harness): >> super(harness_autoserv, self).__init__(job) >> self.status = os.fdopen(3, 'w', 0) >> >> + # If a bug on the client run code prevents global_config.ini >> + # from being copied to the client machine, the client will run >> + # without a global config, relying only on the defaults of the >> + # config items. To avoid that happening silently, the check below >> + # was written. >> + try: >> + cfg = global_config.global_config.get_section_values("CLIENT") >> + except ConfigParser.NoSectionError: >> + logging.error("Empty CLIENT configuration session. " >> + "global_config.ini missing. This probably means " >> + "a bug on the server code. Please verify.") >> + >> >> def run_start(self): >> # set up the package fetcher for direct-from-autoserv fetches >> diff --git a/client/bin/job.py b/client/bin/job.py >> index 7021105..f879100 100755 >> --- a/client/bin/job.py >> +++ b/client/bin/job.py >> @@ -233,7 +233,7 @@ class base_client_job(base_job.base_job): >> self.drop_caches_between_iterations = ( >> global_config.global_config.get_config_value('CLIENT', >> 'drop_caches_between_iterations', >> - type=bool)) >> + type=bool, default=True)) >> self.drop_caches = drop_caches >> if self.drop_caches: >> logging.debug("Dropping caches") >> diff --git a/client/common_lib/global_config.py b/client/common_lib/global_config.py >> index 04ab7ff..24a93ea 100644 >> --- a/client/common_lib/global_config.py >> +++ b/client/common_lib/global_config.py >> @@ -5,7 +5,7 @@ provides access to global configuration file >> >> __author__ = 'raphtee@xxxxxxxxxx (Travis Miller)' >> >> -import os, sys, ConfigParser >> +import os, sys, ConfigParser, logging >> from autotest_lib.client.common_lib import error >> >> >> @@ -44,11 +44,9 @@ elif config_in_client: >> DEFAULT_SHADOW_FILE = None >> RUNNING_STAND_ALONE_CLIENT = True >> else: >> - raise ConfigError("Could not find configuration files " >> - "needed for this program to function. Please refer to " >> - "http://autotest.kernel.org/wiki/GlobalConfig " >> - "for more info.") >> - >> + DEFAULT_CONFIG_FILE = None >> + DEFAULT_SHADOW_FILE = None >> + RUNNING_STAND_ALONE_CLIENT = True >> >> class global_config(object): >> _NO_DEFAULT_SPECIFIED = object() >> @@ -145,10 +143,11 @@ class global_config(object): >> >> >> def parse_config_file(self): >> - if not os.path.exists(self.config_file): >> - raise ConfigError('%s not found' % (self.config_file)) >> self.config = ConfigParser.ConfigParser() >> - self.config.read(self.config_file) >> + if self.config_file and os.path.exists(self.config_file): >> + self.config.read(self.config_file) >> + else: >> + raise ConfigError('%s not found' % (self.config_file)) >> >> # now also read the shadow file if there is one >> # this will overwrite anything that is found in the >> diff --git a/client/common_lib/host_protections.py b/client/common_lib/host_protections.py >> index 7c9e6a0..b5b2156 100644 >> --- a/client/common_lib/host_protections.py >> +++ b/client/common_lib/host_protections.py >> @@ -29,16 +29,15 @@ try: >> default_protection = global_config.global_config.get_config_value( >> 'HOSTS', 'default_protection', default=_bad_value) >> if default_protection == _bad_value: >> - if running_client: >> - logging.debug('Client stand alone run detected. ' >> - 'host_protection.default will not be set.') >> - else: >> + 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: >> - raise global_config.ConfigError('No global_config.ini exists, aborting') >> + pass >> >> choices = Protection.choices() >> -- >> 1.6.5.2 >> >> > _______________________________________________ > Autotest mailing list > Autotest@xxxxxxxxxxxxxxx > http://test.kernel.org/cgi-bin/mailman/listinfo/autotest > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html