Andrew Bogott has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/311057

Change subject: Puppet Panel:  Speed up role formatting
......................................................................

Puppet Panel:  Speed up role formatting

These format functions are really the responsiblity of the view,
but moving them into the model (puppet_roles.py) allows us to
cache the formatted role properties.  This should save us a tiny
bit of render time.

Bug: T91990
Change-Id: I1af176860e6c0ac42012f2a0bd8c349f19c74e11
---
M modules/openstack/files/liberty/horizon/puppettab/puppet_roles.py
M modules/openstack/files/liberty/horizon/puppettab/puppet_tables.py
2 files changed, 21 insertions(+), 27 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/57/311057/1

diff --git a/modules/openstack/files/liberty/horizon/puppettab/puppet_roles.py 
b/modules/openstack/files/liberty/horizon/puppettab/puppet_roles.py
index 12e41fb..69bf466 100644
--- a/modules/openstack/files/liberty/horizon/puppettab/puppet_roles.py
+++ b/modules/openstack/files/liberty/horizon/puppettab/puppet_roles.py
@@ -18,6 +18,8 @@
 
 from django.conf import settings
 from django.core.cache import cache
+from django.utils.html import escape
+from django.utils.safestring import mark_safe
 from django.utils.translation import ugettext_lazy as _
 
 logging.basicConfig()
@@ -28,18 +30,22 @@
 #  for our Horizon table-of-roles UI
 class PuppetClass():
     name = None
+    html_name = ""
     docs = ""
     applied = False
     params = []
+    formatted_params = ""
     raw_params = {}
     filter_tags = []
     instance = None
 
     def __init__(self, name):
         self.name = name
+        self.html_name = ""
         self.docs = _('(No docs available)')
         self.applied = False
         self.params = []
+        self.formatted_params = ""
         self.raw_params = {}
         self.filter_tags = []
         self.instance = None
@@ -52,6 +58,12 @@
     def mark_applied(self, paramdict):
         self.applied = True
         self.params = paramdict
+        if paramdict:
+            keysanddefaults = []
+            for param in self.params.items():
+                keysanddefaults.append("%s: %s" % param)
+            self.formatted_params = ";\n".join(keysanddefaults)
+
         return self
 
 
@@ -100,6 +112,13 @@
                         newdoc += "%s\n" % line
                 obj.docs = newdoc
 
+            simplename = obj.name.split('role::')[1]
+            html = '%s <span title="%s" class="fa-question-circle" />' % (
+                escape(simplename),
+                escape(obj.docs)
+            )
+            obj.html_name = mark_safe(html)
+
             roles.append(obj)
 
         cache.set(key, roles, 300)
diff --git a/modules/openstack/files/liberty/horizon/puppettab/puppet_tables.py 
b/modules/openstack/files/liberty/horizon/puppettab/puppet_tables.py
index fab2e6e..38f1d0a 100644
--- a/modules/openstack/files/liberty/horizon/puppettab/puppet_tables.py
+++ b/modules/openstack/files/liberty/horizon/puppettab/puppet_tables.py
@@ -19,31 +19,10 @@
 from django.core import urlresolvers
 from django.utils.translation import ugettext_lazy as _
 
-from django.utils.html import escape
-from django.utils.safestring import mark_safe
-
 from horizon import tables
 
 logging.basicConfig()
 LOG = logging.getLogger(__name__)
-
-
-def get_formatted_name(classrecord):
-    name = classrecord.name.split('role::')[1]
-    title = classrecord.docs
-    html = '%s <span title="%s" class="fa-question-circle" />' % (
-        escape(name),
-        escape(title)
-    )
-    return mark_safe(html)
-
-
-def get_formatted_params(classrecord):
-    if classrecord.params:
-        keysanddefaults = []
-        for param in classrecord.params.items():
-            keysanddefaults.append("%s: %s" % param)
-        return(";\n".join(keysanddefaults))
 
 
 class RemoveRole(tables.LinkAction):
@@ -130,9 +109,9 @@
 
 class PuppetTable(tables.DataTable):
     applied = tables.Column('applied', verbose_name=_('Applied'), status=True)
-    name = tables.Column(get_formatted_name,
+    name = tables.Column('html_name',
                          verbose_name=_('Name'))
-    params = tables.Column(get_formatted_params,
+    params = tables.Column('formatted_params',
                            verbose_name=_('Parameters'),
                            sortable=False)
     instance = tables.Column('instance',
@@ -155,7 +134,3 @@
 
     def get_object_id(self, datum):
         return datum.name
-
-    def render_to_response(self, context, **response_kwargs):
-        LOG.warn("render_to_response 2: %s" %
-                 self.request.GET.get('format', 'html'))

-- 
To view, visit https://gerrit.wikimedia.org/r/311057
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1af176860e6c0ac42012f2a0bd8c349f19c74e11
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Andrew Bogott <abog...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to