github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/operator/boom/application/applications/reconciling/config/config.go (about)

     1  package config
     2  
     3  import (
     4  	"github.com/caos/orbos/internal/operator/boom/api/latest/reconciling"
     5  	"github.com/caos/orbos/internal/operator/boom/application/applications/reconciling/config/auth"
     6  	"github.com/caos/orbos/internal/operator/boom/application/applications/reconciling/config/credential"
     7  	"github.com/caos/orbos/internal/operator/boom/application/applications/reconciling/config/plugin"
     8  	"github.com/caos/orbos/internal/operator/boom/application/applications/reconciling/config/repository"
     9  	"github.com/caos/orbos/mntr"
    10  	"gopkg.in/yaml.v3"
    11  )
    12  
    13  type Config struct {
    14  	Repositories            string `yaml:"repositories,omitempty"`
    15  	Credentials             string `yaml:"repository.credentials,omitempty"`
    16  	Connectors              string `yaml:"connectors,omitempty"`
    17  	OIDC                    string `yaml:"oidc,omitempty"`
    18  	ConfigManagementPlugins string `yaml:"configManagementPlugins,omitempty"`
    19  }
    20  
    21  func GetFromSpec(monitor mntr.Monitor, spec *reconciling.Reconciling) *Config {
    22  	conf := &Config{}
    23  
    24  	dexconfig := auth.GetDexConfigFromSpec(monitor, spec)
    25  	data, err := yaml.Marshal(dexconfig)
    26  	if err == nil {
    27  		conf.Connectors = string(data)
    28  	}
    29  	repos := repository.GetFromSpec(monitor, spec)
    30  	data2, err := yaml.Marshal(repos)
    31  	if err == nil {
    32  		conf.Repositories = string(data2)
    33  	}
    34  
    35  	creds := credential.GetFromSpec(monitor, spec)
    36  	data3, err := yaml.Marshal(creds)
    37  	if err == nil {
    38  		conf.Credentials = string(data3)
    39  	}
    40  
    41  	oidc, err := auth.GetOIDC(spec.Auth)
    42  	if err == nil && oidc != "" {
    43  		conf.OIDC = oidc
    44  	}
    45  
    46  	if spec.CustomImage != nil {
    47  		plugins := make([]*plugin.Plugin, 0)
    48  		init := &plugin.Command{
    49  			Command: []string{"gopass", "sync"},
    50  		}
    51  		generate := &plugin.Command{
    52  			Command: []string{"sh", "-c"},
    53  			Args:    []string{"kustomize build && ./secrets.yaml.sh "},
    54  		}
    55  		plugins = append(plugins, plugin.New("getSecrets", init, generate))
    56  
    57  		pluginsYaml, err := yaml.Marshal(plugins)
    58  		if err == nil {
    59  			conf.ConfigManagementPlugins = string(pluginsYaml)
    60  		}
    61  	}
    62  
    63  	return conf
    64  }