Skip to content

Commit 86e89ca

Browse files
committed
refactor(config): linked accounts configuration
1 parent d2da2a6 commit 86e89ca

3 files changed

Lines changed: 36 additions & 9 deletions

File tree

pkg/config/config.go

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,23 @@ import (
2727
)
2828

2929
type ScrapeConf struct {
30-
APIVersion string `yaml:"apiVersion"`
31-
StsRegion string `yaml:"sts-region"`
32-
OAMSinkIdentifier string `yaml:"oamSinkIdentifier"`
33-
OAMRegion string `yaml:"oamRegion"`
34-
Discovery Discovery `yaml:"discovery"`
35-
Static []*Static `yaml:"static"`
36-
CustomNamespace []*CustomNamespace `yaml:"customNamespace"`
30+
APIVersion string `yaml:"apiVersion"`
31+
StsRegion string `yaml:"sts-region"`
32+
LinkedAccounts LinkedAccountsConfig `yaml:"linkedAccounts"`
33+
OAMSinkIdentifier string `yaml:"oamSinkIdentifier"` // deprecated: use linkedAccounts.oam.sinkIdentifier
34+
OAMRegion string `yaml:"oamRegion"` // deprecated: use linkedAccounts.oam.region
35+
Discovery Discovery `yaml:"discovery"`
36+
Static []*Static `yaml:"static"`
37+
CustomNamespace []*CustomNamespace `yaml:"customNamespace"`
38+
}
39+
40+
type LinkedAccountsOAM struct {
41+
SinkIdentifier string `yaml:"sinkIdentifier"`
42+
Region string `yaml:"region"`
43+
}
44+
45+
type LinkedAccountsConfig struct {
46+
OAM LinkedAccountsOAM `yaml:"oam"`
3747
}
3848

3949
type Discovery struct {
@@ -445,8 +455,13 @@ func (m *Metric) validateMetric(logger *slog.Logger, metricIdx int, parent strin
445455
func (c *ScrapeConf) toModelConfig() model.JobsConfig {
446456
jobsCfg := model.JobsConfig{}
447457
jobsCfg.StsRegion = c.StsRegion
448-
jobsCfg.OAMSinkIdentifier = c.OAMSinkIdentifier
449-
jobsCfg.OAMRegion = c.OAMRegion
458+
if c.LinkedAccounts.OAM.SinkIdentifier != "" {
459+
jobsCfg.OAMSinkIdentifier = c.LinkedAccounts.OAM.SinkIdentifier
460+
jobsCfg.OAMRegion = c.LinkedAccounts.OAM.Region
461+
} else {
462+
jobsCfg.OAMSinkIdentifier = c.OAMSinkIdentifier
463+
jobsCfg.OAMRegion = c.OAMRegion
464+
}
450465

451466
for _, discoveryJob := range c.Discovery.Jobs {
452467
svc := SupportedServices.GetService(discoveryJob.Type)

pkg/config/config_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,3 +175,11 @@ func TestValidateConfigFailuresWhenUsingAsLibrary(t *testing.T) {
175175
})
176176
}
177177
}
178+
179+
func TestLinkedAccountsConfigMappedToModel(t *testing.T) {
180+
var c ScrapeConf
181+
jobsCfg, err := c.Load("testdata/include_linked_accounts.ok.yml", promslog.NewNopLogger())
182+
require.NoError(t, err)
183+
require.Equal(t, "arn:aws:oam:eu-west-1:123456789012:sink/test", jobsCfg.OAMSinkIdentifier)
184+
require.Equal(t, "eu-west-1", jobsCfg.OAMRegion)
185+
}

pkg/config/testdata/include_linked_accounts.ok.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
apiVersion: v1alpha1
22
sts-region: eu-west-1
3+
linkedAccounts:
4+
oam:
5+
sinkIdentifier: "arn:aws:oam:eu-west-1:123456789012:sink/test"
6+
region: "eu-west-1"
37
discovery:
48
jobs:
59
- type: AWS/EC2

0 commit comments

Comments
 (0)