Improve memory performance of clusterctl KRM
Switching components type from []byte to string significantly improves memory effiency of config function. Change-Id: I81ddf469bf5abd214ff3785915d82ab494af6268 Signed-off-by: Ruslan Aliev <raliev@mirantis.com>
This commit is contained in:
parent
4bce04c86b
commit
136aa06117
@ -41,7 +41,7 @@ const (
|
|||||||
type ClusterctlOptions struct {
|
type ClusterctlOptions struct {
|
||||||
CmdOptions []string `json:"cmd-options,omitempty"`
|
CmdOptions []string `json:"cmd-options,omitempty"`
|
||||||
Config []byte `json:"config,omitempty"`
|
Config []byte `json:"config,omitempty"`
|
||||||
Components map[string][]byte `json:"components,omitempty"`
|
Components map[string]string `json:"components,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run prepares config, repo tree and executes clusterctl with appropriate options
|
// Run prepares config, repo tree and executes clusterctl with appropriate options
|
||||||
@ -65,7 +65,7 @@ func (c *ClusterctlOptions) buildRepoTree() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err := ioutil.WriteFile(f, component, filePerm); err != nil {
|
if err := ioutil.WriteFile(f, []byte(component), filePerm); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -115,7 +115,7 @@ func DefaultClusterctl() *Clusterctl {
|
|||||||
type ClusterctlOptions struct {
|
type ClusterctlOptions struct {
|
||||||
CmdOptions []string `json:"cmd-options,omitempty"`
|
CmdOptions []string `json:"cmd-options,omitempty"`
|
||||||
Config []byte `json:"config,omitempty"`
|
Config []byte `json:"config,omitempty"`
|
||||||
Components map[string][]byte `json:"components,omitempty"`
|
Components map[string]string `json:"components,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetKubeconfigOptions carries all the options to retrieve kubeconfig from parent cluster
|
// GetKubeconfigOptions carries all the options to retrieve kubeconfig from parent cluster
|
||||||
|
@ -511,17 +511,9 @@ func (in *ClusterctlOptions) DeepCopyInto(out *ClusterctlOptions) {
|
|||||||
}
|
}
|
||||||
if in.Components != nil {
|
if in.Components != nil {
|
||||||
in, out := &in.Components, &out.Components
|
in, out := &in.Components, &out.Components
|
||||||
*out = make(map[string][]byte, len(*in))
|
*out = make(map[string]string, len(*in))
|
||||||
for key, val := range *in {
|
for key, val := range *in {
|
||||||
var outVal []byte
|
(*out)[key] = val
|
||||||
if val == nil {
|
|
||||||
(*out)[key] = nil
|
|
||||||
} else {
|
|
||||||
in, out := &val, &outVal
|
|
||||||
*out = make([]byte, len(*in))
|
|
||||||
copy(*out, *in)
|
|
||||||
}
|
|
||||||
(*out)[key] = outVal
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ func NewClusterctlExecutor(cfg ifc.ExecutorConfig) (ifc.Executor, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
cctlOpts := &airshipv1.ClusterctlOptions{
|
cctlOpts := &airshipv1.ClusterctlOptions{
|
||||||
Components: map[string][]byte{},
|
Components: map[string]string{},
|
||||||
}
|
}
|
||||||
if err := initRepoData(options, cctlOpts, cfg.TargetPath); err != nil {
|
if err := initRepoData(options, cctlOpts, cfg.TargetPath); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -134,7 +134,7 @@ func initRepoData(c *airshipv1.Clusterctl, o *airshipv1.ClusterctlOptions, targe
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
o.Components[filepath.Join(componentDir, "metadata.yaml")] = metadata
|
o.Components[filepath.Join(componentDir, "metadata.yaml")] = string(metadata)
|
||||||
|
|
||||||
filteredBundle, err := bundle.SelectBundle(document.NewDeployToK8sSelector())
|
filteredBundle, err := bundle.SelectBundle(document.NewDeployToK8sSelector())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -146,7 +146,7 @@ func initRepoData(c *airshipv1.Clusterctl, o *airshipv1.ClusterctlOptions, targe
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
prv.URL = filepath.Join(componentDir, fmt.Sprintf("%s-components.yaml", typeMap[prv.Type]))
|
prv.URL = filepath.Join(componentDir, fmt.Sprintf("%s-components.yaml", typeMap[prv.Type]))
|
||||||
o.Components[prv.URL] = buffer.Bytes()
|
o.Components[prv.URL] = string(buffer.Bytes())
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -330,7 +330,7 @@ func (c *ClusterctlExecutor) Render(w io.Writer, ro ifc.RenderOptions) error {
|
|||||||
dataAll := &bytes.Buffer{}
|
dataAll := &bytes.Buffer{}
|
||||||
for path, data := range c.cctlOpts.Components {
|
for path, data := range c.cctlOpts.Components {
|
||||||
if strings.Contains(path, "components.yaml") {
|
if strings.Contains(path, "components.yaml") {
|
||||||
dataAll.Write(append(data, []byte("\n---\n")...))
|
dataAll.Write(append([]byte(data), []byte("\n---\n")...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user