1. 14 May, 2014 16 commits
  2. 09 May, 2014 5 commits
  3. 08 May, 2014 1 commit
  4. 02 May, 2014 18 commits
    • Ilias Tsitsimpis's avatar
      Merge pull request #53 from dimara/feature-deploy-pythonize · a5d6bb05
      Ilias Tsitsimpis authored
      Change conf files to proper ConfigParser ones.
      Introduce separate config and context modules.
      Refactor components so that one can use:
      ctx = context.Context()
      NS = components.NS(ctx)
      NS.setup()
      a5d6bb05
    • Dimitris Aragiorgis's avatar
      deploy: Workaround for cert_override.txt · d0dc448b
      Dimitris Aragiorgis authored
      For cyclades, pithos, astakos, and cms use firefox_cert_override.py
      script (credits to kpap@grnet.gr) to manually create proper entries
      so that the end user running firefox does not have to accept all
      certificates before having a working environment.
      
      This will add /etc/iceweasel/profile/cert_override.txt on client
      node with entries for:
      
      astakos.synnefo.live:443
      cyclades.synnefo.live:443
      pithos.synnefo.live:443
      cms.synnefo.live:443
      synnefo.live:443
      
      and the corresponding IPs (currently needed for cyclades UI).
      
      For further info about cert_override.txt file see:
      
      https://developer.mozilla.org/en-US/docs/Cert_override.txt
      
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      d0dc448b
    • Dimitris Aragiorgis's avatar
      deploy: Redirect / to /astakos/ui · a6428d20
      Dimitris Aragiorgis authored
      
      
      Since pithos is the last registered service found in show_urls
      synnefo.live redirects to synnefo.live/pithos/ui which eventually
      cannot load.
      
      Make apache redirect to /astakos/ui by explicitly defining a
      RewriteRule in vhost file.
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      a6428d20
    • Dimitris Aragiorgis's avatar
      backend: Change segment type and name · 3afb4e70
      Dimitris Aragiorgis authored
      
      
      ..to posix and archipelago respectively so that it is working
      with the latest archipelago version.
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      3afb4e70
    • Dimitris Aragiorgis's avatar
      deploy: Install blktap in Achip component · 62bdc889
      Dimitris Aragiorgis authored
      
      
      Currently latest version of archipelago uses blktap instead of
      xseg. Install official blktap-dkms and our custom blktap-utils
      for this purpose.
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      62bdc889
    • Dimitris Aragiorgis's avatar
      97a7d8b1
    • Dimitris Aragiorgis's avatar
      deploy: Use cname instead of fqdn · 3a9f2ac6
      Dimitris Aragiorgis authored
      
      
      ..for astakos, cyclades, pithos, cms, db, mq, nfs.
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      3a9f2ac6
    • Dimitris Aragiorgis's avatar
      docs: Update snf-deploy docs · 3bf5e8b8
      Dimitris Aragiorgis authored
      
      
      ..to reflect the latest changes.
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      3bf5e8b8
    • Dimitris Aragiorgis's avatar
      deploy/ci: Update conf files for ci schema · dd907306
      Dimitris Aragiorgis authored
      
      
      ..and invoke `snf-deploy synnefo` instead of `snf-deploy all`.
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      dd907306
    • Dimitris Aragiorgis's avatar
      deploy: Make ganeti1 a synnefo backend · 7bdced4c
      Dimitris Aragiorgis authored
      
      
      This is done by making True the synnefo option in the ganeti1
      section. This way the VMC component will require some other
      components (Image, GanetiCollectd, ArchipGaneti, etc.) that are
      needless in a regular Ganeti cluster.
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      7bdced4c
    • Dimitris Aragiorgis's avatar
      deploy: Use archipelago related components · 523cb739
      Dimitris Aragiorgis authored
      
      
      Make Cyclades and Pithos require PithosBackend and Archip.
      Make VMC require also ExtStorage and ArchipGaneti.
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      523cb739
    • Dimitris Aragiorgis's avatar
      deploy: Refactor fabfile · ac8113ce
      Dimitris Aragiorgis authored
      
      
      The fabfile is now responsible to find the target nodes for each
      execution context. It practically gets the corresponding component
      for each role and invokes its setup() method.
      
      To get the execution context for each action we use fabric's execute()
      and update the context based on env.host.
      
      Some things can be done concurrently (setup of each VMC node).
      To do so, we use the fabric's @parallel decorator.
      
      Additionally we support setup of a single component/role on a target
      node or even the execution of a single method of a component.
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      ac8113ce
    • Dimitris Aragiorgis's avatar
      deploy: Refactor components module · 3699d1fe
      Dimitris Aragiorgis authored
      
      
      Up until now components were simple objects decoupled from fabric
      execution. Their methods were just returning a list of bash commands
      which utils module was executing in the correct context.
      
      This patch changes this rational. Specifically:
      
      A Component() gets initialized with an execution context that is a
      configuration snapshot of the target setup, cluster and node. A
      component implements the following helper methods: check, install,
      prepare, configure, restart, initialize, and test. All those methods
      will be executed on the target node with this order during setup.
      
      Additionally each Component class implements admin_pre, and
      admin_post methods which invoke actions on different components on
      the same execution context before and after installation. For
      example before a backend gets installed, its FQDN must resolve to
      the master floating IP, so we have to run some actions on the ns
      node and after installation we must add it to cyclades (snf-manage
      backend-add on the cyclades node).
      
      Component() inherits ComponentRunner() which practically exports the
      setup() method. This will first check if the required components are
      installed, will install them if not and update the status of target
      node.
      
      ComponentRunner() inherits FabricRunner() which practically wraps
      basic fabric commands (put, get, run) with the correct execution
      environment.
      
      The fabfile practically gets the target nodes for each role from the
      configuration and uses the roles module which knows the
      role-component mapping to get the target component with the proper
      execution context. Then it just invokes the setup() method.
      
      Each component gets initialized with an execution context and uses
      the config module for accessing global wide options. The context
      provides node, cluster, and setup related info.
      
      We introduce some helper decorators that wrap methods of Component
      class and update its execution context (self, self.ctx):
      
      - parse_* executes the wrapped method and parses the output.
        The desired vars (user_id, backend_id, user_uuid, etc.) are
        stored in the execution context and made available to other
        methods.
      
      - update_admin initializes the admin roles (NS, Astakos,
        Cyclades, etc.) of the current context and make them available
        under self.NS, self.ASTAKOS, etc. These have the same execution
        context of the current components besides the target node
        which gets derived from the corresponding config.
      
      - update_cluster_admin initializes the cluster's admin role
        and make it available under self.MASTER.
      
      - run_cmds runs the list of returned commands in the target node
      
      The update_ns() method of NS component gets the
      self.ctx.admin_fqdn and invokes nsupdate accordingly.
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      3699d1fe
    • Dimitris Aragiorgis's avatar
      a43cc462
    • Dimitris Aragiorgis's avatar
      deploy: Make snf-deploy script use new modules · f4f1dfa9
      Dimitris Aragiorgis authored
      
      
      Use config, context, status and vcluster modules.
      
      The main method of snf-deploy script will initialize them with
      the args passed. Additionally make some minor changes related
      to the command line:
      
       - snf-deploy all -> snf-deploy synnefo.
       - add --setup option
       - add --cluster option
       - use --<name>-dir for template, state, package dirs
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      f4f1dfa9
    • Dimitris Aragiorgis's avatar
      deploy: Cleanup lib module · 2ce89484
      Dimitris Aragiorgis authored
      
      
      Remove unused Env, Status, Conf classes. Host and Alias classes have
      been substituted by FQDN. The latter will be used for Node and
      Cluster info.
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      2ce89484
    • Dimitris Aragiorgis's avatar
      deploy: Add vcluster module · d783fd6e
      Dimitris Aragiorgis authored
      
      
      ..with the relevant helper methods for creating a local
      virtual cluster with KVM. snf-deploy base script will import
      this module and use it if vcluster command is requested.
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      d783fd6e
    • Dimitris Aragiorgis's avatar
      deploy: Add roles module · 4ba6e61d
      Dimitris Aragiorgis authored
      
      
      This is used to get the target component for each node.
      It has a role-component mapping and should be used like:
      
      NS = roles.get(constants.NS, ctx)
      
      where the ctx is a Context() with proper node, role, cluster, setup.
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      4ba6e61d