--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/configurationengine/source/cone/action/fix.py Tue Aug 10 14:29:28 2010 +0300
@@ -0,0 +1,81 @@
+
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+"""
+Test the configuration
+"""
+import logging
+
+from cone.public import api, exceptions
+from cone.validation import confmlvalidation
+from cone.validation.problem_type_filter import ProblemTypeFilter
+
+logger = logging.getLogger('cone')
+
+class ConeFixAction(object):
+ def __init__(self, **kwargs):
+ # all action attributes are given as keyword arguments
+ self.include_filter = kwargs.get('include_filter',[])
+ self.exclude_filter = kwargs.get('exclude_filter',[])
+ self.username = kwargs.get('username',None)
+ self.password = kwargs.get('password',None)
+ self.project_name = kwargs.get('project_name', '.')
+ self.configuration_name = kwargs.get('configuration_name', None)
+ self.project = kwargs.get('project', None)
+ self.config = kwargs.get('configuration', None)
+
+
+ def run(self):
+ filter = ProblemTypeFilter(includes = self.include_filter,
+ excludes = self.exclude_filter)
+
+ # Open the project if it is not already opened
+ if self.project == None:
+ storage = api.Storage.open(self.project_name,
+ "a",
+ username=self.username,
+ password=self.password)
+ self.project = api.Project(storage)
+ if self.config == None:
+ if not self.configuration_name:
+ logging.getLogger('cone').error("No configuration given! Use -c / --configuration")
+ return False
+ try:
+ self.config = self.project.get_configuration(self.configuration_name)
+ except exceptions.NotFound:
+ logging.getLogger('cone').error("No such configuration: %s" % self.configuration_name)
+ return False
+
+ fixers = confmlvalidation.get_fixer_classes(filter)
+
+ vc = confmlvalidation.fix_configuration(self.config, None, fixers)
+
+ if vc.fixes:
+ print "Fixed %d problem(s). See log for details" % len(vc.fixes)
+ else:
+ print "No problems to fix found. See log for details"
+ return True
+
+ def save(self):
+ self.project.save()
+
+ def close(self):
+ self.project.close()
+
+
+def get_class():
+ return ConeFixAction
\ No newline at end of file