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
}