document add-seq, remove-seq, allow --all
authorMarko Kreen <markokr@gmail.com>
Thu, 23 Aug 2007 11:57:17 +0000 (11:57 +0000)
committerMarko Kreen <markokr@gmail.com>
Thu, 23 Aug 2007 11:57:17 +0000 (11:57 +0000)
python/londiste.py
python/londiste/setup.py

index 909e8d2c6cac0d5d4fc22db60fbe3efda84ff689..32af4a50746a7823bd04919399a8c6dded5ad709 100755 (executable)
@@ -17,28 +17,32 @@ command_usage = """
 %prog [options] INI CMD [subcmd args]
 
 commands:
-  replay                     replay events to subscriber
-
-  provider install           installs modules, creates queue
-  provider add TBL ...       add table to queue
-  provider remove TBL ...    remove table from queue
-  provider tables            show all tables on provider
-  provider seqs              show all sequences on provider
-
-  subscriber install         installs schema
-  subscriber add TBL ...     add table to subscriber
-  subscriber remove TBL ...  remove table from subscriber
-  subscriber tables          list tables subscriber has attached to
-  subscriber seqs            list sequences subscriber is interested
-  subscriber missing         list tables subscriber has not yet attached to
-  subscriber check           compare table structure on both sides
-  subscriber fkeys           print out fkey drop/create commands
-  subscriber resync TBL ...  do full copy again
-
-  compare [TBL ...]          compare table contents on both sides
-  repair [TBL ...]           repair data on subscriber
-
-  copy                       [internal command - copy table logic]
+  replay                        replay events to subscriber
+
+  provider install              installs modules, creates queue
+  provider add TBL ...          add table to queue
+  provider remove TBL ...       remove table from queue
+  provider tables               show all tables on provider
+  provider add-seq SEQ ...      add sequence to provider
+  provider remove-seq SEQ ...   remove sequence from provider
+  provider seqs                 show all sequences on provider
+
+  subscriber install            installs schema
+  subscriber add TBL ...        add table to subscriber
+  subscriber remove TBL ...     remove table from subscriber
+  subscriber add-seq SEQ ...    add table to subscriber
+  subscriber remove-seq SEQ ... remove table from subscriber
+  subscriber tables             list tables subscriber has attached to
+  subscriber seqs               list sequences subscriber is interested
+  subscriber missing            list tables subscriber has not yet attached to
+  subscriber check              compare table structure on both sides
+  subscriber fkeys              print out fkey drop/create commands
+  subscriber resync TBL ...     do full copy again
+
+  compare [TBL ...]             compare table contents on both sides
+  repair [TBL ...]              repair data on subscriber
+
+  copy                          [internal command - copy table logic]
 """
 
 class Londiste(skytools.DBScript):
index a182335f6b479d8bfc217a0099985aa5539d5dc2..24086d83c765282f73f8d20326bff614ebdc3137 100644 (file)
@@ -144,13 +144,9 @@ class ProviderSetup(CommonSetup):
         elif cmd == "remove":
             self.provider_remove_tables(self.args[3:])
         elif cmd == "add-seq":
-            for seq in self.args[3:]:
-                self.provider_add_seq(seq)
-            self.provider_notify_change()
+            self.provider_add_seq_list(self.args[3:])
         elif cmd == "remove-seq":
-            for seq in self.args[3:]:
-                self.provider_remove_seq(seq)
-            self.provider_notify_change()
+            self.provider_remove_seq_list(self.args[3:])
         elif cmd == "install":
             self.provider_install()
         elif cmd == "seqs":
@@ -168,6 +164,29 @@ class ProviderSetup(CommonSetup):
         for seq in list:
             print seq
 
+    def provider_get_all_seqs(self):
+        src_db = self.get_database('provider_db')
+        src_curs = src_db.cursor()
+        list = self.get_all_seqs(src_curs)
+        src_db.commit()
+        return list
+
+    def provider_add_seq_list(self, seq_list):
+        if not seq_list and self.options.all:
+            seq_list = self.provider_get_all_seqs()
+
+        for seq in self.args[3:]:
+            self.provider_add_seq(seq)
+        self.provider_notify_change()
+
+    def provider_remove_seq_list(self, seq_list):
+        if not seq_list and self.options.all:
+            seq_list = self.get_provider_seqs()
+
+        for seq in seq_list:
+            self.provider_remove_seq(seq)
+        self.provider_notify_change()
+
     def provider_install(self):
         src_db = self.get_database('provider_db')
         src_curs = src_db.cursor()
@@ -474,7 +493,12 @@ class SubscriberSetup(CommonSetup):
         subscriber_tables = self.get_subscriber_table_list()
         for tbl in provider_tables:
             if tbl not in subscriber_tables:
-                print tbl
+                print "Table: %s" % tbl
+        provider_seqs = self.get_provider_seqs()
+        subscriber_seqs = self.get_subscriber_seq_list()
+        for seq in provider_seqs:
+            if seq not in subscriber_seqs:
+                print "Sequence: %s" % seq
 
     def subscriber_add_tables(self, table_list):
         provider_tables = self.get_provider_table_list()
@@ -600,10 +624,13 @@ class SubscriberSetup(CommonSetup):
         
         prov_list = self.get_provider_seqs(src_curs)
         src_db.commit()
-        
+
         full_list = self.get_all_seqs(dst_curs)
         cur_list = self.get_subscriber_seq_list()
 
+        if not seq_list and self.options.all:
+            seq_list = prov_list
+        
         for seq in seq_list:
             seq = skytools.fq_name(seq)
             if seq not in prov_list:
@@ -627,6 +654,9 @@ class SubscriberSetup(CommonSetup):
         dst_curs = dst_db.cursor()
         cur_list = self.get_subscriber_seq_list()
 
+        if not seq_list and self.options.all:
+            seq_list = cur_list
+
         for seq in seq_list:
             seq = skytools.fq_name(seq)
             if seq not in cur_list: