class HammerCLIForeman::ComputeAttribute::Update

Public Instance Methods

request_params() click to toggle source
# File lib/hammer_cli_foreman/compute_attribute.rb, line 78
def request_params

  params = HammerCLIForeman::ComputeAttribute.get_params(options)
  compute_resource_name = HammerCLIForeman.record_to_common_format(HammerCLIForeman.foreman_resource(:compute_resources).call(:show, 'id' => options["option_compute_resource_id"] ))["provider_friendly_name"].downcase
  interfaces_attr_name = ::HammerCLIForeman.compute_resources[compute_resource_name].interfaces_attrs_name

  raise ArgumentError, "Compute profile value to update does not exist yet; it needs to be created first" if !params['compute_attribute'].key?('id')
  params['id'] =  params['compute_attribute']['id']
  vm_attrs = params['compute_attribute']['vm_attrs']
  original_volumes = vm_attrs['volumes_attributes'] || {}
  original_interfaces = vm_attrs[interfaces_attr_name] || {}

  if options['option_compute_attributes']
    vm_attrs = options['option_compute_attributes']
    vm_attrs['volumes_attributes'] ||= original_volumes
    vm_attrs[interfaces_attr_name] ||= original_interfaces
  end
  vm_attrs[interfaces_attr_name] = HammerCLIForeman::ComputeAttribute.attribute_hash(options['option_interface_list']) unless options['option_interface_list'].empty?
  vm_attrs['volumes_attributes'] = HammerCLIForeman::ComputeAttribute.attribute_hash(options['option_volume_list']) unless options['option_volume_list'].empty?
  params['compute_attribute']['vm_attrs'] = vm_attrs
  params

end