Project

General

Profile

Feature #22090

API Support for easier use of Smart-Class Param Overrides

Added by Iain Walmsley over 2 years ago. Updated over 1 year ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Category:
API
Target version:
Difficulty:
Triaged:
No
Bugzilla link:
Fixed in Releases:
Found in Releases:

Description

Similiar to #15003 around using Hammer to remove smart-class param overrides to hosts.

Currently there is a trivial API call to add an override by FQDN for a specific host - this is very useful for us;

-X POST --/api/v2/puppetclasses/:puppetclass_name/smart_class_parameters/:parameter_name/override_values -d '{"match":"fqdn=:hostname","value":":parameter_value}"}}'

e.g


--/api/v2/puppetclasses/apache::vhost/smart_class_parameters/port/override_values -d '{"match":"fqdn=myhost1","value":"4055"}}'

this is really nice and clean way of assigning values to hosts on a single basis, particularly when interfacing with external systems.

However when it comes to changing or removing this override, the calls are more elaborate, as you need to know both the specific numeric ID of the parameter, as well as the numeric ID of the override itself.

e.g

-X PUT --/api/v2/smart_class_parameters/412/override_values/1021 -d '{"override_value":{"match":"fqdn=myhost1","value":"4056"}}'
-X DELETE --/api/v2/smart_class_parameters/412/override_values/1021

This means external systems need to cache a list potentially of all override ids, parse and choose the related one.

Hence I would like to be able to edit using the same call as adding an override, or equivalent functionality for delete, eg.

-X PUT --/api/v2/puppetclasses/apache::vhost/smart_class_parameters/port/override_values -d '{"match":"fqdn=host1","value":"4057"}}'

Related issues

Related to Foreman - Bug #26232: Override Values API - request fails if the matcher attribute name has space or dot(.) character Closed

Associated revisions

Revision 6e385954 (diff)
Added by Iain Walmsley almost 2 years ago

fixes #22090 - friendlyid for lookupvalue plus override api

History

#1 Updated by Iain Walmsley over 2 years ago

  • Category set to API

#2 Updated by Iain Walmsley over 2 years ago

Having looked into this further the suggestion above clearly won't work. Instead, enabling friendlyid for LookupValue and allow overriding API calls to accept the match as the friendly name is a possibility? I have added a PR for this.

The match is unique per lookup key and the unit tests which use to_param automatically use the match string which appears to be working. However I wasn't sure if there was another way this should be being done or there's a reason this hasn't been implemented yet? If someone could have a look and advise me that'd be great.

Whatever the case, it would help hugely as setting individual overrides on hosts at the moment using the API is very clunky, especially when getting external systems to interface.

#3 Updated by The Foreman Bot over 2 years ago

  • Status changed from New to Ready For Testing
  • Pull request https://github.com/theforeman/foreman/pull/5242 added

#4 Updated by Daniel Lobato Garcia almost 2 years ago

  • Target version set to 1.20.0
  • Fixed in Releases 1.20.0 added

#5 Updated by Iain Walmsley almost 2 years ago

  • Status changed from Ready For Testing to Closed

#6 Updated by Bryan Kearney almost 2 years ago

  • Bugzilla link set to 1614768

#7 Updated by Jitendra Yejare over 1 year ago

@lain,

Just wanted to know the verification steps to verify this bug in downstream. Can you please provide the same ?

#8 Updated by Ori Rabin over 1 year ago

  • Related to Bug #26232: Override Values API - request fails if the matcher attribute name has space or dot(.) character added

Also available in: Atom PDF