Bug 1385351

Summary: API 'api/v2/puppetclasses/<puppet-class-id>/smart_class_parameters' returns duplicate records.
Product: Red Hat Satellite Reporter: Ranjan Kumar <rankumar>
Component: APIAssignee: Swapnil Abnave <sabnave>
Status: CLOSED ERRATA QA Contact: Katello QA List <katello-qa-list>
Severity: medium Docs Contact:
Priority: medium    
Version: 6.2.2CC: andrew.schofield, bbuckingham, jcallaha, mhulan, sabnave, xdmoon
Target Milestone: UnspecifiedKeywords: Triaged
Target Release: Unused   
Hardware: x86_64   
OS: All   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1432927 (view as bug list) Environment:
Last Closed: 2018-02-21 16:54:17 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On:    
Bug Blocks: 1432927    

Description Ranjan Kumar 2016-10-16 12:24:03 UTC
Description of problem: 
API 'api/v2/puppetclasses/<puppet-class-id>/smart_class_parameters' returns duplicate records

curl -X GET -H  "Content-Type: application/json" "https://10.65.6.10/api/v2/puppetclasses/5/smart_class_parameters"

https://10.65.6.10/api/v2/puppetclasses/26/smart_class_parameters
{
  "total": 10,
  "subtotal": 10,
  "page": 1,
  "per_page": 20,
  "search": null,
  "sort": {
    "by": null,
    "order": null
  },
  "results": [
    {
      "description": null,
      "override": false,
      "parameter_type": "string",
      "default_value": "${$::nginx::params::manage_repo}",
      "hidden_value?": false,
      "hidden_value": "*****",
      "use_puppet_default": null,
      "required": false,
      "validator_type": null,
      "validator_rule": null,
      "merge_overrides": false,
      "merge_default": false,
      "avoid_duplicates": false,
      "override_value_order": "fqdn\nhostgroup\nos\ndomain",
      "override_values_count": 0,
      "created_at": "2016-10-07 12:48:53 +0530",
      "updated_at": "2016-10-07 12:48:53 +0530",
      "puppetclass_name": "nginx::package",
      "parameter": "manage_repo",
      "id": 279,
      "puppetclass_id": 26
    },
    {
      "description": null,
      "override": false,
      "parameter_type": "string",
      "default_value": "${$::nginx::params::manage_repo}",
      "hidden_value?": false,
      "hidden_value": "*****",
      "use_puppet_default": null,
      "required": false,
      "validator_type": null,
      "validator_rule": null,
      "merge_overrides": false,
      "merge_default": false,
      "avoid_duplicates": false,
      "override_value_order": "fqdn\nhostgroup\nos\ndomain",
      "override_values_count": 0,
      "created_at": "2016-10-07 12:48:53 +0530",
      "updated_at": "2016-10-07 12:48:53 +0530",
      "puppetclass_name": "nginx::package",
      "parameter": "manage_repo",
      "id": 279,
      "puppetclass_id": 26
    },
    {
      "description": null,
      "override": false,
      "parameter_type": "string",
      "default_value": "present",
      "hidden_value?": false,
      "hidden_value": "*****",
      "use_puppet_default": null,
      "required": false,
      "validator_type": null,
      "validator_rule": null,
      "merge_overrides": false,
      "merge_default": false,
      "avoid_duplicates": false,
      "override_value_order": "fqdn\nhostgroup\nos\ndomain",
      "override_values_count": 0,
      "created_at": "2016-10-07 12:48:53 +0530",
      "updated_at": "2016-10-07 12:48:53 +0530",
      "puppetclass_name": "nginx::package",
      "parameter": "package_ensure",
      "id": 277,
      "puppetclass_id": 26
    },
    {
      "description": null,
      "override": false,
      "parameter_type": "string",
      "default_value": "present",
      "hidden_value?": false,
      "hidden_value": "*****",
      "use_puppet_default": null,
      "required": false,
      "validator_type": null,
      "validator_rule": null,
      "merge_overrides": false,
      "merge_default": false,
      "avoid_duplicates": false,
      "override_value_order": "fqdn\nhostgroup\nos\ndomain",
      "override_values_count": 0,
      "created_at": "2016-10-07 12:48:53 +0530",
      "updated_at": "2016-10-07 12:48:53 +0530",
      "puppetclass_name": "nginx::package",
      "parameter": "package_ensure",
      "id": 277,
      "puppetclass_id": 26
    },
    {
      "description": null,
      "override": false,
      "parameter_type": "string",
      "default_value": "",
      "hidden_value?": false,
      "hidden_value": "*****",
      "use_puppet_default": null,
      "required": false,
      "validator_type": null,
      "validator_rule": null,
      "merge_overrides": false,
      "merge_default": false,
      "avoid_duplicates": false,
      "override_value_order": "fqdn\nhostgroup\nos\ndomain",
      "override_values_count": 0,
      "created_at": "2016-10-07 12:48:53 +0530",
      "updated_at": "2016-10-07 12:48:53 +0530",
      "puppetclass_name": "nginx::package",
      "parameter": "package_flavor",
      "id": 278,
      "puppetclass_id": 26
    },
    {
      "description": null,
      "override": false,
      "parameter_type": "string",
      "default_value": "",
      "hidden_value?": false,
      "hidden_value": "*****",
      "use_puppet_default": null,
      "required": false,
      "validator_type": null,
      "validator_rule": null,
      "merge_overrides": false,
      "merge_default": false,
      "avoid_duplicates": false,
      "override_value_order": "fqdn\nhostgroup\nos\ndomain",
      "override_values_count": 0,
      "created_at": "2016-10-07 12:48:53 +0530",
      "updated_at": "2016-10-07 12:48:53 +0530",
      "puppetclass_name": "nginx::package",
      "parameter": "package_flavor",
      "id": 278,
      "puppetclass_id": 26
    },
    truncated ......
  ]
}

Similarly related hammer command also return duplicate record. 

[root@dhcp6-10 ~]# hammer sc-param list --puppet-class-id  26
----|----------------|-----------------------------------|----------|---------------
ID  | PARAMETER      | DEFAULT VALUE                     | OVERRIDE | PUPPET CLASS  
----|----------------|-----------------------------------|----------|---------------
279 | manage_repo    | ${$::nginx::params::manage_repo}  |          | nginx::package
279 | manage_repo    | ${$::nginx::params::manage_repo}  |          | nginx::package
277 | package_ensure | present                           |          | nginx::package
277 | package_ensure | present                           |          | nginx::package
278 | package_flavor |                                   |          | nginx::package
278 | package_flavor |                                   |          | nginx::package
275 | package_name   | ${$::nginx::params::package_name} |          | nginx::package
275 | package_name   | ${$::nginx::params::package_name} |          | nginx::package
276 | package_source | nginx                             |          | nginx::package
276 | package_source | nginx                             |          | nginx::package
----|----------------|-----------------------------------|----------|---------------


Version-Release number of selected component (if applicable): Satellite 6.2.2


How reproducible: Always

Comment 2 Stanislav Tkachenko 2017-01-20 14:22:46 UTC
Verified by automation on Satellite 6.3 Snap 8 and Satellite 6.2.7 both via API and CLI.

Trimmed example output:
https://sat6.com/api/v2/puppetclasses/106/smart_class_parameters

{
  "total": 200,
  "subtotal": 200,
  "page": 1,
  "per_page": 20,
  "search": null,
  "sort": {
    "by": null,
    "order": null
  },
  "results": [
    {
      "description": null,
      "override": false,
      "parameter_type": "string",
      "default_value": "koquuo1Je4",
      "hidden_value?": false,
      "hidden_value": "*****",
      "use_puppet_default": null,
      "required": false,
      "validator_type": null,
      "validator_rule": null,
      "merge_overrides": false,
      "merge_default": false,
      "avoid_duplicates": false,
      "override_value_order": "fqdn\nhostgroup\nos\ndomain",
      "created_at": "2017-01-20 16:07:30 +0200",
      "updated_at": "2017-01-20 16:07:30 +0200",
      "puppetclass_name": "api_test_classparameters",
      "parameter": "api_classparameters_scp_001",
      "id": 2420,
      "puppetclass_id": 106,
      "override_values_count": 0
    },
    {
      "description": null,
      "override": false,
      "parameter_type": "string",
      "default_value": "io4moo3Ipa",
      "hidden_value?": false,
      "hidden_value": "*****",
      "use_puppet_default": null,
      "required": false,
      "validator_type": null,
      "validator_rule": null,
      "merge_overrides": false,
      "merge_default": false,
      "avoid_duplicates": false,
      "override_value_order": "fqdn\nhostgroup\nos\ndomain",
      "created_at": "2017-01-20 16:07:30 +0200",
      "updated_at": "2017-01-20 16:07:30 +0200",
      "puppetclass_name": "api_test_classparameters",
      "parameter": "api_classparameters_scp_002",
      "id": 2421,
      "puppetclass_id": 106,
      "override_values_count": 0
    },

Comment 3 Stanislav Tkachenko 2017-01-20 15:13:04 UTC
(In reply to Stanislav Tkachenko from comment #2)
> Verified by automation on Satellite 6.3 Snap 8 and Satellite 6.2.7 both via
> API and CLI.

Sorry, verified on 6.3 only, on 6.2.7 it is failing if same module was imported twice to different content views.

But as this bug is marked with flag 6.3.0 only, status still is verified.

Comment 4 orabin 2017-08-16 06:37:12 UTC
*** Bug 1432927 has been marked as a duplicate of this bug. ***

Comment 5 Satellite Program 2018-02-21 16:54:17 UTC
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA.
> 
> For information on the advisory, and where to find the updated files, follow the link below.
> 
> If the solution does not work for you, open a new bug report.
> 
> https://access.redhat.com/errata/RHSA-2018:0336