class DataValidators::PbsDataValidator
Data validator class for pbs output type
Constants
- COMPLETED
Attributes
log[R]
Public Class Methods
new(log = Logger.new(STDOUT))
click to toggle source
# File lib/data_validators/pbs_data_validator.rb, line 17 def initialize(log = Logger.new(STDOUT)) @log = log end
Public Instance Methods
validate_data(data = nil)
click to toggle source
All possible output fields and their default values:
valid_data - required valid_data - required valid_data - required valid_data - optional, defaults to nil valid_data - required valid_data - required, defaults to “one-#{valid_data}” valid_data - required valid_data - required valid_data - required, defaults to 00:00:00 valid_data - required valid_data - required valid_data - optional, defaults to nil valid_data - set of history records history_record - required history_record - required history_record - required, either all history records 'U' or last history record with 'E' if vm finished history_record - required history_record - required
# File lib/data_validators/pbs_data_validator.rb, line 41 def validate_data(data = nil) unless data fail Errors::ValidationError, 'Skipping a malformed record. '\ 'No data available to validate' end valid_data = data.clone fail_validation 'host' unless string?(data['host']) fail_validation 'queue' unless string?(data['pbs_queue']) fail_validation 'owner' unless string?(data['realm']) fail_validation 'VMUUID' unless string?(data['vm_uuid']) fail_validation 'owner' unless string?(data['user_name']) fail_validation 'group' unless string?(data['group_name']) fail_validation 'ppn' unless number?(data['cpu_count']) fail_validation 'mem' unless number?(data['memory']) fail_validation 'HISTORY_RECORDS' if (!data['history']) || data['history'].empty? history = [] data['history'].each do |h| history_record = h.clone fail_validation 'start' unless non_zero_number?(h['start_time']) history_record['start_time'] = Time.at(h['start_time'].to_i) fail_validation 'end' unless number?(h['end_time']) history_record['end_time'] = Time.at(h['end_time'].to_i) fail_validation 'seq' unless number?(h['seq']) fail_validation 'hostname' unless string?(h['hostname']) history_record['state'] = 'U' history << history_record end history.last['state'] = 'E' if data['status_code'] == COMPLETED valid_data['history'] = history valid_data['machine_name'] = default(data['machine_name'], :string, "one-#{valid_data['vm_uuid']}") duration = sum_rstime(data['history'], data['status_code'] == COMPLETED, valid_data['vm_uuid']) valid_data['duration'] = Time.at(duration) valid_data['disk_size'] = sum_disk_size(data['disks'], valid_data['vm_uuid']) valid_data end