Bug 1117837

Summary: Trying to remove a DHCP record fails due to an invalid subnet check
Product: Red Hat Satellite Reporter: Bryan Kearney <bkearney>
Component: ProvisioningAssignee: Katello Bug Bin <katello-bugs>
Status: CLOSED CURRENTRELEASE QA Contact: Katello QA List <katello-qa-list>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 6.0.4CC: cwelton, jmontleo
Target Milestone: Unspecified   
Target Release: Unused   
Hardware: Unspecified   
OS: Unspecified   
URL: http://projects.theforeman.org/issues/6412
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-09-11 12:26:27 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Bryan Kearney 2014-07-09 13:28:59 UTC
Take three hosts, add them into foreman via API.  Then try and remove them.  The first deletes fine, but the subsequent deletions fail.  The problem is in file , line 196.  When the subnet gets searched, the 1st host is not found, and then the entire subnet array is returned to the delete function, which then throws an error.

Pull request coming.

Comment 1 Bryan Kearney 2014-07-09 13:29:00 UTC
Created from redmine issue http://projects.theforeman.org/issues/6412

Comment 3 Bryan Kearney 2014-07-11 10:03:39 UTC
Moving to POST since upstream bug http://projects.theforeman.org/issues/6412 has been closed
-------------
Dominic Cleal
https://github.com/theforeman/smart-proxy/pull/175
-------------
David Swift
Copying the description I just wrote into github, as it explains this behavior better:



A small correction - if it fails to find the DHCP record of a deleted host in the subnet under evaluation, it will not attempt to delete it from the subnet under evaluation. This allows it to carry on, and actually delete the record that is intended.

The problem arises due to the evaluation of DHCP records with a status of 'deleted'. These records are evaluated against the subnet that contains the actual host we want to delete, and if they are found, they are removed prior to executing the target deletion.

In the case that triggered this bug, the record with the DHCP deleted status was originally in a different subnet before it was removed. On a subsequent delete run for a second host, the previously deleted host could not be found in the subnet under evaluation, and line 198 never returned a value. This left the return value of find_record_by_hostname as the result of subnet.records.each (an array), which then caused the subnet.delete call to throw an error.

A better fix might be to track the subnets of hosts with a DHCP status of deleted, but this gets the job done without added complexity.

HTH.

-------------
Anonymous
Applied in changeset smart-proxy:commit:57ea7e82f68395c61ab0515ea331423c9f4ac5ea.

Comment 5 Bryan Kearney 2014-09-11 12:26:27 UTC
This was delivered with Satellite 6.0 which was released on 10 September 2014.