Bug #17301
closedISC DHCP known reservations/leases not updated over NFS
Description
- Adding a host successfully retrieves an available IP and inserts a reservation in the leases file
- Updating a hosts interface values causes a DHCP exception on submit, in the prior version I received an overwrite prompt
- Deleting a host works without error but the DHCP reservation is not removed from the leases file.
Environment:
ISC-DHCP-Server version 4.3.3 on Ubuntu 16.04 LTS server
Smart-Proxy version 1.13.1 on separate Ubuntu 14.04 LTS server
Entry from leases file persists after host is deleted:
host joni-cantrell.one.den.net {
dynamic;
hardware ethernet 0b:78:6d:44:33:c8;
fixed-address 192.168.1.10
supersede server.filename = "pxelinux.0";
supersede server.next-server = 0a:75:1e:1e;
supersede host-name = "joni-cantrell.one.den.net";
}
From Smart-Proxy Log:
D, [2016-11-09T15:00:30.248930 #2407] DEBUG -- : Loading subnet data for 192.168.1.0/255.255.255.0
D, [2016-11-09T15:00:30.253857 #2407] DEBUG -- : omshell: executed - set name = "joni-cantrell.one.den.net"
D, [2016-11-09T15:00:30.254083 #2407] DEBUG -- : nil
D, [2016-11-09T15:00:30.254196 #2407] DEBUG -- : omshell: executed - set ip-address = 192.168.1.10
D, [2016-11-09T15:00:30.254289 #2407] DEBUG -- : nil
D, [2016-11-09T15:00:30.254392 #2407] DEBUG -- : omshell: executed - set hardware-address = 0b:78:6d:44:33:c8
D, [2016-11-09T15:00:30.254482 #2407] DEBUG -- : nil
D, [2016-11-09T15:00:30.254583 #2407] DEBUG -- : omshell: executed - set hardware-type = 1
D, [2016-11-09T15:00:30.254672 #2407] DEBUG -- : nil
D, [2016-11-09T15:00:30.254874 #2407] DEBUG -- : omshell: executed - set statements = "filename = \"pxelinux.0\"; next-server = 0a:75:1e:1e; option host-name = \"joni-cantrell.one.den.net\";"
D, [2016-11-09T15:00:30.254989 #2407] DEBUG -- : nil
D, [2016-11-09T15:00:30.255097 #2407] DEBUG -- : omshell: executed - create
D, [2016-11-09T15:00:30.255194 #2407] DEBUG -- : nil
E, [2016-11-09T15:00:30.259507 #2407] ERROR -- : Omshell failed:
obj: <null>
, > obj: host
, > obj: host
, name = "joni-cantrell.one.den.net"
, > obj: host
, name = "joni-cantrell.one.den.net"
, ip-address = 0a:75:4f:12
, > obj: host
, name = "joni-cantrell.one.den.net"
, ip-address = 0a:75:4f:12
, hardware-address = 0b:78:6d:44:33:c8
, > obj: host
, name = "joni-cantrell.one.den.net"
, ip-address = 0a:75:4f:12
, hardware-address = 0b:78:6d:44:33:c8
, hardware-type = 1
, > obj: host
, name = "joni-cantrell.one.den.net"
, ip-address = 0a:75:4f:12
, hardware-address = 0b:78:6d:44:33:c8
, hardware-type = 1
, statements = "filename = "pxelinux.0"; next-server = 0a:75:1e:1e; option host-name = "joni-cantrell.one.den.net";"
, > can't open object: already exists
, obj: host
, name = "joni-cantrell.one.den.net"
, ip-address = 0a:75:4f:12
, hardware-address = 0b:78:6d:44:33:c8
, hardware-type = 1
, statements = "filename = "pxelinux.0"; next-server = 0a:75:1e:1e; option host-name = "joni-cantrell.one.den.net";"
, >
E, [2016-11-09T15:00:30.259827 #2407] ERROR -- : Failed to add DHCP reservation for joni-cantrell.one.den.net (192.168.1.10 / 0b:78:6d:44:33:c8): Entry already exists
D, [2016-11-09T15:00:30.259916 #2407] DEBUG -- : Failed to add DHCP reservation for joni-cantrell.one.den.net (192.168.1.10 / 0b:78:6d:44:33:c8): Entry already exists (Proxy::DHCP::Error)
/usr/share/foreman-proxy/modules/dhcp_isc/dhcp_isc_main.rb:99:in `report'
/usr/share/foreman-proxy/modules/dhcp_isc/dhcp_isc_main.rb:82:in `om_disconnect'
/usr/share/foreman-proxy/modules/dhcp_isc/dhcp_isc_main.rb:56:in `om_add_record'
/usr/share/foreman-proxy/modules/dhcp_isc/dhcp_isc_main.rb:32:in `add_record'
/usr/share/foreman-proxy/modules/dhcp/dhcp_api.rb:88:in `block in <class:DhcpApi>'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:1541:in `call'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:1541:in `block in compile!'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:950:in `[]'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:950:in `block (3 levels) in route!'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:966:in `route_eval'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:950:in `block (2 levels) in route!'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:987:in `block in process_route'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:985:in `catch'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:985:in `process_route'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:948:in `block in route!'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:947:in `each'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:947:in `route!'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:1059:in `block in dispatch!'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:1041:in `block in invoke'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:1041:in `catch'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:1041:in `invoke'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:1056:in `dispatch!'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:882:in `block in call!'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:1041:in `block in invoke'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:1041:in `catch'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:1041:in `invoke'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:882:in `call!'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:870:in `call'
/usr/lib/ruby/vendor_ruby/rack/methodoverride.rb:21:in `call'
/usr/lib/ruby/vendor_ruby/rack/commonlogger.rb:33:in `call'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:212:in `call'
/usr/share/foreman-proxy/lib/proxy/log.rb:63:in `call'
/usr/lib/ruby/vendor_ruby/rack/protection/xss_header.rb:18:in `call'
/usr/lib/ruby/vendor_ruby/rack/protection/path_traversal.rb:16:in `call'
/usr/lib/ruby/vendor_ruby/rack/protection/json_csrf.rb:18:in `call'
/usr/lib/ruby/vendor_ruby/rack/protection/base.rb:50:in `call'
/usr/lib/ruby/vendor_ruby/rack/protection/base.rb:50:in `call'
/usr/lib/ruby/vendor_ruby/rack/protection/frame_options.rb:31:in `call'
/usr/lib/ruby/vendor_ruby/rack/nulllogger.rb:9:in `call'
/usr/lib/ruby/vendor_ruby/rack/head.rb:11:in `call'
/usr/lib/ruby/vendor_ruby/sinatra/showexceptions.rb:21:in `call'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:175:in `call'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:1949:in `call'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:1449:in `block in call'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:1726:in `synchronize'
/usr/lib/ruby/vendor_ruby/sinatra/base.rb:1449:in `call'
/usr/lib/ruby/vendor_ruby/rack/builder.rb:138:in `call'
/usr/lib/ruby/vendor_ruby/rack/urlmap.rb:65:in `block in call'
/usr/lib/ruby/vendor_ruby/rack/urlmap.rb:50:in `each'
/usr/lib/ruby/vendor_ruby/rack/urlmap.rb:50:in `call'
/usr/lib/ruby/vendor_ruby/rack/builder.rb:138:in `call'
/usr/lib/ruby/vendor_ruby/rack/handler/webrick.rb:60:in `service'
/usr/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
/usr/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
/usr/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'