Skip to content

Commit

Permalink
prepare for sync with addressing from enventry
Browse files Browse the repository at this point in the history
  • Loading branch information
jondot committed May 17, 2021
1 parent 8f9f15e commit 3544921
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 13 deletions.
12 changes: 12 additions & 0 deletions pkg/core/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ func (k *KeyPath) Missing() EnvEntry {
return EnvEntry{
IsFound: false,
Key: k.Env,
Field: k.Field,
ResolvedPath: k.Path,
}
}
Expand All @@ -48,6 +49,7 @@ func (k *KeyPath) Found(v string) EnvEntry {
return EnvEntry{
IsFound: true,
Key: k.Env,
Field: k.Field,
Value: v,
ResolvedPath: k.Path,
}
Expand All @@ -58,6 +60,7 @@ func (k *KeyPath) FoundWithKey(key, v string) EnvEntry {
return EnvEntry{
IsFound: true,
Key: key,
Field: k.Field,
Value: v,
ResolvedPath: k.Path,
}
Expand Down Expand Up @@ -106,6 +109,7 @@ func (a EntriesByValueSize) Less(i, j int) bool { return len(a[i].Value) > len(a

type EnvEntry struct {
Key string
Field string
Value string
ProviderName string
ResolvedPath string
Expand All @@ -116,6 +120,14 @@ type EnvEntry struct {
IsFound bool
}

func (ee *EnvEntry) AddressingKeyPath() *KeyPath {
return &KeyPath{
Env: ee.Key,
Field: ee.Field,
Path: ee.ResolvedPath,
}
}

type DriftedEntry struct {
Diff string
Source EnvEntry
Expand Down
31 changes: 18 additions & 13 deletions pkg/teller.go
Original file line number Diff line number Diff line change
Expand Up @@ -431,19 +431,24 @@ func (tl *Teller) Drift(providerNames []string) []core.DriftedEntry {
return drifts
}

func (tl *Teller) GetProviderByName(pname string) (*MappingConfig, core.Provider, error) {
pcfg, ok := tl.Config.Providers[pname]
if !ok {
return nil, nil, fmt.Errorf("provider %v not found", pname)
}
p := pname
if pcfg.Kind != "" {
p = pcfg.Kind
}
provider, err := tl.Providers.GetProvider(p)
return &pcfg, provider, err
}

func (tl *Teller) Put(kvmap map[string]string, providerNames []string, sync bool, directPath string) error {
for _, pname := range providerNames {
pcfg, ok := tl.Config.Providers[pname]
if !ok {
return fmt.Errorf("provider %v not found", pname)
}
p := pname
if pcfg.Kind != "" {
p = pcfg.Kind
}
provider, err := tl.Providers.GetProvider(p)
pcfg, provider, err := tl.GetProviderByName(pname)
if err != nil {
return fmt.Errorf("cannot create provider %v", p)
return fmt.Errorf("cannot create provider %v: %v", pname, err)
}

useDirectPath := directPath != ""
Expand All @@ -455,14 +460,14 @@ func (tl *Teller) Put(kvmap map[string]string, providerNames []string, sync bool
kvp = core.KeyPath{Path: directPath}
} else {
if pcfg.EnvMapping == nil {
return fmt.Errorf("there is no env sync mapping for provider '%v'", p)
return fmt.Errorf("there is no env sync mapping for provider '%v'", pname)
}
kvp = *pcfg.EnvMapping
}
kvpResolved := tl.Populate.KeyPath(kvp)
err := provider.PutMapping(kvpResolved, kvmap)
if err != nil {
return fmt.Errorf("cannot put (sync) %v in provider %v: %v", kvpResolved.Path, p, err)
return fmt.Errorf("cannot put (sync) %v in provider %v: %v", kvpResolved.Path, pname, err)
}
tl.Porcelain.DidPutKVP(kvpResolved, pname, true)
} else {
Expand All @@ -482,7 +487,7 @@ func (tl *Teller) Put(kvmap map[string]string, providerNames []string, sync bool
kvpResolved := tl.Populate.KeyPath(kvp.WithEnv(k))
err := provider.Put(kvpResolved, v)
if err != nil {
return fmt.Errorf("cannot put %v in provider %v: %v", k, p, err)
return fmt.Errorf("cannot put %v in provider %v: %v", k, pname, err)
}
tl.Porcelain.DidPutKVP(kvpResolved, pname, false)
} else {
Expand Down

0 comments on commit 3544921

Please sign in to comment.