func NewService()

in pkg/service/platform/platform.go [57:92]


func NewService(platformType string, scheme *runtime.Scheme) (PlatformService, error) {
	config := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
		clientcmd.NewDefaultClientConfigLoadingRules(),
		&clientcmd.ConfigOverrides{},
	)

	restConfig, err := config.ClientConfig()
	if err != nil {
		return nil, errors.Wrap(helpers.LogErrorAndReturn(err), "Failed to get rest configs for platform")
	}

	platformType = strings.ToLower(platformType)

	switch platformType {
	case OpenShift:
		platform := &openshift.OpenshiftService{}
		if err = platform.Init(restConfig, scheme); err != nil {
			return nil, errors.Wrap(helpers.LogErrorAndReturn(err), "Failed to init for Openshift platform")
		}

		return platform, nil
	case Kubernetes:
		platform := &k8s.K8SService{}

		err = platform.Init(restConfig, scheme)
		if err != nil {
			return nil, errors.Wrap(err, "Failed to init for Kubernetes platform")
		}

		return platform, nil
	case Test:
		return nil, nil // for tests only. remove it when will fix platform.Init()
	default:
		return nil, fmt.Errorf("unknown platform type '%s'", platformType)
	}
}