From 090878c1577f5a4de2f798967fabc8888364b10a Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Thu, 5 Jan 2017 17:38:05 +0000 Subject: [PATCH] Implement GetCapabilities on IPAM interface to eliminate warning message --- plugin/ipam/driver.go | 5 +++++ plugin/skel/listener.go | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/plugin/ipam/driver.go b/plugin/ipam/driver.go index 417e468f..78a650e7 100644 --- a/plugin/ipam/driver.go +++ b/plugin/ipam/driver.go @@ -19,6 +19,11 @@ func NewIpam(weave *api.Client) *Ipam { return &Ipam{weave: weave} } +func (i *Ipam) GetCapabilities() (RequiresMACAddress bool, RequiresRequestReplay bool, err error) { + i.logReq("GetCapabilities") + return false, false, nil +} + func (i *Ipam) GetDefaultAddressSpaces() (string, string, error) { i.logReq("GetDefaultAddressSpaces") return "weavelocal", "weaveglobal", nil diff --git a/plugin/skel/listener.go b/plugin/skel/listener.go index a253ac94..1ad98ba8 100644 --- a/plugin/skel/listener.go +++ b/plugin/skel/listener.go @@ -33,6 +33,10 @@ type Driver interface { DiscoverDelete(delete *api.DiscoveryNotification) error } +type IpamCapability interface { + GetCapabilities() (RequiresMACAddress bool, RequiresRequestReplay bool, err error) +} + type listener struct { d Driver i ipamapi.Ipam @@ -65,6 +69,7 @@ func Listen(socket net.Listener, driver Driver, ipamDriver ipamapi.Ipam) error { } if ipamDriver != nil { + handleMethod(ipamReceiver, "GetCapabilities", listener.getIpamCapabilities) handleMethod(ipamReceiver, "GetDefaultAddressSpaces", listener.getDefaultAddressSpaces) handleMethod(ipamReceiver, "RequestPool", listener.requestPool) handleMethod(ipamReceiver, "ReleasePool", listener.releasePool) @@ -216,6 +221,20 @@ func (listener *listener) discoverDelete(w http.ResponseWriter, r *http.Request) // === +func (listener *listener) getIpamCapabilities(w http.ResponseWriter, r *http.Request) { + c, ok := listener.i.(IpamCapability) + if !ok { + http.NotFound(w, r) + return + } + requiresMACAddress, requiresRequestReplay, err := c.GetCapabilities() + response := &ipamapi.Capability{ + RequiresMACAddress: requiresMACAddress, + RequiresRequestReplay: requiresRequestReplay, + } + objectOrErrorResponse(w, response, err) +} + func (listener *listener) getDefaultAddressSpaces(w http.ResponseWriter, r *http.Request) { local, global, err := listener.i.GetDefaultAddressSpaces() response := &iapi.GetAddressSpacesResponse{