Skip to content

Commit

Permalink
Extend the generic routeagent handler to the other drivers
Browse files Browse the repository at this point in the history
This will allow for all those network plugins to be recognized with this same
route agent driver, and at the same time we could make specific modification
if this was ever required.

Signed-off-by: Miguel Angel Ajo <majopela@redhat.com>
  • Loading branch information
mangelajo committed Dec 1, 2020
1 parent 2c26a9f commit 25d1d4f
Show file tree
Hide file tree
Showing 8 changed files with 34 additions and 16 deletions.
2 changes: 1 addition & 1 deletion pkg/event/handler.go
Expand Up @@ -17,7 +17,7 @@ type Handler interface {
GetName() string

// GetNetworkPlugin returns the kubernetes network plugin that this handler supports.
GetNetworkPlugin() string
GetNetworkPlugins() []string

// Stop is called once during shutdown to let the handler perform any cleanup. The uninstall flag indicates
// whether or not Submariner is being completely uninstalled from the system.
Expand Down
4 changes: 2 additions & 2 deletions pkg/event/logger/handler.go
Expand Up @@ -21,8 +21,8 @@ func (l *Handler) GetName() string {
return "logger"
}

func (l *Handler) GetNetworkPlugin() string {
return event.AnyNetworkPlugin
func (l *Handler) GetNetworkPlugins() []string {
return []string{event.AnyNetworkPlugin}
}

func (l *Handler) TransitionToNonGateway() error {
Expand Down
9 changes: 7 additions & 2 deletions pkg/event/registry.go
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/submariner-io/admiral/pkg/log"

submV1 "github.com/submariner-io/submariner/pkg/apis/submariner.io/v1"
"github.com/submariner-io/submariner/pkg/util"
)

type Registry struct {
Expand All @@ -34,9 +35,13 @@ func (er *Registry) GetName() string {
}

func (er *Registry) addHandler(eventHandler Handler) error {
evNetworkPlugin := eventHandler.GetNetworkPlugin()
evNetworkPlugins := util.NewStringSet()

if evNetworkPlugin == AnyNetworkPlugin || evNetworkPlugin == er.networkPlugin {
for _, np := range eventHandler.GetNetworkPlugins() {
evNetworkPlugins.Add(np)
}

if evNetworkPlugins.Contains(AnyNetworkPlugin) || evNetworkPlugins.Contains(er.networkPlugin) {
if err := eventHandler.Init(); err != nil {
return errors.Wrapf(err, "Event handler %q failed to initialize", eventHandler.GetName())
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/event/testing/testing.go
Expand Up @@ -52,8 +52,8 @@ func (t *TestHandler) GetName() string {
return t.Name
}

func (t *TestHandler) GetNetworkPlugin() string {
return t.NetworkPlugin
func (t *TestHandler) GetNetworkPlugins() []string {
return []string{t.NetworkPlugin}
}

const EvTransitionToNonGateway = "TransitionToNonGateway"
Expand Down
6 changes: 3 additions & 3 deletions pkg/networkplugin-syncer/handlers/ovn/handler.go
Expand Up @@ -31,11 +31,11 @@ func (ovn *SyncHandler) GetName() string {
return "ovn-sync-handler"
}

func (ovn *SyncHandler) GetNetworkPlugin() string {
return "OVNKubernetes"
func (ovn *SyncHandler) GetNetworkPlugins() []string {
return []string{"OVNKubernetes"}
}

func NewSyncHandler(k8sClientset clientset.Interface) *SyncHandler {
func NewSyncHandler(k8sClientset clientset.Interface) event.Handler {
return &SyncHandler{
remoteEndpoints: make(map[string]*submV1.Endpoint),
k8sClientset: k8sClientset,
Expand Down
8 changes: 7 additions & 1 deletion pkg/networkplugin-syncer/main.go
Expand Up @@ -30,7 +30,13 @@ func main() {
// set up signals so we handle the first shutdown signal gracefully
stopCh := signals.SetupSignalHandler()

registry := event.NewRegistry("networkplugin-syncer", os.Getenv("NETWORK_PLUGIN"))
networkPlugin := os.Getenv("SUBMARINER_NETWORKPLUGIN")

if networkPlugin == "" {
networkPlugin = "generic"
}

registry := event.NewRegistry("networkplugin-syncer", networkPlugin)
if err := registry.AddHandlers(logger.NewHandler(), ovn.NewSyncHandler(getK8sClient())); err != nil {
klog.Fatalf("Error registering the handlers: %s", err.Error())
}
Expand Down
Expand Up @@ -60,8 +60,8 @@ func (kp *SyncHandler) GetName() string {
return "kubeproxy-iptables-handler"
}

func (kp *SyncHandler) GetNetworkPlugin() string {
return event.AnyNetworkPlugin
func (kp *SyncHandler) GetNetworkPlugins() []string {
return []string{"generic", "canal-flannel", "weave-net", "OpenShiftSDN"}
}

func (kp *SyncHandler) Init() error {
Expand Down
13 changes: 10 additions & 3 deletions pkg/routeagent_driver/main.go
Expand Up @@ -60,9 +60,16 @@ func main() {
klog.Errorf("Error while annotating the node: %s", err.Error())
}

registry := event.NewRegistry("routeagent_driver", os.Getenv("NETWORK_PLUGIN"))
if err := registry.AddHandlers(logger.NewHandler(),
kp_iptables.NewSyncHandler(env.ClusterCidr, env.ServiceCidr, smClientset)); err != nil {
np := os.Getenv("SUBMARINER_NETWORKPLUGIN")
if np == "" {
np = "generic"
}

registry := event.NewRegistry("routeagent_driver", np)
if err := registry.AddHandlers(
logger.NewHandler(),
kp_iptables.NewSyncHandler(env.ClusterCidr, env.ServiceCidr, smClientset),
); err != nil {
klog.Fatalf("Error registering the handlers: %s", err.Error())
}

Expand Down

0 comments on commit 25d1d4f

Please sign in to comment.