Sha256: 6ef1b0c28123a7b06d7bfd47efb2b3d96821c81fd5f039eb2ef945bc83744336

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

module CORL
module Action
class Provision < Plugin::CloudAction
 
  #-----------------------------------------------------------------------------
  # Settings
  
  def configure
    super do
      codes :network_failure,
            :provision_failure
    end
  end
  
  #-----------------------------------------------------------------------------
  # Operations
  
  def execute
    super do |node, network|
      if network && node
        info('corl.actions.provision.start')
        
        success = true
        
        if CORL.admin?
          unless node.build_time && File.directory?(network.build_directory)
            success = node.build
          end
        
          if success
            provisioner_info = node.provisioner_info   
        
            node.provisioners.each do |provider, collection|
              provider_info = provisioner_info[provider]
              profiles      = provider_info[:profiles]
          
              collection.each do |name, provisioner|
                build_profiles = provisioner.build_profiles
            
                if supported_profiles = provisioner.supported_profiles(profiles)
                  profile_success = provisioner.provision(supported_profiles)
                  success         = false unless profile_success
                end
              end
            end
            myself.status = code.provision_failure unless success
          end
        end
      else
        myself.status = code.network_failure  
      end
    end
  end
end
end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
corl-0.4.3 lib/CORL/action/provision.rb