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() }