diff --git a/go.mod b/go.mod index 7d507e3..4bdfeea 100644 --- a/go.mod +++ b/go.mod @@ -8,8 +8,8 @@ require ( github.com/edwarnicke/grpcfd v1.1.2 github.com/kelseyhightower/envconfig v1.4.0 github.com/networkservicemesh/api v1.11.2 - github.com/networkservicemesh/sdk v1.11.2 - github.com/networkservicemesh/sdk-vpp v0.0.0-20240130163336-17d8db6d4c55 + github.com/networkservicemesh/sdk v0.5.1-0.20240117140958-90f0c79a1560 + github.com/networkservicemesh/sdk-vpp v0.0.0-20240117141838-8364b73cafbd github.com/networkservicemesh/vpphelper v0.0.0-20240115135903-e2b961f768b6 github.com/pkg/errors v0.9.1 github.com/sirupsen/logrus v1.9.3 @@ -44,8 +44,8 @@ require ( github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/miekg/dns v1.1.50 // indirect - github.com/networkservicemesh/govpp v0.0.0-20240130152300-43babf54855b // indirect - github.com/networkservicemesh/sdk-kernel v1.11.2 // indirect + github.com/networkservicemesh/govpp v0.0.0-20240115135805-9d7177f85ad9 // indirect + github.com/networkservicemesh/sdk-kernel v0.0.0-20240117141240-f32d767554a6 // indirect github.com/open-policy-agent/opa v0.44.0 // indirect github.com/prometheus/client_golang v1.17.0 // indirect github.com/prometheus/client_model v0.5.0 // indirect diff --git a/go.sum b/go.sum index ef3ea0b..a3d4e22 100644 --- a/go.sum +++ b/go.sum @@ -129,14 +129,14 @@ github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7Xn github.com/mikioh/ipaddr v0.0.0-20190404000644-d465c8ab6721/go.mod h1:Ickgr2WtCLZ2MDGd4Gr0geeCH5HybhRJbonOgQpvSxc= github.com/networkservicemesh/api v1.11.2 h1:91KPORtfbxuXf67eNZiP2LsNfbDFUa+QckWhSiMDhB8= github.com/networkservicemesh/api v1.11.2/go.mod h1:E2yBac48+mMkMh6ODnsNyah4EE6rI08SMR9n+86Emxs= -github.com/networkservicemesh/govpp v0.0.0-20240130152300-43babf54855b h1:Pr84jNQUYL48L5Ek8xjLKaIuSnwd5fWiYBlNU03GjhM= -github.com/networkservicemesh/govpp v0.0.0-20240130152300-43babf54855b/go.mod h1:CwikXQ3p/y3j6+HbQQWXKv0f4LPyUd2vKTiViG93qWA= -github.com/networkservicemesh/sdk v1.11.2 h1:HHhA6vjbyVEDffcx2vUuc1/kHqBuTmTJrxbadul9mak= -github.com/networkservicemesh/sdk v1.11.2/go.mod h1:9B6CU54HGgkBQ8d1rQH18HzAMr7kGWNMoYdVARYAkGQ= -github.com/networkservicemesh/sdk-kernel v1.11.2 h1:txgWevJoaBInZC5cYGZVSpltoBrd2wswsidi7h6QDAM= -github.com/networkservicemesh/sdk-kernel v1.11.2/go.mod h1:a1AP3RteVHTQ/+/wSDrzsiEkWecveL8BJBrHMYUozbo= -github.com/networkservicemesh/sdk-vpp v0.0.0-20240130163336-17d8db6d4c55 h1:LSifmTtLFaCP/ex7Dm4qbD5AtyVse9SnFH0RAA4siJc= -github.com/networkservicemesh/sdk-vpp v0.0.0-20240130163336-17d8db6d4c55/go.mod h1:7zuJOXNxIazIHT8nsxXAUytUNEjT/0U+deAH4KL+Rfw= +github.com/networkservicemesh/govpp v0.0.0-20240115135805-9d7177f85ad9 h1:4zO/QJxQDvo/YcRWP8D4XGU8vQCG/Nq8SNlGpBk+4/M= +github.com/networkservicemesh/govpp v0.0.0-20240115135805-9d7177f85ad9/go.mod h1:CwikXQ3p/y3j6+HbQQWXKv0f4LPyUd2vKTiViG93qWA= +github.com/networkservicemesh/sdk v0.5.1-0.20240117140958-90f0c79a1560 h1:8Hl4Rsk/So63EqPs8mY3BmeakRDrPKWHQWH+fWPhPl8= +github.com/networkservicemesh/sdk v0.5.1-0.20240117140958-90f0c79a1560/go.mod h1:rw2ug2AngItEh13ectyCGrxRhGTt/yvJt2SrysoU/Dc= +github.com/networkservicemesh/sdk-kernel v0.0.0-20240117141240-f32d767554a6 h1:LGcwNJs4F47Tv3xYc77ku/rFl7P1mN7DisaS4g2z7zI= +github.com/networkservicemesh/sdk-kernel v0.0.0-20240117141240-f32d767554a6/go.mod h1:gnd8z3H/NxyZvkfCAFAYhUX/wo+rMkJsf/DgQJ+XiGs= +github.com/networkservicemesh/sdk-vpp v0.0.0-20240117141838-8364b73cafbd h1:r7a0s2ublHmLGgf5l6v216nM6Sm1n1K0fJs20h3MK1I= +github.com/networkservicemesh/sdk-vpp v0.0.0-20240117141838-8364b73cafbd/go.mod h1:9CYD/GYhLux3/c2Zt7OiIzdd8pYpbCScSi+S6WRxH/4= github.com/networkservicemesh/vpphelper v0.0.0-20240115135903-e2b961f768b6 h1:o+enN5yCikNXZN+hO+JjE+aLxBWq9+GMVF9GSQtpwMI= github.com/networkservicemesh/vpphelper v0.0.0-20240115135903-e2b961f768b6/go.mod h1:n6+8PnoDvWj6WMryfU3J8HOCusgysFjQ0kGLfrcsDEM= github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8= diff --git a/main.go b/main.go index 787b21a..079038d 100644 --- a/main.go +++ b/main.go @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Cisco and/or its affiliates. +// Copyright (c) 2022-2024 Cisco and/or its affiliates. // // SPDX-License-Identifier: Apache-2.0 // @@ -108,6 +108,7 @@ type Config struct { RequestLabels map[string]string `default:"" desc:"Adds labels to request on requesting vl3 nse" split_words:"true"` IdleTimeout time.Duration `default:"0" desc:"timeout for automatic shutdown when there were no requests for specified time. Set 0 to disable auto-shutdown." split_words:"true"` RegisterService bool `default:"true" desc:"if true then registers network service on startup" split_words:"true"` + UnregisterItself bool `default:"true" desc:"if true then NSE unregister itself when it completes working" split_words:"true"` OpenTelemetryEndpoint string `default:"otel-collector.observability.svc.cluster.local:4317" desc:"OpenTelemetry Collector Endpoint"` MetricsExportInterval time.Duration `default:"10s" desc:"interval between mertics exports" split_words:"true"` PrefixServerURL url.URL `default:"vl3-ipam:5006" desc:"URL to VL3 IPAM server" split_words:"true"` @@ -469,7 +470,7 @@ func main() { requestCtx, cancelRequest = context.WithTimeout(signalCtx, config.RequestTimeout) defer cancelRequest() - conn, err := vl3Client.Request(requestCtx, request) + conn, err = vl3Client.Request(requestCtx, request) if err != nil { log.FromContext(ctx).Errorf("request has failed: %v", err.Error()) continue @@ -482,6 +483,15 @@ func main() { }() } + if config.UnregisterItself { + defer func() { + _, err = nseRegistryClient.Unregister(context.Background(), nseRegistration) + if err != nil { + log.FromContext(ctx).Errorf("nse failed to unregister itself on termination: %s", err.Error()) + } + }() + } + // wait for server to exit <-signalCtx.Done() closeSubscribedChannels()