Sha256: 9f06ebc642e790ed09192c5f223ddf0c18bf7695c0d95231a00c493f4fb6c8ef

Contents?: true

Size: 1.98 KB

Versions: 2

Compression:

Stored size: 1.98 KB

Contents

require 'acquia/cloud/entity'

module Acquia
  class Cloud
    class Environment < Entity
      def initialize(cloud, site, environment)
        @cloud = cloud
        @site = site
        @data = environment
        @url = "/sites/#{@site}/envs/#{@data['name']}"
      end

      def name
        data['name']
      end

      def vcs_path
        data['vcs_path']
      end

      def ssh_host
        data['ssh_host']
      end

      def db_clusters
        data['db_clusters']
      end

      def default_domain
        data['default_domain']
      end

      def unix_username
        data['unix_username']
      end

      # new_vcs_path should start with 'tags/' or 'heads/' to distinguish
      # between tags or branches.
      def deploy_path(new_vcs_path)
        task = @cloud.api.post("#{@url}/code-deploy") do |response|
          response.params['path'] = new_vcs_path
        end

        Task.new(@cloud, @site, task)
      end

      def backup_database(database_name)
        task = @cloud.api.post("#{@url}/dbs/#{database_name}/backups")
        Task.new @cloud, @site, task
      end

      def logstream
        response = @cloud.api.get("#{@url}/logstream")
        Logs::Streamer.new(response['url'], JSON.parse(response['msg']))
      end

      def servers
        @cloud.api.get("#{url}/servers").map do |server|
          Server.new(@cloud, @site, name, server)
        end
      end

      def server(server)
        Server.new(@cloud, @site, name, {'name' => server}).refresh
      end

      def database_servers
        servers.select &:database?
      end

      def varnish_servers
        servers.select &:varnish?
      end

      def web_servers
        servers.select &:web?
      end

      def domains
        @cloud.api.get("#{url}/domains").map do |domain|
          Domain.new(@cloud, @site, name, domain)
        end
      end

      def add_domain(domain)
        task = @cloud.api.post("#{url}/domains/#{domain}")
        Task.new @cloud, @site, task
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
acquia-cloud-0.4.1 lib/acquia/cloud/environment.rb
acquia-cloud-0.4.0 lib/acquia/cloud/environment.rb