code: def _do_main(self, commands):
          
          self._reset()
          self._init_schema_helper()
          self._run_prerequisites(commands)
  
          idl_ = idl.Idl(self.remote, self.schema_helper)
          seqno = idl_.change_seqno
          while True:
              self._idl_wait(idl_, seqno)
  
              seqno = idl_.change_seqno
              if self._do_vsctl(idl_, commands):
                  break
  
              if self.txn:
                  self.txn.abort()
                  self.txn = None
              # TODO:XXX
              # ovsdb_symbol_table_destroy(symtab)
  
          idl_.close()
docs: :type commands: list of VSCtlCommand