This is an automated email from the ASF dual-hosted git repository.
zhongxjian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-kubernetes.git
The following commit(s) were added to refs/heads/master by this push:
new 19d054a2 [operator] add yaml split logic
19d054a2 is described below
commit 19d054a23217f9d1e04250e993a4445ea55288db
Author: mfordjody <[email protected]>
AuthorDate: Thu Dec 12 17:34:38 2024 +0800
[operator] add yaml split logic
---
operator/cmd/cluster/install.go | 1 +
operator/manifest/manifest.go | 63 ++++++++++++++++++++++++++++++++++++
operator/manifest/render/manifest.go | 9 ++++++
operator/pkg/yml/parts.go | 33 +++++++++++++++++++
4 files changed, 106 insertions(+)
diff --git a/operator/cmd/cluster/install.go b/operator/cmd/cluster/install.go
index 383c328c..0efeb988 100644
--- a/operator/cmd/cluster/install.go
+++ b/operator/cmd/cluster/install.go
@@ -53,5 +53,6 @@ func InstallCmdWithArgs(ctx cli.Context, rootArgs *RootArgs,
iArgs *installArgs)
}
func install(kubeClient kube.CLIClient, rootArgs *RootArgs, iArgs
*installArgs) error {
+
return nil
}
diff --git a/operator/manifest/manifest.go b/operator/manifest/manifest.go
new file mode 100644
index 00000000..8d3fde4b
--- /dev/null
+++ b/operator/manifest/manifest.go
@@ -0,0 +1,63 @@
+package manifest
+
+import (
+ "encoding/json"
+ "github.com/apache/dubbo-kubernetes/operator/pkg/component"
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+ "sigs.k8s.io/yaml"
+)
+
+type Manifest struct {
+ *unstructured.Unstructured
+ Content string
+}
+
+type ManifestSet struct {
+ Comps component.Name
+ Manifests []Manifest
+}
+
+func FromJSON(j []byte) (Manifest, error) {
+ us := &unstructured.Unstructured{}
+ if err := json.Unmarshal(j, us); err != nil {
+ return Manifest{}, err
+ }
+ yml, err := yaml.Marshal(us)
+ if err != nil {
+ return Manifest{}, err
+ }
+ return Manifest{
+ Unstructured: us,
+ Content: string(yml),
+ }, nil
+}
+
+func FromYAML(y []byte) (Manifest, error) {
+ us := &unstructured.Unstructured{}
+ if err := yaml.Unmarshal(y, us); err != nil {
+ return Manifest{}, err
+ }
+ return Manifest{
+ Unstructured: us,
+ Content: string(y),
+ }, nil
+}
+
+func Parse(output []string) ([]Manifest, error) {
+ result := make([]Manifest, 0, len(output))
+ for _, m := range output {
+ mf, err := FromYAML([]byte(m))
+ if err != nil {
+ return nil, err
+ }
+ if mf.GetObjectKind().GroupVersionKind().Kind == "" {
+ continue
+ }
+ result = append(result, mf)
+ }
+ return result, nil
+}
+
+func ParseMultiple(output string) ([]Manifest, error) {
+ return Parse()
+}
diff --git a/operator/manifest/render/manifest.go
b/operator/manifest/render/manifest.go
new file mode 100644
index 00000000..f4f337cb
--- /dev/null
+++ b/operator/manifest/render/manifest.go
@@ -0,0 +1,9 @@
+package render
+
+import (
+ "github.com/apache/dubbo-kubernetes/operator/pkg/util/clog"
+)
+
+func () {
+
+}
\ No newline at end of file
diff --git a/operator/pkg/yml/parts.go b/operator/pkg/yml/parts.go
new file mode 100644
index 00000000..d3545fc4
--- /dev/null
+++ b/operator/pkg/yml/parts.go
@@ -0,0 +1,33 @@
+package yml
+
+import (
+ "bufio"
+ "strings"
+)
+
+func SplitString(yamlText string) []string {
+ out := make([]string, 0)
+ scanner := bufio.NewScanner(strings.NewReader(yamlText))
+ parts := []string{}
+ active := strings.Builder{}
+ for scanner.Scan() {
+ line := scanner.Text()
+ if strings.HasPrefix(line, "---") {
+ parts = append(parts, active.String())
+ active = strings.Builder{}
+ } else {
+ active.WriteString(line)
+ active.WriteString("\n")
+ }
+ }
+ if active.Len() > 0 {
+ parts = append(parts, active.String())
+ }
+ for _, part := range parts {
+ part := strings.TrimSpace(part)
+ if len(part) > 0 {
+ out = append(out, part)
+ }
+ }
+ return out
+}