Sha256: a82f4c3db3ab2c54bfcc92973308105aa1d19fed324cdb07d05126a2e302456a

Contents?: true

Size: 1.46 KB

Versions: 4

Compression:

Stored size: 1.46 KB

Contents

module Vcloud
  module Launcher
    class Launch

      def initialize
        @config_loader = Vcloud::Core::ConfigLoader.new
      end

      def run(config_file = nil, cli_options = {})
        config = @config_loader.load_config(config_file, config_schema)
        config[:vapps].each do |vapp_config|
          Vcloud::Launcher.logger.info("\n")
          Vcloud::Launcher.logger.info("Provisioning vApp #{vapp_config[:name]}.")
          begin
            vapp = ::Vcloud::Launcher::VappOrchestrator.provision(vapp_config)
            #methadone sends option starting with 'no' as false.
            vapp.power_on unless cli_options["dont-power-on"]
            Vcloud::Launcher.logger.info("Done! Provisioned vApp #{vapp_config[:name]} successfully.")
            Vcloud::Launcher.logger.info("=" * 70)
          rescue RuntimeError => e
            Vcloud::Launcher.logger.error("Failure : Could not provision vApp: #{e.message}")
            Vcloud::Launcher.logger.info("=" * 70)
            break unless cli_options["continue-on-error"]
          end

        end
      end

      def config_schema
        {
          type: 'hash',
          allowed_empty: false,
          permit_unknown_parameters: true,
          internals: {
            vapps: {
            type: 'array',
            required: false,
            allowed_empty: true,
            each_element_is: ::Vcloud::Launcher::VappOrchestrator.provision_schema
          },
        }
      }
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
vcloud-launcher-0.0.4 lib/vcloud/launcher/launch.rb
vcloud-launcher-0.0.3 lib/vcloud/launcher/launch.rb
vcloud-launcher-0.0.2 lib/vcloud/launcher/launch.rb
vcloud-launcher-0.0.1 lib/vcloud/launcher/launch.rb