[ovs-dev] [PATCH 1/3] ovs-ctl: fallback to "uname -n" for fetching hostname

Ben Pfaff blp at ovn.org
Mon Dec 3 21:09:45 UTC 2018


On Sun, Dec 02, 2018 at 08:51:09PM +0800, Yousong Zhou wrote:
> On Sun, 2 Dec 2018 at 02:05, Aaron Conole <aconole at redhat.com> wrote:
> >
> > Yousong Zhou <yszhou4tech at gmail.com> writes:
> >
> > > On Fri, 30 Nov 2018 at 23:23, Aaron Conole <aconole at redhat.com> wrote:
> > >>
> > >> Yousong Zhou <yszhou4tech at gmail.com> writes:
> > >>
> > >> > From: Yousong Zhou <yszhou4tech at gmail.com>
> > >> >
> > >> > The command "hostname" is not available in OpenWrt by default.  Strace
> > >> > result of hostname-3.13 on centos7 shows that bare "hostname" command
> > >> > calls uname() to fetch node name.
> > >> >
> > >> > Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
> > >> > ---
> > >> >  utilities/ovs-ctl.in | 2 +-
> > >> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >> >
> > >> > diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in
> > >> > index e42f0f1e6..7f2b17b06 100644
> > >> > --- a/utilities/ovs-ctl.in
> > >> > +++ b/utilities/ovs-ctl.in
> > >> > @@ -40,7 +40,7 @@ set_hostname () {
> > >> >      # call this only after ovs-vswitchd is running.
> > >> >      hn="$(hostname -f)"
> > >> >      if test X$FULL_HOSTNAME = Xno; then
> > >> > -        hn="$(hostname)"
> > >> > +        hn="$(uname -n)"
> > >> >      fi
> > >>
> > >> Should we also modify the call to 'hostname' above, too?  ie:
> > >>
> > >> -     hn="$(hostname -f)"
> > >> +     hn="$(uname -n)"
> > >>
> > >> I don't know since uname -n is always the same as hostname -f,
> > >> iirc.  That makes the option (FULL_HOSTNAME=no) look strange.
> > >>
> > >> Actually, that makes me think that the hn="$(hostname)" might need to
> > >> have been 'hostname -s' - but I'm not sure.
> > >
> > > On my centos7 machine, `hostname -f` will try to form and verify fqdn
> > > by reading "domain" from /etc/resolv.conf and doing dns query.  I
> > > think the output of "uname -n" is same as with "sysctl -n
> > > kernel.hostname"
> >
> > Still, I think the hostname call above should be reworked.  Maybe
> > something like:
> >
> >   hn="$(uname -n)"
> >   if test X$FULL_HOSTNAME = Xyes; then
> >       hn=$(hostname -f)
> >   fi
> >
> > Just a thought.  If hostname doesn't exist, then you're going to always
> > invoke it as-is.  Maybe I'm misunderstanding something, though.  WDYT?
> 
> maybe at the beginning when this code was written the intent of
> "hostname -f" was to make the name as "full" as possible so that it
> can be uniquely identified in a larger scale from a different domain,
> or from "external".  If that is the case, then "uname -n" should only
> be used as a fallback in the heristics.

I think that was the intent.

This might be a reasonable way to do it, which would deal with hostname
not being available:

if X$FULL_HOSTNAME = Xyes; then
    hn=$(hostname -f) || hn=$(uname -n)
else
    hn=$(uname -n)
fi


More information about the dev mailing list