func NewDubboOperator()

in pkg/dubboctl/internal/operator/operator.go [96:193]


func NewDubboOperator(spec *v1alpha1.DubboConfigSpec, cli *kube.CtlClient) (*DubboOperator, error) {
	if spec == nil {
		return nil, errors.New("DubboConfigSpec is empty")
	}
	ns := spec.Namespace
	if ns == "" {
		ns = identifier.DubboSystemNamespace
	}
	// initialize components
	components := make(map[ComponentName]Component)
	if spec.IsAdminEnabled() {
		admin, err := NewAdminComponent(spec.Components.Admin,
			WithNamespace(ns),
			WithChartPath(spec.ChartPath),
		)
		if err != nil {
			return nil, fmt.Errorf("NewAdminComponent failed, err: %s", err)
		}
		components[Admin] = admin
	}
	if spec.IsGrafanaEnabled() {
		grafana, err := NewGrafanaComponent(spec.Components.Grafana,
			WithNamespace(ns),
			WithChartPath(spec.ChartPath),
			WithRepoURL(spec.ComponentsMeta.Grafana.RepoURL),
			WithVersion(spec.ComponentsMeta.Grafana.Version),
		)
		if err != nil {
			return nil, fmt.Errorf("NewGrafanaComponent failed, err: %s", err)
		}
		components[Grafana] = grafana
	}
	if spec.IsNacosEnabled() {
		nacos, err := NewNacosComponent(spec.Components.Nacos,
			WithNamespace(ns),
			WithChartPath(spec.ChartPath),
		)
		if err != nil {
			return nil, fmt.Errorf("NewNacosComponent failed, err: %s", err)
		}
		components[Nacos] = nacos
	}
	if spec.IsZookeeperEnabled() {
		zookeeper, err := NewZookeeperComponent(spec.Components.Zookeeper,
			WithNamespace(ns),
			WithChartPath(spec.ChartPath),
			WithRepoURL(spec.ComponentsMeta.Zookeeper.RepoURL),
			WithVersion(spec.ComponentsMeta.Zookeeper.Version),
		)
		if err != nil {
			return nil, fmt.Errorf("NewZookeeperComponent failed, err: %s", err)
		}
		components[Zookeeper] = zookeeper
	}
	if spec.IsPrometheusEnabled() {
		prometheus, err := NewPrometheusComponent(spec.Components.Prometheus,
			WithNamespace(ns),
			WithChartPath(spec.ChartPath),
			WithRepoURL(spec.ComponentsMeta.Prometheus.RepoURL),
			WithVersion(spec.ComponentsMeta.Prometheus.Version),
		)
		if err != nil {
			return nil, fmt.Errorf("NewPrometheusComponent failed, err: %s", err)
		}
		components[Prometheus] = prometheus
	}
	if spec.IsSkywalkingEnabled() {
		skywalking, err := NewSkywalkingComponent(spec.Components.Skywalking,
			WithNamespace(ns),
			WithChartPath(spec.ChartPath),
			WithRepoURL(spec.ComponentsMeta.Skywalking.RepoURL),
			WithVersion(spec.ComponentsMeta.Skywalking.Version),
		)
		if err != nil {
			return nil, fmt.Errorf("NewSkywalkingComponent failed, err: %s", err)
		}
		components[Skywalking] = skywalking
	}
	if spec.IsZipkinEnabled() {
		zipkin, err := NewZipkinComponent(spec.Components.Zipkin,
			WithNamespace(ns),
			WithChartPath(spec.ChartPath),
			WithRepoURL(spec.ComponentsMeta.Zipkin.RepoURL),
			WithVersion(spec.ComponentsMeta.Zipkin.Version),
		)
		if err != nil {
			return nil, fmt.Errorf("NewZipkinComponent failed, err: %s", err)
		}
		components[Zipkin] = zipkin
	}
	do := &DubboOperator{
		spec:       spec,
		components: components,
		kubeCli:    cli,
	}

	return do, nil
}