feat: add total_iac_source_count json field
parent
79dddd161c
commit
3a9195258b
|
@ -27,11 +27,12 @@ type Difference struct {
|
|||
}
|
||||
|
||||
type Summary struct {
|
||||
TotalResources int `json:"total_resources"`
|
||||
TotalDrifted int `json:"total_changed"`
|
||||
TotalUnmanaged int `json:"total_unmanaged"`
|
||||
TotalDeleted int `json:"total_missing"`
|
||||
TotalManaged int `json:"total_managed"`
|
||||
TotalResources int `json:"total_resources"`
|
||||
TotalDrifted int `json:"total_changed"`
|
||||
TotalUnmanaged int `json:"total_unmanaged"`
|
||||
TotalDeleted int `json:"total_missing"`
|
||||
TotalManaged int `json:"total_managed"`
|
||||
TotalIaCSourceCount uint `json:"total_iac_source_count"`
|
||||
}
|
||||
|
||||
type Analysis struct {
|
||||
|
@ -166,6 +167,7 @@ func (a *Analysis) UnmarshalJSON(bytes []byte) error {
|
|||
}
|
||||
a.ProviderName = bla.ProviderName
|
||||
a.ProviderVersion = bla.ProviderVersion
|
||||
a.summary.TotalIaCSourceCount = bla.Summary.TotalIaCSourceCount
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -208,6 +210,10 @@ func (a *Analysis) SetOptions(options AnalyzerOptions) {
|
|||
a.options = options
|
||||
}
|
||||
|
||||
func (a *Analysis) SetIaCSourceCount(i uint) {
|
||||
a.summary.TotalIaCSourceCount = i
|
||||
}
|
||||
|
||||
func (a *Analysis) Coverage() int {
|
||||
if a.summary.TotalResources > 0 {
|
||||
return int((float32(a.summary.TotalManaged) / float32(a.summary.TotalResources)) * 100.0)
|
||||
|
|
|
@ -1270,6 +1270,7 @@ func addSchemaToRes(res *resource.Resource, repo resource.SchemaRepositoryInterf
|
|||
func TestAnalysis_MarshalJSON(t *testing.T) {
|
||||
goldenFile := "./testdata/output.json"
|
||||
analysis := Analysis{}
|
||||
analysis.SetIaCSourceCount(1)
|
||||
analysis.AddManaged(
|
||||
&resource.Resource{
|
||||
Id: "AKIA5QYBVVD25KFXJHYJ",
|
||||
|
@ -1350,11 +1351,12 @@ func TestAnalysis_MarshalJSON(t *testing.T) {
|
|||
func TestAnalysis_UnmarshalJSON(t *testing.T) {
|
||||
expected := Analysis{
|
||||
summary: Summary{
|
||||
TotalResources: 6,
|
||||
TotalDrifted: 1,
|
||||
TotalUnmanaged: 2,
|
||||
TotalDeleted: 2,
|
||||
TotalManaged: 2,
|
||||
TotalResources: 6,
|
||||
TotalDrifted: 1,
|
||||
TotalUnmanaged: 2,
|
||||
TotalDeleted: 2,
|
||||
TotalManaged: 2,
|
||||
TotalIaCSourceCount: 3,
|
||||
},
|
||||
managed: []*resource.Resource{
|
||||
{
|
||||
|
@ -1431,6 +1433,7 @@ func TestAnalysis_UnmarshalJSON(t *testing.T) {
|
|||
assert.Equal(t, 2, got.Summary().TotalDeleted)
|
||||
assert.Equal(t, 6, got.Summary().TotalResources)
|
||||
assert.Equal(t, 1, got.Summary().TotalDrifted)
|
||||
assert.Equal(t, uint(3), got.Summary().TotalIaCSourceCount)
|
||||
assert.Len(t, got.alerts, 1)
|
||||
assert.Equal(t, got.alerts["aws_iam_access_key"][0].Message(), "This is an alert")
|
||||
}
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
"total_changed": 1,
|
||||
"total_unmanaged": 2,
|
||||
"total_missing": 2,
|
||||
"total_managed": 2
|
||||
"total_managed": 2,
|
||||
"total_iac_source_count": 3
|
||||
},
|
||||
"managed": [
|
||||
{
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
"total_changed": 1,
|
||||
"total_unmanaged": 2,
|
||||
"total_missing": 2,
|
||||
"total_managed": 2
|
||||
"total_managed": 2,
|
||||
"total_iac_source_count": 1
|
||||
},
|
||||
"managed": [
|
||||
{
|
||||
|
|
|
@ -22,6 +22,7 @@ func fakeAnalysis(opts analyser.AnalyzerOptions) *analyser.Analysis {
|
|||
opts = analyser.AnalyzerOptions{Deep: true}
|
||||
}
|
||||
a := analyser.NewAnalysis(opts)
|
||||
a.SetIaCSourceCount(3)
|
||||
a.AddUnmanaged(
|
||||
&resource.Resource{
|
||||
Id: "unmanaged-id-1",
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
"total_changed": 2,
|
||||
"total_unmanaged": 2,
|
||||
"total_missing": 2,
|
||||
"total_managed": 2
|
||||
"total_managed": 2,
|
||||
"total_iac_source_count": 3
|
||||
},
|
||||
"managed": [
|
||||
{
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
"total_changed": 0,
|
||||
"total_unmanaged": 0,
|
||||
"total_missing": 0,
|
||||
"total_managed": 0
|
||||
"total_managed": 0,
|
||||
"total_iac_source_count": 0
|
||||
},
|
||||
"managed": null,
|
||||
"unmanaged": null,
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
"total_changed": 0,
|
||||
"total_unmanaged": 0,
|
||||
"total_missing": 0,
|
||||
"total_managed": 0
|
||||
"total_managed": 0,
|
||||
"total_iac_source_count": 0
|
||||
},
|
||||
"managed": null,
|
||||
"unmanaged": null,
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
"total_changed": 1,
|
||||
"total_unmanaged": 0,
|
||||
"total_missing": 0,
|
||||
"total_managed": 1
|
||||
"total_managed": 1,
|
||||
"total_iac_source_count": 0
|
||||
},
|
||||
"managed": [
|
||||
{
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
"total_changed": 0,
|
||||
"total_unmanaged": 0,
|
||||
"total_missing": 0,
|
||||
"total_managed": 0
|
||||
"total_managed": 0,
|
||||
"total_iac_source_count": 0
|
||||
},
|
||||
"managed": null,
|
||||
"unmanaged": null,
|
||||
|
|
|
@ -159,12 +159,14 @@ func (d DriftCTL) Run() (*analyser.Analysis, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
analysis.SetIaCSourceCount(d.iacSupplier.SourceCount())
|
||||
analysis.Duration = time.Since(start)
|
||||
analysis.Date = time.Now()
|
||||
|
||||
d.store.Bucket(memstore.TelemetryBucket).Set("total_resources", analysis.Summary().TotalResources)
|
||||
d.store.Bucket(memstore.TelemetryBucket).Set("total_managed", analysis.Summary().TotalManaged)
|
||||
d.store.Bucket(memstore.TelemetryBucket).Set("duration", uint(analysis.Duration.Seconds()+0.5))
|
||||
d.store.Bucket(memstore.TelemetryBucket).Set("iac_source_count", d.iacSupplier.SourceCount())
|
||||
|
||||
return &analysis, nil
|
||||
}
|
||||
|
@ -192,7 +194,6 @@ func (d DriftCTL) scan() (remoteResources []*resource.Resource, resourcesFromSta
|
|||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
d.store.Bucket(memstore.TelemetryBucket).Set("iac_source_count", d.iacSupplier.SourceCount())
|
||||
|
||||
logrus.Info("Start scanning cloud provider")
|
||||
d.scanProgress.Start()
|
||||
|
|
|
@ -134,6 +134,7 @@ func TestDriftctlRun_BasicBehavior(t *testing.T) {
|
|||
remoteResources: []*resource.Resource{},
|
||||
assert: func(t *testing.T, result *test.ScanResult, err error) {
|
||||
result.NotZero(result.Duration)
|
||||
result.Equal(uint(2), result.Summary().TotalIaCSourceCount)
|
||||
},
|
||||
assertStore: func(t *testing.T, store memstore.Store) {
|
||||
assert.Equal(t, 0, store.Bucket(memstore.TelemetryBucket).Get("total_resources"))
|
||||
|
@ -152,6 +153,7 @@ func TestDriftctlRun_BasicBehavior(t *testing.T) {
|
|||
},
|
||||
assert: func(t *testing.T, result *test.ScanResult, err error) {
|
||||
result.AssertInfrastructureIsInSync()
|
||||
result.Equal(uint(2), result.Summary().TotalIaCSourceCount)
|
||||
},
|
||||
assertStore: func(t *testing.T, store memstore.Store) {
|
||||
assert.Equal(t, 1, store.Bucket(memstore.TelemetryBucket).Get("total_resources"))
|
||||
|
@ -171,6 +173,7 @@ func TestDriftctlRun_BasicBehavior(t *testing.T) {
|
|||
remoteResources: []*resource.Resource{},
|
||||
assert: func(t *testing.T, result *test.ScanResult, err error) {
|
||||
result.AssertDeletedCount(1)
|
||||
result.Equal(uint(2), result.Summary().TotalIaCSourceCount)
|
||||
},
|
||||
assertStore: func(t *testing.T, store memstore.Store) {
|
||||
assert.Equal(t, 1, store.Bucket(memstore.TelemetryBucket).Get("total_resources"))
|
||||
|
@ -225,6 +228,7 @@ func TestDriftctlRun_BasicBehavior(t *testing.T) {
|
|||
},
|
||||
Computed: false,
|
||||
})
|
||||
result.Equal(uint(2), result.Summary().TotalIaCSourceCount)
|
||||
},
|
||||
assertStore: func(t *testing.T, store memstore.Store) {
|
||||
assert.Equal(t, 1, store.Bucket(memstore.TelemetryBucket).Get("total_resources"))
|
||||
|
@ -264,6 +268,7 @@ func TestDriftctlRun_BasicBehavior(t *testing.T) {
|
|||
},
|
||||
Computed: true,
|
||||
})
|
||||
result.Equal(uint(2), result.Summary().TotalIaCSourceCount)
|
||||
},
|
||||
assertStore: func(t *testing.T, store memstore.Store) {
|
||||
assert.Equal(t, 1, store.Bucket(memstore.TelemetryBucket).Get("total_resources"))
|
||||
|
@ -305,6 +310,7 @@ func TestDriftctlRun_BasicBehavior(t *testing.T) {
|
|||
},
|
||||
Computed: false,
|
||||
})
|
||||
result.Equal(uint(2), result.Summary().TotalIaCSourceCount)
|
||||
},
|
||||
assertStore: func(t *testing.T, store memstore.Store) {
|
||||
assert.Equal(t, 1, store.Bucket(memstore.TelemetryBucket).Get("total_resources"))
|
||||
|
@ -346,6 +352,7 @@ func TestDriftctlRun_BasicBehavior(t *testing.T) {
|
|||
},
|
||||
Computed: false,
|
||||
})
|
||||
result.Equal(uint(2), result.Summary().TotalIaCSourceCount)
|
||||
},
|
||||
assertStore: func(t *testing.T, store memstore.Store) {
|
||||
assert.Equal(t, 1, store.Bucket(memstore.TelemetryBucket).Get("total_resources"))
|
||||
|
@ -437,6 +444,7 @@ func TestDriftctlRun_BasicBehavior(t *testing.T) {
|
|||
result.AssertUnmanagedCount(2)
|
||||
result.AssertDeletedCount(0)
|
||||
result.AssertDriftCountTotal(0)
|
||||
result.Equal(uint(2), result.Summary().TotalIaCSourceCount)
|
||||
},
|
||||
assertStore: func(t *testing.T, store memstore.Store) {
|
||||
assert.Equal(t, 4, store.Bucket(memstore.TelemetryBucket).Get("total_resources"))
|
||||
|
@ -534,6 +542,7 @@ func TestDriftctlRun_BasicBehavior(t *testing.T) {
|
|||
result.AssertUnmanagedCount(4)
|
||||
result.AssertDeletedCount(0)
|
||||
result.AssertDriftCountTotal(0)
|
||||
result.Equal(uint(2), result.Summary().TotalIaCSourceCount)
|
||||
},
|
||||
assertStore: func(t *testing.T, store memstore.Store) {
|
||||
assert.Equal(t, 6, store.Bucket(memstore.TelemetryBucket).Get("total_resources"))
|
||||
|
@ -633,6 +642,7 @@ func TestDriftctlRun_BasicBehavior(t *testing.T) {
|
|||
result.AssertUnmanagedCount(1)
|
||||
result.AssertDeletedCount(0)
|
||||
result.AssertDriftCountTotal(0)
|
||||
result.Equal(uint(2), result.Summary().TotalIaCSourceCount)
|
||||
},
|
||||
assertStore: func(t *testing.T, store memstore.Store) {
|
||||
assert.Equal(t, 1, store.Bucket(memstore.TelemetryBucket).Get("total_resources"))
|
||||
|
|
Loading…
Reference in New Issue