Bug 1397702

Summary: ISC DHCP known reservations/leases not updated over NFS
Product: Red Hat Satellite Reporter: Lukas Zapletal <lzap>
Component: DHCP & DNSAssignee: Dmitri Dolguikh <dmitri>
Status: CLOSED ERRATA QA Contact: Sanket Jagtap <sjagtap>
Severity: high Docs Contact:
Priority: high    
Version: 6.3.0CC: adahms, bbuckingham, bkearney, ddolguik, dmitri, egolov, ehelms, inecas, jcallaha, ktordeur, ohadlevy, oshtaier, sjagtap, swadeley
Target Milestone: UnspecifiedKeywords: Triaged
Target Release: Unused   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: rubygem-smart_proxy_dhcp_remote_isc-0.0.2 Doc Type: Enhancement
Doc Text:
Provide a note in https://access.redhat.com/documentation/en/red-hat-satellite/6.2/paged/installation-guide/chapter-5-configuring-external-services to turn off inotify system for DHCP plugin because this will not work via NFS.
Story Points: ---
Clone Of:
: 1401412 (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:
Embargoed:

Description Lukas Zapletal 2016-11-23 08:44:09 UTC
After upgrading to 1.13.1 the DHCP behavior is not consistent:

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.

This was reported upstream, creating a 6.3 ticket as this is regression in Satellite 6:

https://access.redhat.com/documentation/en/red-hat-satellite/6.2/paged/installation-guide/chapter-5-configuring-external-services

Comment 2 Lukas Zapletal 2016-12-01 11:02:48 UTC
I reported this based on upstream report: http://projects.theforeman.org/issues/17301#note-12

This is a regression introduced by inotify thing in DHCP module, I think the inotify should have been configurable from the day one. User can choose if they want better performance or HA (which can be slow over NFS).

How we should handle this, Ohad?

Comment 3 Ohad Levy 2016-12-01 11:14:05 UTC
As for now, the workaround for HA (with Satellite version 6.3) should entail using a block volume (such as iscsi) instead with only one master in RW mode.

Comment 4 Stephen Wadeley 2016-12-05 07:50:28 UTC
I will clone for the Installation Guide (the Doc Text field in Engineering bugs is for use in Errata and Release Notes, the guides need their own bug).

Comment 5 Lucie Jirakova 2016-12-09 11:38:07 UTC
(In reply to Stephen Wadeley from comment #4)
> I will clone for the Installation Guide (the Doc Text field in Engineering
> bugs is for use in Errata and Release Notes, the guides need their own bug).

The documentation update has been made within bug 1378551 as per comment https://bugzilla.redhat.com/show_bug.cgi?id=1378551#c23.

Comment 6 Dmitri Dolguikh 2017-05-23 10:51:40 UTC
There's now a dedicated module for handling remote dhcpd setups: https://github.com/theforeman/smart_proxy_dhcp_remote_isc. It's been packaged and is available from 1.15 and nightly foreman yum repositories.

Comment 8 Dmitri Dolguikh 2017-06-02 08:38:47 UTC
Correct, that's the fix to use in downstream.

Comment 11 Dmitri Dolguikh 2017-06-06 13:33:37 UTC
AFAIK the only thing that is missing is support for dhcp_remote_isc provider in the installer.

Comment 13 Dmitri Dolguikh 2017-06-29 10:51:03 UTC
Turns out I added a puppet module for the installer when I created the provider: https://github.com/theforeman/puppet-foreman_proxy/blob/master/manifests/plugin/dhcp/remote_isc.pp

Comment 17 Ivan Necas 2017-10-30 11:45:06 UTC
I believe all the required work landed upstream. We need just pull the packages downstream. Moving to MODIFIED.

Comment 18 Evgeni Golov 2017-11-14 10:36:55 UTC
NI on Dmitri as Ivan is on PTO.

By "the packages" Ivan means "rubygem-smart_proxy_dhcp_remote_isc", that's the only package needed, right?

Comment 19 Dmitri Dolguikh 2017-11-14 18:49:15 UTC
Ivan probably means that rubygem-smart_proxy_dhcp_remote_isc and corresponding changes to the proxy puppet module are available upstream.

Comment 20 Evgeni Golov 2017-11-15 08:58:08 UTC
Ok, we already have the needed installer changes downstream, so let's pull in rubygem-smart_proxy_dhcp_remote_isc and see how it goes. Thanks!

Comment 22 Dmitri Dolguikh 2017-12-07 18:26:16 UTC
Please refer to https://bugzilla.redhat.com/show_bug.cgi?id=1489364 for dhcp module documentation changes.

Comment 24 Ivan Necas 2018-01-18 11:23:06 UTC
FYI: I've found potential issues with packaging in https://bugzilla.redhat.com/show_bug.cgi?id=1535972 + some additional issues that need some additional debugging in https://bugzilla.redhat.com/show_bug.cgi?id=1489364#c21

Comment 27 Sanket Jagtap 2018-02-08 05:24:13 UTC
Build: Satellite 6.3.0 snap35

Satellite is configured with external DHCP and remote_isc as provider.

A host is provisioned through satellite.  
[root@localhost dhcpd]# cat dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.2.5

server-duid "\000\001\000\001\"\014\221O\000\032J>\246P";

host cindy-beiser.domain {
  dynamic;
  hardware ethernet 00:1a:4a:3e:a6:51;
  fixed-address 10.AA.AA.236;
        supersede server.filename = "pxelinux.0";
        supersede server.next-server = 0a:08:72:01;
        supersede host-name = "cindy-beiser.domain";
}

Tried to update the Host inerface ip from UI, I got a conflict wizard , but on clicking override , I was able to update the Ip of the Host.

[root@localhost dhcpd]# cat dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.2.5

server-duid "\000\001\000\001\"\014\221O\000\032J>\246P";

host cindy-beiser.domain {
  dynamic;
  hardware ethernet 00:1a:4a:3e:a6:51;
  fixed-address 10.AA.AA.237;
        supersede server.filename = "pxelinux.0";
        supersede server.next-server = 0a:08:72:01;
        supersede host-name = "cindy-beiser.domain";
}

On Deleting the said host, the dhcpd.leases file is update with a new record for host as deleted , but I can still see the old record , Is this intended ?
cat dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.2.5

server-duid "\000\001\000\001\"\014\221O\000\032J>\246P";

host cindy-beiser.domain {
  dynamic;
  hardware ethernet 00:1a:4a:3e:a6:51;
  fixed-address 10.AA.AA.237;
        supersede server.filename = "pxelinux.0";
        supersede server.next-server = 0a:08:72:01;
        supersede host-name = "cindy-beiser.domain";
}
host cindy-beiser.domain {
  dynamic;
  deleted;
}

Comment 28 Dmitri Dolguikh 2018-02-08 18:37:42 UTC
Host record is only marked as "deleted" on delete, and will be removed from the leases file next time dhcpd persists its in-memory database to disk.

Comment 29 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