Class: HammerCLIForeman::ComputeAttribute::Update

Inherits:
UpdateCommand show all
Defined in:
lib/hammer_cli_foreman/compute_attribute.rb

Instance Method Summary collapse

Methods inherited from UpdateCommand

#clean_up_context, command_name, create_option_builder, inherited, #method_options_for_params, #success_message

Methods inherited from HammerCLIForeman::Command

alias_name_for_resource, build_options, connection_name, create_option_builder, #customized_options, #dependency_resolver, dependency_resolver, #exception_handler_class, #get_identifier, #get_resource_id, #get_resource_ids, resolver, #resolver, resource_alias_name_mapping, resource_config, resource_name_mapping, #searchables, searchables, #send_request, #transform_format

Instance Method Details

#request_paramsObject

Raises:

  • (ArgumentError)


88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/hammer_cli_foreman/compute_attribute.rb', line 88

def request_params
  params = HammerCLIForeman::ComputeAttribute.get_params(options)
  compute_resource_name = HammerCLIForeman::ComputeResources.resource_provider(options['option_compute_resource_id'])
  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
  interfaces_list = HammerCLIForeman::ComputeAttribute.alter_interfaces_list(options['option_interface_list']) unless options['option_interface_list'].empty?
  vm_attrs[interfaces_attr_name] = HammerCLIForeman::ComputeAttribute.attribute_hash(interfaces_list) if interfaces_list
  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