44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
package buildermgr
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/fission/fission/pkg/utils"
|
|
"github.com/fission/fission/pkg/utils/manager"
|
|
)
|
|
|
|
type builderEnvNamespaceAdder interface {
|
|
AddNamespace(ctx context.Context, ns string, mgr manager.Interface)
|
|
}
|
|
|
|
type builderPkgNamespaceAdder interface {
|
|
AddNamespace(ctx context.Context, ns string, mgr manager.Interface)
|
|
}
|
|
|
|
func NewNamespaceSubscriber(envw builderEnvNamespaceAdder, pkgw builderPkgNamespaceAdder, mgr manager.Interface) utils.NamespaceSubscriber {
|
|
return utils.NamespaceSubscriberFuncs{
|
|
SubscriberName: "buildermgr",
|
|
AddFunc: func(ctx context.Context, record utils.NamespaceRecord) error {
|
|
registerBuilderNamespace(ctx, record.Name, envw, pkgw, mgr)
|
|
return nil
|
|
},
|
|
ResyncFunc: func(ctx context.Context, record utils.NamespaceRecord) error {
|
|
registerBuilderNamespace(ctx, record.Name, envw, pkgw, mgr)
|
|
return nil
|
|
},
|
|
}
|
|
}
|
|
|
|
func registerBuilderNamespace(ctx context.Context, namespace string, envw builderEnvNamespaceAdder, pkgw builderPkgNamespaceAdder, mgr manager.Interface) {
|
|
if namespace == "" {
|
|
return
|
|
}
|
|
utils.DefaultNSResolver().AddNamespace(namespace)
|
|
if envw != nil {
|
|
envw.AddNamespace(ctx, namespace, mgr)
|
|
}
|
|
if pkgw != nil {
|
|
pkgw.AddNamespace(ctx, namespace, mgr)
|
|
}
|
|
}
|