1. 15 Sep, 2015 2 commits
    • WIP: Make admin node a web-app · 10d8f0ce
      The goal is to get rid off the neoctl command-line tool, and to manage the
      cluster via a web browser, or tools like 'wget'. Then, it will be possible to
      provide an web user interface to connect to the underlying DB of any storage
      node, usually a SQL client.
      
      The design of admin app is finished:
      - it's threaded like client's
      - it's a WSGI app
      
      I also hacked a HTTP API as quickly as possible to make all tests pass.
      
      TODO:
      - define a better HTTP API
      - there's no UI at all yet
      - remove all unused packets from the protocol (those that were only used
        between neoctl and admin node)
      
      There's currently no UI implemented.
      
      There are a few dead files (not deleted yet) in case that they contain a few
      pieces of useful code:
       neo/neoctl/app.py
       neo/neoctl/handler.py
       neo/scripts/neoctl.py
      Julien Muchembled committed
    • admin: do not reset the list of known masters from configuration (or command line) when reconnecting · a72ddfb3
      This is questionable but a lot of NodeManager must be reviewed if we want to do
      differently. At least, admin nodes now behave like clients.
      Julien Muchembled committed
  2. 12 Aug, 2015 1 commit
  3. 24 Jun, 2015 1 commit
  4. 21 May, 2015 1 commit
  5. 07 Jan, 2014 1 commit
  6. 21 Aug, 2012 1 commit
  7. 20 Aug, 2012 2 commits
  8. 16 Aug, 2012 1 commit
  9. 01 Aug, 2012 1 commit
  10. 13 Jul, 2012 1 commit
  11. 05 Jul, 2012 1 commit
  12. 20 Mar, 2012 1 commit
  13. 16 Mar, 2012 1 commit
  14. 13 Mar, 2012 1 commit
  15. 12 Mar, 2012 1 commit
  16. 15 Feb, 2012 1 commit
  17. 26 Jan, 2012 1 commit
  18. 17 Jan, 2012 1 commit
  19. 09 Jan, 2012 1 commit
  20. 06 Jan, 2012 1 commit
  21. 26 Oct, 2011 1 commit
  22. 14 Sep, 2011 1 commit
  23. 08 Sep, 2011 1 commit
  24. 05 Sep, 2011 1 commit
  25. 10 Jun, 2011 1 commit
  26. 27 Apr, 2011 1 commit
    • connection: make close always call handler (connectionClosed or connectionFailed) · 4b6c1387
      Main reason is that it's difficult to know in advance which side really closes
      the connection. Network events can be chaotic and this could lead to many race
      conditions.
      Thus, handler can be used to update any database that is somewhat redundant
      to the connection status, i.e. node status usually. Safely and less duplicated
      code.
      
      This change is motivated by recurrent random failures during election.
      An example of race condition was that 2 fully connected master could close the
      extra connection (the primary -> secondary one) at the same time.
      
      In order to stabilize lower-level code and start with reliable election process,
      code has also been simplified to not care about node states. All connections
      without exception are closed at the end of the election and states are then
      updated 1 by 1 by identification handler.
      Note that during election, there may be 2 connection per node, which makes
      difficult to update node states by connectionFailed/connectionClosed events.
      
      timeoutExpired & peerBroken are dropped as they are unused for the moment.
      A new API should be designed so that connectionClosed know the reason of the
      close.
      BROKEN state becomes unused.
      
      git-svn-id: https://svn.erp5.org/repos/neo/trunk@2732 71dcc9de-d417-0410-9af5-da40c76e7ee4
      Julien Muchembled committed
  27. 23 Mar, 2011 2 commits
  28. 22 Mar, 2011 2 commits
    • admin: use 'boostrap' flag to discard partition changes received too early · a54aada5
      This should fix the following random failure:
      
      Traceback (most recent call last):
        File "neo/tests/functional/__init__.py", line 140, in start
          execfile(command, {"__name__": "__main__"})
        File "./neoadmin", line 22, in <module>
          main()
        File "neo/scripts/neoadmin.py", line 66, in main
          app.run()
        File "neo/admin/app.py", line 103, in run
          self.em.poll(1)
        File "neo/lib/event.py", line 100, in poll
          to_process.process()
        File "neo/lib/connection.py", line 532, in process
          self._handlers.handle(self, packet)
        File "neo/lib/connection.py", line 158, in handle
          self._handle(connection, packet)
        File "neo/lib/connection.py", line 174, in _handle
          handler.packetReceived(connection, packet)
        File "neo/lib/handler.py", line 93, in packetReceived
          self.dispatch(conn, packet)
        File "neo/admin/handler.py", line 142, in dispatch
          super(MasterEventHandler, self).dispatch(conn, packet)
        File "neo/lib/handler.py", line 57, in dispatch
          method(conn, *args)
        File "neo/admin/handler.py", line 156, in sendPartitionTable
          self.app.pt.load(ptid, row_list, self.app.nm)
        File "neo/lib/pt.py", line 219, in load
          assert node is not None
      AssertionError
      
      git-svn-id: https://svn.erp5.org/repos/neo/trunk@2680 71dcc9de-d417-0410-9af5-da40c76e7ee4
      Julien Muchembled committed
    • admin: factorize code (re)initializing application · 5917e6e8
      git-svn-id: https://svn.erp5.org/repos/neo/trunk@2679 71dcc9de-d417-0410-9af5-da40c76e7ee4
      Julien Muchembled committed
  29. 25 Feb, 2011 1 commit
    • Implementing ipv6 on neo · 0cdbf0ea
      In order to synchronise neo with slapos, it has to work perfectly with ipv4
      and ipv6. This allows to integrate neo in erp5 and to prepare different buildout
      installations of neo.
      The protocol and connectors are no more generic but can now support IPv4 and
      IPv6 connections. We adopted a specific way of development which allow to
      easily add new protocols in the future.
      
      git-svn-id: https://svn.erp5.org/repos/neo/trunk@2654 71dcc9de-d417-0410-9af5-da40c76e7ee4
      Olivier Cros committed
  30. 17 Jan, 2011 1 commit
  31. 05 Nov, 2010 1 commit
  32. 29 Oct, 2010 1 commit
  33. 27 Aug, 2010 3 commits
  34. 15 May, 2010 1 commit
    • Answer the partition table in one packet. · 39465fec
      SendPartitionTable packet was sent between Ask and Answer PartitionTable
      packets, as notifications. In this case, the only purpose of the 'Answer'
      was to check that the partition table was filled. The 'Ask' allowed also
      to request a part of the partitions but was not used and redundant with
      AskPartitionList for neoctl.
      
      This commit include the following work:
      - The partition table is always send in one packet.
      - The full partition table is always requested with AskPartitionTable
      - The full partition table is notified with SendPartitionTable
      - Client node process the answer in the bootstrap handler.
      - Admin can receive answer *and* notifications for the partition table.
      - Move the log calls to the pt.py module
      - Add pt.getRowList() to factorise the code.
      - Build partition table packets out of the loop when possible
      - Always load inconditionnaly the partition table in generic pt.py
      -
      
      git-svn-id: https://svn.erp5.org/repos/neo/trunk@2114 71dcc9de-d417-0410-9af5-da40c76e7ee4
      Grégory Wisniewski committed