Bug #8492

unable to overwrite BMC IP/mac address

Added by Joshua Hoblitt almost 7 years ago. Updated almost 7 years ago.

Target version:
Bugzilla link:
Pull request:
Fixed in Releases:
Found in Releases:


When attempting to add a BMC interface to a host and the BMC has an existing lease, or trying to change either the IP or mac address of an already configured BMC interface (regular interfaces were not tested), a modal dialog appears informing you that "Conflicts have been detected". After the notice is dismissed, the "overwrite" button does not appear in place of the "submit" button. Clicking "submit" [again] repeats the the conflict notification cycle in an endless loop. Manually deleting all leases for the BMC mac address prevents the conflicts dialog from being presented and avoids entered into the endless "ack"/"submit" loop.

The easiest way to reproduce this issue is to attempt to change the mac address on an already configured BMC interface.

This issue has been observered in both 1.5.3 and 1.6.3.

Logs from attempt to change 00:25:90:d7:06:d0 to 00:25:90:d7:06:d1


Started PUT "/hosts/" for at 2014-11-24 11:34:52 -0700
Processing by HostsController#update as */*
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"rKHt0l+bplIa5bls+PM9sO2oq4Rj34jDpp+tK15a6fI=", "host"=>{"name"=>"dec19", "hostgroup_id"=>"5", "environment_id"=>"1", "puppet_ca_proxy_id"=>"2", "puppet_proxy_id"=>"2", "config_group_ids"=>["", "4"], "puppetclass_ids"=>["", "746"], "managed"=>"1", "progress_report_id"=>"[FILTERED]", "domain_id"=>"6", "realm_id"=>"", "mac"=>"00:25:90:c8:7b:82", "subnet_id"=>"1", "ip"=>"", "interfaces_attributes"=>{"0"=>{"_destroy"=>"false", "mac"=>"00:25:90:d7:06:d1", "name"=>"dec19-bmc", "domain_id"=>"6", "subnet_id"=>"1", "ip"=>"", "username"=>"ADMIN", "password"=>"[FILTERED]", "provider"=>"IPMI", "id"=>"21"}, "new_interfaces"=>{"_destroy"=>"false", "type"=>"Nic::Managed", "mac"=>"", "name"=>"", "domain_id"=>"", "ip"=>"", "provider"=>"IPMI"}}, "architecture_id"=>"1", "operatingsystem_id"=>"20", "medium_id"=>"6", "ptable_id"=>"26", "disk"=>"", "root_pass"=>"[FILTERED]", "is_owned_by"=>"1-Users", "enabled"=>"1", "model_id"=>"19", "comment"=>"", "overwrite"=>"false"}, "id"=>""}
DHCP records already exists
Failed to save: Conflict DHCP records already exists
  Rendered hosts/_conflicts.html.erb (0.3ms)
  Rendered hosts/_progress.html.erb (0.1ms)
  Rendered config_groups/_config_group.html.erb (7.0ms)
  Rendered config_groups/_config_group.html.erb (5.9ms)
  Rendered config_groups/_config_group.html.erb (4.6ms)
  Rendered config_groups/_config_group.html.erb (5.6ms)
  Rendered config_groups/_config_group.html.erb (6.1ms)
  Rendered config_groups/_config_group.html.erb (6.7ms)
  Rendered config_groups/_config_group.html.erb (6.3ms)
  Rendered config_groups/_config_groups_selection.html.erb (49.1ms)
  Rendered puppetclasses/_selectedClasses.html.erb (1.7ms)
  Rendered puppetclasses/_classes_in_groups.html.erb (0.6ms)

Started GET "/tasks/551687c1-b191-466c-bd33-19d4d6635435" for at 2014-11-24 11:34:54 -0700
Processing by TasksController#show as */*
  Parameters: {"id"=>"551687c1-b191-466c-bd33-19d4d6635435"}
  Rendered tasks/_list.html.erb (0.2ms)
Completed 200 OK in 9ms (Views: 1.1ms | ActiveRecord: 0.9ms)
  Rendered puppetclasses/_classes.html.erb (1092.3ms)
  Rendered puppetclasses/_class_selection.html.erb (1198.3ms)
  Rendered common/_domain.html.erb (10.9ms)
  Rendered hosts/_interfaces.html.erb (15.8ms)
  Rendered hosts/_interfaces.html.erb (9.0ms)
  Rendered common/os_selection/_architecture.html.erb (6.8ms)
  Rendered common/os_selection/_operatingsystem.html.erb (12.5ms)
  Rendered hosts/_operating_system.html.erb (25.7ms)
  Rendered hosts/_unattended.html.erb (75.8ms)
  Rendered puppetclasses/_class_parameters.html.erb (0.0ms)
  Rendered puppetclasses/_classes_parameters.html.erb (11.5ms)
  Rendered common_parameters/_inherited_parameters.html.erb (0.2ms)
  Rendered common_parameters/_puppetclass_parameter.html.erb (2.7ms)
  Rendered common_parameters/_puppetclasses_parameters.html.erb (4.3ms)
  Rendered common_parameters/_parameter.html.erb (1.7ms)
  Rendered common_parameters/_parameters.html.erb (5.5ms)
  Rendered hosts/_form.html.erb (1342.1ms)
  Rendered hosts/edit.html.erb within layouts/application (1345.2ms)
  Rendered home/_user_dropdown.html.erb (1.7ms)
Read fragment views/tabs_and_title_records-1 (0.2ms)
  Rendered home/_topbar.html.erb (2.9ms)
  Rendered layouts/base.html.erb (4.9ms)
Completed 200 OK in 2483ms (Views: 1331.7ms | ActiveRecord: 44.7ms)


E, [2014-11-24T11:34:52.856723 #8655] ERROR -- : Record not found - - [24/Nov/2014 11:34:52] "GET / HTTP/1.1" 404 47 0.0812 - - [24/Nov/2014 11:34:53] "GET / HTTP/1.1" 200 122 0.1534
E, [2014-11-24T11:34:53.202950 #8655] ERROR -- : Record not found - - [24/Nov/2014 11:34:53] "GET / HTTP/1.1" 404 47 0.0781 - - [24/Nov/2014 11:34:53] "GET / HTTP/1.1" 200 122 0.0721 - - [24/Nov/2014 11:34:53] "GET /serverName HTTP/1.1" 200 29 0.0005 - - [24/Nov/2014 11:34:53] "GET / HTTP/1.1" 200 170 0.0822 - - [24/Nov/2014 11:34:53] "GET / HTTP/1.1" 200 170 0.1360


#1 Updated by Dominic Cleal almost 7 years ago

  • Category changed from DHCP to Network

#2 Updated by Joshua Hoblitt almost 7 years ago

The issue appears to be a bit more extensive than I first realized, even trying to change the password on an existing bmc interface will trigger the dhcp conflict warning.

I'm provisioning brand new bare metal today and not having the pxe mac and bmc mac associated via foreman was going to require the manual keying process to be essentially reapeted in the future. I tried a couple of different ways to work around this problem, including injecting the host object for the bmc via omshell, but I was unable to escape the finite submit loop if there was an existing lease or host object. Manual editing of the file is impractical at the volume I need to process (40+ hosts) and I thought I was going to have to resort to automated parsing/purging of the lease file.

As a last ditch effort, I hard wired Host::Managed#overwrite? to return true. While incredibly crude, this does allow me to add and edit bmc interfaces.

diff --git a/app/models/host/managed.rb b/app/models/host/managed.rb
index 7eda3c3..317d5e0 100644
--- a/app/models/host/managed.rb
+++ b/app/models/host/managed.rb
@@ -606,6 +606,7 @@ class Host::Managed < Host::Base

   def overwrite?
     @overwrite ||= false
+    true

   # We have to coerce the value back to boolean. It is not done for us by the framework.

Also available in: Atom PDF