package infrastructure import ( "context" "errors" "oc-datacenter/conf" v1 "k8s.io/api/core/v1" ) type Infrastructure interface { CreateNamespace(ctx context.Context, ns string) error DeleteNamespace(ctx context.Context, ns string) error GenerateToken(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(context context.Context,executionId string) ([]byte, error) CreateKubeconfigSecret(context context.Context,kubeconfig string, executionId string) ([]byte, error) GetKubeconfigSecret(context context.Context,executionId string) ([]byte, error) CreateAdmiraltyTarget(context context.Context,executionId string)([]byte,error) GetOneNode(context context.Context,executionID string) (*v1.Node, 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() }