CascadeAdmin: node-info command
authorMarko Kreen <markokr@gmail.com>
Mon, 4 Jul 2011 12:05:35 +0000 (15:05 +0300)
committerMarko Kreen <markokr@gmail.com>
Mon, 4 Jul 2011 12:48:34 +0000 (15:48 +0300)
Shows detailed info about local node.

Currently the info needs to be gathered from different places,
which is annoying.

python/londiste.py
python/pgq/cascade/admin.py

index 5ec6532346cbe014694a4eafa94a2585b1e32947..bd456137a3cf760885d77f1599cfdde0eb0d5df7 100755 (executable)
@@ -44,7 +44,7 @@ Internal Commands:
 
 cmd_handlers = (
     (('create-root', 'create-branch', 'create-leaf', 'members', 'tag-dead', 'tag-alive',
-      'change-provider', 'rename-node', 'status', 'pause', 'resume',
+      'change-provider', 'rename-node', 'status', 'pause', 'resume', 'node-info',
       'drop-node', 'takeover'), londiste.LondisteSetup),
     (('add-table', 'remove-table', 'add-seq', 'remove-seq', 'tables', 'seqs',
       'missing', 'resync', 'check', 'fkeys', 'execute'), londiste.LondisteSetup),
index e3fb209646eb1c7145750bacdd2abfb4eae74dfd..75fea6d6be96919586098c8a5d3e9d27df0775d7 100644 (file)
@@ -694,6 +694,37 @@ class CascadeAdmin(skytools.AdminScript):
             " from pgq_node.get_queue_locations(%s) order by 1"
         self.display_table(db, desc, q, [self.queue_name])
 
+    def cmd_node_info(self):
+        self.load_local_info()
+
+        q = self.queue_info
+        n = q.local_node
+        m = q.get_member(n.name)
+
+        stlist = []
+        if m.dead:
+            stlist.append('DEAD')
+        if n.paused:
+            stlist.append("PAUSED")
+        if not n.uptodate:
+            stlist.append("NON-UP-TO-DATE")
+        st = ', '.join(stlist)
+        if not st:
+            st = 'OK'
+        print('Node: %s  Type: %s  Queue: %s' % (n.name, n.type, q.queue_name))
+        print('Status: %s' % st)
+        if n.type != 'root':
+            print('Provider: %s' % n.provider_node)
+        else:
+            print('Provider: --')
+        print('Connect strings:')
+        print('  Local   : %s' % self.cf.get('db'))
+        print('  Public  : %s' % m.location)
+        if n.type != 'root':
+            print('  Provider: %s' % n.provider_location)
+        if n.combined_queue:
+            print('Combined Queue: %s  (node type: %s)' % (n.combined_queue, n.combined_type))
+
     #
     # Shortcuts for operating on nodes.
     #