func renderManifest()

in pkg/dubboctl/internal/operator/component.go [524:567]


func renderManifest(spec any, renderer render.Renderer, addOn bool, name ComponentName, namespace string) (string, error) {
	var valsBytes []byte
	var valsYaml string
	var err error
	if addOn {
		// see /deploy/addons
		// values-*.yaml is the base yaml for addon component
		valsYaml, err = manifest.ReadAndOverlayYamls([]string{
			path.Join(identifier.Addons, "values-"+string(name)+".yaml"),
		})
		if err != nil {
			return "", err
		}
	}

	// do not use spec != nil cause spec's type is not nil
	if !util.IsValueNil(spec) {
		valsBytes, err = yaml.Marshal(spec)
		if err != nil {
			return "", err
		}
		valsYaml, err = util.OverlayYAML(valsYaml, string(valsBytes))
		if err != nil {
			return "", err
		}
	}
	final, err := renderer.RenderManifest(valsYaml)
	if err != nil {
		return "", err
	}
	// grafana needs to add dashboard json file as configmap
	if name == Grafana {
		final, err = addDashboards(final, namespace)
		if err != nil {
			return "", err
		}
	}
	// manifest rendered by some charts may lack namespace, we set it there
	final, err = setNamespace(final, namespace)
	if err != nil {
		return "", err
	}
	return final, nil
}