Sha256: 951d86b29a784025a5a86242ca7d78811d0fd2c48d3d1023a9d080cb273fa004

Contents?: true

Size: 1.61 KB

Versions: 2

Compression:

Stored size: 1.61 KB

Contents

require_relative 'compute/instances'
require_relative 'compute/keypairs'
require_relative 'compute/images'
require_relative 'compute/flavors'

module DanarchySys
  module OpenStack
    class Compute
      def initialize(provider)
        config = ConfigMgr.new
        danarchysys_config = config.load
        connection = danarchysys_config[:connections][provider]
        @settings = danarchysys_config[:settings]
        @compute = Fog::Compute::OpenStack.new(connection)
      end

      def compute_instances
        ComputeInstances.new(@compute, @settings)
      end

      def compute_keypairs
        ComputeKeypairs.new(@compute, @settings)
      end

      def compute_images
        ComputeImages.new(@compute)
      end

      def compute_flavors
        ComputeFlavors.new(@compute)
      end

      def compute_ssh(instance_name)
        (comp_inst, comp_kp, comp_img) = compute_instances, compute_keypairs, compute_images
        instance = comp_inst.get_instance(instance_name)
        keypair_name = instance.key_name
        pemfile = comp_kp.pemfile_path(keypair_name)
        
        # Define user by image_id
        image_info = instance.image
        image_id = image_info['id']
        image = comp_img.get_image_by_id(image_id)

        # CoreOS is an exception with user as simply 'core' and not 'coreos'
        user = ''
        if image.name =~ /CoreOS/i
          user = 'core'
        else
          user = image.name.downcase.split('-')[0]
        end

        ipv4 = comp_inst.get_addresses(instance_name)[1]['addr']

        ssh = "ssh #{user}@#{ipv4} -i '#{pemfile}'"
        system(ssh)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
danarchy_sys-0.2.11 lib/danarchy_sys/openstack/compute.rb
danarchy_sys-0.2.10 lib/danarchy_sys/openstack/compute.rb