35 lines
1.1 KiB
Go
35 lines
1.1 KiB
Go
package infrastructure
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"oc-datacenter/conf"
|
|
)
|
|
|
|
type Infrastructure interface {
|
|
CreateNamespace(ctx context.Context, ns string) error
|
|
DeleteNamespace(ctx context.Context, ns string) error
|
|
GetToken(ctx context.Context, ns string, duration int) (string, error)
|
|
CreateServiceAccount(ctx context.Context, ns string) error
|
|
CreateRoleBinding(ctx context.Context, ns string, roleBinding string, role string) error
|
|
CreateRole(ctx context.Context, ns string, role string, groups [][]string, resources [][]string, verbs [][]string) error
|
|
GetTargets(ctx context.Context) ([]string,error)
|
|
CreateAdmiraltySource(executionId string) ([]byte, error)
|
|
CreateKubeconfigSecret(kubeconfig string, executionId string) ([]byte, error)
|
|
GetKubeconfigSecret(executionId string) ([]byte, error)
|
|
CreateAdmiraltyTarget(executionId string)([]byte,error)
|
|
}
|
|
|
|
var _service = map[string]func() (Infrastructure, error){
|
|
"kubernetes": NewKubernetesService,
|
|
}
|
|
|
|
func NewService() (Infrastructure, error) {
|
|
service, ok := _service[conf.GetConfig().Mode]
|
|
if !ok {
|
|
return nil, errors.New("service not found")
|
|
}
|
|
return service()
|
|
}
|
|
|