github.com/cilium/cilium@v1.16.2/pkg/client/config.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright Authors of Cilium
     3  
     4  package client
     5  
     6  import (
     7  	"github.com/cilium/cilium/api/v1/client/daemon"
     8  	"github.com/cilium/cilium/api/v1/models"
     9  	"github.com/cilium/cilium/pkg/api"
    10  )
    11  
    12  // ConfigGet returns a daemon configuration.
    13  func (c *Client) ConfigGet() (*models.DaemonConfiguration, error) {
    14  	resp, err := c.Daemon.GetConfig(nil)
    15  	if err != nil {
    16  		return nil, Hint(err)
    17  	}
    18  	return resp.Payload, nil
    19  }
    20  
    21  // ConfigPatch modifies the daemon configuration.
    22  func (c *Client) ConfigPatch(cfg models.DaemonConfigurationSpec) error {
    23  	fullCfg, err := c.ConfigGet()
    24  	if err != nil {
    25  		return err
    26  	}
    27  
    28  	for opt, value := range cfg.Options {
    29  		fullCfg.Spec.Options[opt] = value
    30  	}
    31  	if cfg.PolicyEnforcement != "" {
    32  		fullCfg.Spec.PolicyEnforcement = cfg.PolicyEnforcement
    33  	}
    34  
    35  	params := daemon.NewPatchConfigParams().WithConfiguration(fullCfg.Spec).WithTimeout(api.ClientTimeout)
    36  	_, err = c.Daemon.PatchConfig(params)
    37  	return Hint(err)
    38  }