If it's a confd client querying ssconf might not work, as it may be running outside the cluster :(
Thanks, Guido On Tue, May 14, 2013 at 12:13 PM, Michele Tartara <[email protected]>wrote: > The Haskell ConfD client was assuming internet addresses to be IPv4. This > patch modifies the client so that it behaves like the ConfD server, > querying > ssconf to find out what kind of protocol it should use. > > Signed-off-by: Michele Tartara <[email protected]> > --- > src/Ganeti/Confd/Client.hs | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/src/Ganeti/Confd/Client.hs b/src/Ganeti/Confd/Client.hs > index 78a7820..f757096 100644 > --- a/src/Ganeti/Confd/Client.hs > +++ b/src/Ganeti/Confd/Client.hs > @@ -41,6 +41,7 @@ import Ganeti.Confd.Utils > import qualified Ganeti.Constants as C > import Ganeti.Hash > import Ganeti.Ssconf > +import Ganeti.Utils > > -- | Builds a properly initialized ConfdClient > getConfdClient :: IO ConfdClient > @@ -110,7 +111,9 @@ queryOneServer semaphore answer crType cQuery hmac > (host, port) = do > let signedMsg = > signMessage hmac timestamp (J.encodeStrict request) > completeMsg = C.confdMagicFourcc ++ J.encodeStrict signedMsg > - s <- S.socket S.AF_INET S.Datagram S.defaultProtocol > + ipFam <- getPrimaryIPFamily Nothing > + af_family <- exitIfBad "Unable to obtain the IP Family from Ssconf" > ipFam > + s <- S.socket af_family S.Datagram S.defaultProtocol > hostAddr <- S.inet_addr host > _ <- S.sendTo s completeMsg $ S.SockAddrInet port hostAddr > replyMsg <- S.recv s C.maxUdpDataSize > -- > 1.8.2.1 > > -- Guido Trotter Ganeti Engineering Google Germany GmbH Dienerstr. 12, 80331, München Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Geschäftsführer: Graham Law, Katherine Stephens Steuernummer: 48/725/00206 Umsatzsteueridentifikationsnummer: DE813741370
