Alon Bar-Lev has uploaded a new change for review.

Change subject: packaging: setup: split utilities into own module
......................................................................

packaging: setup: split utilities into own module

Change-Id: Id938790964d913303a10ea068317960713f0180b
Signed-off-by: Alon Bar-Lev <alo...@redhat.com>
---
A packaging/setup/ovirt_engine_setup/reportsutil.py
M 
packaging/setup/plugins/ovirt-engine-setup/ovirt-engine-reports/jasper/deploy.py
2 files changed, 176 insertions(+), 119 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-reports refs/changes/71/24971/1

diff --git a/packaging/setup/ovirt_engine_setup/reportsutil.py 
b/packaging/setup/ovirt_engine_setup/reportsutil.py
new file mode 100644
index 0000000..17e19cc
--- /dev/null
+++ b/packaging/setup/ovirt_engine_setup/reportsutil.py
@@ -0,0 +1,155 @@
+#
+# ovirt-engine-setup -- ovirt engine setup
+# Copyright (C) 2013 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+
+"""Utils."""
+
+
+import atexit
+import os
+import shutil
+import tempfile
+import gettext
+_ = lambda m: gettext.dgettext(message=m, domain='ovirt-engine-reports')
+
+
+import libxml2
+
+
+from otopi import base
+from otopi import util
+
+
+from . import constants as osetupcons
+from . import reportsconstants as oreportscons
+
+
+class XMLDoc(base.Base):
+
+    @property
+    def document(self):
+        return self._doc
+
+    @property
+    def xpath(self):
+        return self._ctx
+
+    def __init__(self, f):
+        super(XMLDoc, self).__init__()
+        self._file = f
+        self._doc = None
+        self._ctx = None
+
+    def __enter__(self):
+        self._doc = libxml2.parseFile(self._file)
+        self._ctx = self._doc.xpathNewContext()
+        return self
+
+    def __exit__(self, exc_type, exc_value, traceback):
+        if not exc_type:
+            with open(self._file, 'w') as f:
+                f.write(
+                    self._doc.serialize(
+                        'UTF-8',
+                        libxml2.XML_SAVE_FORMAT,
+                    )
+                )
+            os.chmod(self._file, 0o644)
+
+        if self._doc:
+            self._doc.freeDoc()
+            self._doc = None
+        if self._ctx:
+            self._ctx.xpathFreeContext()
+            self._ctx = None
+
+    def setNodesContent(self, path, content):
+        for node in self.xpath.xpathEval(path):
+            node.setContent(content)
+
+
+@util.export
+class JasperUtil(base.Base):
+
+    @property
+    def environment(self):
+        return self._plugin.environment
+
+    def __init__(self, plugin):
+        super(JasperUtil, self).__init__()
+        self._plugin = plugin
+        self._temproot = tempfile.mkdtemp()
+        atexit.register(shutil.rmtree, self._temproot)
+        self._javatmp = os.path.join(self._temproot, 'tmp')
+        os.mkdir(self._javatmp)
+
+    def jsexport(self, what, args):
+        dest = os.path.join(
+            self._temproot,
+            what,
+        )
+        self._plugin.execute(
+            args=(
+                './js-export.sh',
+                '--output-dir', dest,
+            ) + args,
+            cwd=os.path.join(
+                self.environment[
+                    oreportscons.ConfigEnv.JASPER_HOME
+                ],
+                'buildomatic',
+            ),
+            envAppend={
+                'JAVA_HOME': self.environment[
+                    osetupcons.ConfigEnv.JAVA_HOME
+                ],
+                'JAVA_OPTS': '-Djava.io.tmpdir=%s' % self._javatmp,
+                'ADDITIONAL_CONFIG_DIR': (
+                    oreportscons.FileLocations.
+                    OVIRT_ENGINE_REPORTS_BUILDOMATIC_CONFIG
+                ),
+            },
+        )
+        return dest
+
+    def jsimport(self, src):
+        self._plugin.execute(
+            args=(
+                './js-import.sh',
+                '--input-dir', src,
+                '--update',
+            ),
+            cwd=os.path.join(
+                self.environment[
+                    oreportscons.ConfigEnv.JASPER_HOME
+                ],
+                'buildomatic',
+            ),
+            envAppend={
+                'JAVA_HOME': self.environment[
+                    osetupcons.ConfigEnv.JAVA_HOME
+                ],
+                'JAVA_OPTS': '-Djava.io.tmpdir=%s' % self._javatmp,
+                'ADDITIONAL_CONFIG_DIR': (
+                    oreportscons.FileLocations.
+                    OVIRT_ENGINE_REPORTS_BUILDOMATIC_CONFIG
+                ),
+            },
+        )
+
+
+# vim: expandtab tabstop=4 shiftwidth=4
diff --git 
a/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine-reports/jasper/deploy.py
 
b/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine-reports/jasper/deploy.py
index 13f3d71..6114f73 100644
--- 
a/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine-reports/jasper/deploy.py
+++ 
b/packaging/setup/plugins/ovirt-engine-setup/ovirt-engine-reports/jasper/deploy.py
@@ -28,11 +28,7 @@
 _ = lambda m: gettext.dgettext(message=m, domain='ovirt-engine-reports')
 
 
-import libxml2
-
-
 from otopi import constants as otopicons
-from otopi import base
 from otopi import util
 from otopi import plugin
 from otopi import transaction
@@ -43,6 +39,7 @@
 
 from ovirt_engine_setup import constants as osetupcons
 from ovirt_engine_setup import reportsconstants as oreportscons
+from ovirt_engine_setup import reportsutil as oreportsutil
 from ovirt_engine_setup import util as osetuputil
 from ovirt_engine_setup import database
 
@@ -50,49 +47,6 @@
 @util.export
 class Plugin(plugin.PluginBase):
     """Schema plugin."""
-
-    class XMLDoc(base.Base):
-
-        @property
-        def document(self):
-            return self._doc
-
-        @property
-        def xpath(self):
-            return self._ctx
-
-        def __init__(self, f):
-            super(Plugin.XMLDoc, self).__init__()
-            self._file = f
-            self._doc = None
-            self._ctx = None
-
-        def __enter__(self):
-            self._doc = libxml2.parseFile(self._file)
-            self._ctx = self._doc.xpathNewContext()
-            return self
-
-        def __exit__(self, exc_type, exc_value, traceback):
-            if not exc_type:
-                with open(self._file, 'w') as f:
-                    f.write(
-                        self._doc.serialize(
-                            'UTF-8',
-                            libxml2.XML_SAVE_FORMAT,
-                        )
-                    )
-                os.chmod(self._file, 0o644)
-
-            if self._doc:
-                self._doc.freeDoc()
-                self._doc = None
-            if self._ctx:
-                self._ctx.xpathFreeContext()
-                self._ctx = None
-
-        def setNodesContent(self, path, content):
-            for node in self.xpath.xpathEval(path):
-                node.setContent(content)
 
     class JasperSchemaTransaction(transaction.TransactionElement):
 
@@ -261,63 +215,9 @@
                     0o700,
                 )
 
-    def _exportJs(self, what, args):
-        dest = os.path.join(
-            self._temproot,
-            what,
-        )
-        self.execute(
-            args=(
-                './js-export.sh',
-                '--output-dir', dest,
-            ) + args,
-            cwd=os.path.join(
-                self.environment[
-                    oreportscons.ConfigEnv.JASPER_HOME
-                ],
-                'buildomatic',
-            ),
-            envAppend={
-                'JAVA_HOME': self.environment[
-                    osetupcons.ConfigEnv.JAVA_HOME
-                ],
-                'JAVA_OPTS': '-Djava.io.tmpdir=%s' % self._javatmp,
-                'ADDITIONAL_CONFIG_DIR': (
-                    oreportscons.FileLocations.
-                    OVIRT_ENGINE_REPORTS_BUILDOMATIC_CONFIG
-                ),
-            },
-        )
-        return dest
-
-    def _importJs(self, src):
-        self.execute(
-            args=(
-                './js-import.sh',
-                '--input-dir', src,
-                '--update',
-            ),
-            cwd=os.path.join(
-                self.environment[
-                    oreportscons.ConfigEnv.JASPER_HOME
-                ],
-                'buildomatic',
-            ),
-            envAppend={
-                'JAVA_HOME': self.environment[
-                    osetupcons.ConfigEnv.JAVA_HOME
-                ],
-                'JAVA_OPTS': '-Djava.io.tmpdir=%s' % self._javatmp,
-                'ADDITIONAL_CONFIG_DIR': (
-                    oreportscons.FileLocations.
-                    OVIRT_ENGINE_REPORTS_BUILDOMATIC_CONFIG
-                ),
-            },
-        )
-
     def _workaroundUsersNullPaswords(self, src):
         for f in glob.glob(os.path.join(src, 'users', '*.xml')):
-            with self.XMLDoc(f) as xml:
+            with oreportsutil.XMLDoc(f) as xml:
                 for node in xml.xpath.xpathEval('/user/password'):
                     if node.getContent() == 'ENC<null>':
                         node.setContent('ENC<>')
@@ -366,7 +266,7 @@
         )
 
         if self.environment[oreportscons.ConfigEnv.ADMIN_PASSWORD] is not None:
-            with self.XMLDoc(
+            with oreportsutil.XMLDoc(
                 os.path.join(
                     reportsImport,
                     'users',
@@ -394,7 +294,7 @@
                 dwhdatasource,
             )
         else:
-            with self.XMLDoc(dwhdatasource) as xml:
+            with oreportsutil.XMLDoc(dwhdatasource) as xml:
                 xml.setNodesContent(
                     '/jdbcDataSource/connectionUrl',
                     'jdbc:postgresql://%s:%s/%s?%s' % (
@@ -509,6 +409,7 @@
 
     def __init__(self, context):
         super(Plugin, self).__init__(context=context)
+        self._oreportsutil = None
         self._temproot = None
         self._quartzprops = None
         self._users = None
@@ -520,6 +421,7 @@
         stage=plugin.Stages.STAGE_INIT,
     )
     def _init(self):
+        self._oreportsutil = oreportsutil.JasperUtil(plugin=self)
         self._temproot = tempfile.mkdtemp()
         self._javatmp = os.path.join(self._temproot, 'tmp')
         os.mkdir(self._javatmp)
@@ -658,7 +560,7 @@
                 _('Could not detect Jasper war folder')
             )
 
-        everything = self._exportJs(
+        everything = self._oreportsutil.jsexport(
             what='everything',
             args=(
                 '--everything',
@@ -675,7 +577,7 @@
                 )
             )
         ):
-            self._savedReports = self._exportJs(
+            self._savedReports = self._oreportsutil.jsexport(
                 what='savedReports',
                 args=(
                     '--uris', self.environment[
@@ -683,20 +585,20 @@
                     ],
                 ),
             )
-        self._jobs = self._exportJs(
+        self._jobs = self._oreportsutil.jsexport(
             what='jobs',
             args=(
                 '--report-jobs', '/',
             ),
         )
-        self._users = self._exportJs(
+        self._users = self._oreportsutil.jsexport(
             what='users',
             args=(
                 '--users',
                 '--roles',
             ),
         )
-        dwhdatasourceexport = self._exportJs(
+        dwhdatasourceexport = self._oreportsutil.jsexport(
             what='dwhdatasourceexport',
             args=(
                 '--uris', '/reports_resources/JDBC/data_sources/ovirt',
@@ -778,12 +680,12 @@
             )
 
         if self._users:
-            self._importJs(self._users)
+            self._oreportsutil.jsimport(self._users)
 
         if self._savedReports:
-            self._importJs(self._savedReports)
+            self._oreportsutil.jsimport(self._savedReports)
 
-        self._importJs(self._prepareOvirtReports())
+        self._oreportsutil.jsimport(self._prepareOvirtReports())
 
         #
         # We import users twice because we need permissions to be
@@ -791,10 +693,10 @@
         # reports in previous step.
         #
         if self._users:
-            self._importJs(self._users)
+            self._oreportsutil.jsimport(self._users)
 
         if self._jobs:
-            self._importJs(self._jobs)
+            self._oreportsutil.jsimport(self._jobs)
 
         self.logger.info(_('Configuring Jasper Java resources'))
 
@@ -815,7 +717,7 @@
 
         self.logger.info(_('Configuring Jasper Database resources'))
 
-        with self.XMLDoc(
+        with oreportsutil.XMLDoc(
             os.path.join(
                 oreportscons.FileLocations.OVIRT_ENGINE_REPORTS_JASPER_WAR,
                 'WEB-INF',
@@ -887,7 +789,7 @@
 
         self.logger.info(_('Customizing Jasper metadata'))
 
-        everything = self._exportJs(
+        everything = self._oreportsutil.jsexport(
             what='everything-post',
             args=(
                 '--everything',
@@ -904,7 +806,7 @@
             ):
                 f = os.path.join(everything, f)
                 if os.path.exists(f):
-                    with self.XMLDoc(f) as xml:
+                    with oreportsutil.XMLDoc(f) as xml:
                         xml.setNodesContent(
                             '/user/enabled',
                             'false',
@@ -916,7 +818,7 @@
         ):
             f = os.path.join(everything, f)
             if os.path.exists(f):
-                with self.XMLDoc(f) as xml:
+                with oreportsutil.XMLDoc(f) as xml:
                     xml.setNodesContent(
                         '/organization/theme',
                         self.environment[
@@ -924,7 +826,7 @@
                         ],
                     )
 
-        self._importJs(everything)
+        self._oreportsutil.jsimport(everything)
 
     @plugin.event(
         stage=plugin.Stages.STAGE_MISC,


-- 
To view, visit http://gerrit.ovirt.org/24971
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id938790964d913303a10ea068317960713f0180b
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-reports
Gerrit-Branch: master
Gerrit-Owner: Alon Bar-Lev <alo...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to