1. 20 Feb, 2013 2 commits
    • Iustin Pop's avatar
      Add a Ganeti-specific implementation of Curl Multi · cc40185c
      Iustin Pop authored
      
      
      As we want to be able to run queries against multiple nodes in
      parallel, and furthermore in parallel with other work, we need to
      implement the Curl Multi interface (see libcurl-multi(3)).
      
      This patch adds a Ganeti-specific such implementation, to be used
      until upstream Curl bindings provide it. The implemented interface
      (there are two 'multi' interfaces) is the older curl_multi_perform(3).
      
      It has one downside (which is also, somewhat, and advantage): we use
      polling instead of more properly select() or poll. This is due to how
      waiting for FDs is implemented in Haskell: currently, it's not
      possible to wait for multiple FDs at once nicely, so we'd have to fork
      many threads for each FD to be watched, or alternatively one could use
      FFI select, but that would block the entire runtime.
      
      With the current poll method, the implementation achieves consistent
      ~100 RPC/s per second (with 10 multi interfaces running in parallel,
      each with 10 easy handles), and over ~1 hour of runtime the memory
      usage is stable, so memory allocation/deallocation (manual when
      dealing with FFI) _seems_ to be well handled.
      
      Future optimisations could be to move to curl_multi_socket_action(3),
      which might allow better integration with the Haskell runtime.
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichele Tartara <mtartara@google.com>
      cc40185c
    • Iustin Pop's avatar
      Switch the curl bindings from optional to required · 1ca709c1
      Iustin Pop authored
      
      
      Currently, we support curl being optional via some sporting exercises:
      ifdefs in the code, data types that represent 'Curl is disabled'
      state, etc. However, with the future work on RPC, we would have to
      even make the dependencies list conditional on it, etc. This is too
      much work, when the curl library is included even in stable
      distributions.
      
      This patch changes curl from option to required, the same as the other
      base libraries.
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichele Tartara <mtartara@google.com>
      1ca709c1
  2. 19 Feb, 2013 1 commit
  3. 18 Feb, 2013 3 commits
  4. 15 Feb, 2013 3 commits
  5. 12 Feb, 2013 2 commits
  6. 08 Feb, 2013 1 commit
  7. 07 Feb, 2013 1 commit
  8. 05 Feb, 2013 1 commit
  9. 30 Jan, 2013 1 commit
  10. 24 Jan, 2013 3 commits
  11. 18 Jan, 2013 2 commits
  12. 17 Jan, 2013 1 commit
  13. 16 Jan, 2013 4 commits
  14. 15 Jan, 2013 2 commits
    • Michael Hanselmann's avatar
      Link man pages in documentation · 5ce58234
      Michael Hanselmann authored
      
      
      This patch depends on “Option to include man pages in documentation”. In
      the documentation build including man pages, all “:manpage:`…`”
      references are converted to links. For man pages not provided by Ganeti,
      Sphinx' standard formatting is used.
      
      A small dance is necessary to hook into Sphinx' processing of man page
      roles and to generate automatically resolved links. The code converts
      “:manpage:`…`” for known man pages to the data structure equivalent of
      “:doc:`$name($section) <man-$name>`”. Additionally it checks the section
      numbers and formatting of references (in all builds).
      Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
      Reviewed-by: default avatarGuido Trotter <ultrotter@google.com>
      5ce58234
    • Michael Hanselmann's avatar
      Option to include man pages in documentation · 41806ef4
      Michael Hanselmann authored
      
      
      Before this patch, HTML versions of man pages (man/*.rst) were already
      built. However, since they are separate from the normal documentation,
      their content is not indexed for Sphinx' search functionality.
      Additionally it would simply be nice to have everything in one place.
      
      To this end a new configure-time option is added to enable the inclusion
      of man pages into the documentation. A dedicated option is necessary to
      still be able to provide a static documentation build in the tarball
      (not including man pages) as man pages contain build-specific paths and
      values. The documentation with man pages is written to the directory
      “doc/man-html”.
      
      A future patch will extend Sphinx to link occurences of “:manpage:`…`”
      to these man pages.
      Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
      Reviewed-by: default avatarGuido Trotter <ultrotter@google.com>
      41806ef4
  15. 14 Jan, 2013 1 commit
  16. 10 Jan, 2013 2 commits
    • Michael Hanselmann's avatar
      Generate documentation from build directory · 7cf58cad
      Michael Hanselmann authored
      
      
      When man pages should be included they need to be copied from man/*.rst.
      This means documentation can no longer be built from the static reST
      files alone (which are referenced using “abs_top_srcdir”). Similar to
      Python files, automake doesn't copy or link the input files for
      documentation into the build tree.
      
      This patch adds all files required to build the documentation to
      “srclink_files”, renames the “docrst" variable to “docinput”, and then
      references the files in the build tree using “abs_top_builddir”.
      Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
      Reviewed-by: default avatarGuido Trotter <ultrotter@google.com>
      7cf58cad
    • Michael Hanselmann's avatar
      Add script to check man page references · 58997abb
      Michael Hanselmann authored
      
      
      This script checks for some of the most obvious mistakes when formatting
      man page references (which should have the form “**ganeti**\(7)”). While
      this works now, it is very hard to avoid ambiguities (e.g. references
      within verbatim blocks) when using regular expressions.
      
      Also fixes a typo in Makefile.am by replacing “harcoded” with
      “hardcoded”.
      Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
      Reviewed-by: default avatarGuido Trotter <ultrotter@google.com>
      58997abb
  17. 09 Jan, 2013 3 commits
  18. 08 Jan, 2013 6 commits
  19. 07 Jan, 2013 1 commit