class Knife::Clc::ServerLaunch::Validator

Attributes

config[R]
errors[R]

Public Class Methods

new(params) click to toggle source
# File lib/knife-clc/server_launch/validator.rb, line 7
def initialize(params)
  @config = params.fetch(:config)
  @errors = params.fetch(:errors)
end

Public Instance Methods

validate() click to toggle source
# File lib/knife-clc/server_launch/validator.rb, line 12
def validate
  unless config[:clc_name]
    errors << 'Name is required'
  end

  unless config[:clc_group]
    errors << 'Group ID is required'
  end

  unless config[:clc_source_server]
    errors << 'Source server ID is required'
  end

  unless config[:clc_cpu]
    errors << 'Number of CPUs is required'
  end

  unless config[:clc_memory]
    errors << 'Number of memory GBs is required'
  end

  unless config[:clc_type]
    errors << 'Type is required'
  end

  custom_fields = config[:clc_custom_fields]
  if custom_fields && custom_fields.any?
    parse_custom_fields(custom_fields)
  end

  disks = config[:clc_disks]
  if disks && disks.any?
    parse_disks(disks)
  end

  packages = config[:clc_packages]
  if packages && packages.any?
    parse_packages(packages)
  end
end

Private Instance Methods

parse_custom_fields(custom_fields) click to toggle source
# File lib/knife-clc/server_launch/validator.rb, line 55
def parse_custom_fields(custom_fields)
  custom_fields.map! do |param|
    key, value = param.split('=', 2)

    unless key && value
      errors << "Custom field definition #{param} is malformed"
      next
    end

    { 'id' => key, 'value' => value }
  end
end
parse_disks(disks) click to toggle source
# File lib/knife-clc/server_launch/validator.rb, line 68
def parse_disks(disks)
  disks.map! do |param|
    path, size, type = param.split(',', 3)

    unless path && size && type
      errors << "Disk definition #{param} is malformed"
    end

    { 'path' => path, 'sizeGB' => size, 'type' => type }
  end
end
parse_packages(packages) click to toggle source
# File lib/knife-clc/server_launch/validator.rb, line 80
def parse_packages(packages)
  packages.map! do |param|
    begin
      id, raw_params = param.split(',', 2)

      parsed_params = {}
      raw_params.split(',').each do |raw_pair|
        key, value = raw_pair.split('=', 2)
        parsed_params[key] = value
      end

      { 'packageId' => id, 'parameters' => parsed_params }
    rescue Exception => e
      errors << "Package definition #{param} is malformed"
    end
  end
end