Skip to content

Commit

Permalink
Merge pull request #54 from anchore/remove-metadata-config
Browse files Browse the repository at this point in the history
  • Loading branch information
bradleyjones authored May 9, 2023
2 parents b13b46c + 2f5348b commit 6221509
Show file tree
Hide file tree
Showing 7 changed files with 22 additions and 36 deletions.
3 changes: 0 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,6 @@ region: $ANCHORE_ECS_INVENTORY_REGION
polling-interval-seconds: 300

quiet: false

# collect additional metadata about where a container is running (service/task metadata including tags). [defaults to true]
metadata: true
```
You can also override any configuration value with environment variables. They
Expand Down
1 change: 0 additions & 1 deletion cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ var rootCmd = &cobra.Command{
appConfig.Region,
appConfig.Quiet,
appConfig.DryRun,
appConfig.Metadata,
)
},
}
Expand Down
7 changes: 2 additions & 5 deletions internal/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,8 @@ type AppConfig struct {
PollingIntervalSeconds int `mapstructure:"polling-interval-seconds"`
AnchoreDetails connection.AnchoreInfo `mapstructure:"anchore"`
Region string `mapstructure:"region"`
Quiet bool `mapstructure:"quiet"` // if true do not log the inventory report to stdout
DryRun bool `mapstructure:"dry-run"` // if true do not report inventory to Anchore
Metadata bool `mapstructure:"metadata"` // if true, include runtime metadata in the inventory report
Quiet bool `mapstructure:"quiet"` // if true do not log the inventory report to stdout
DryRun bool `mapstructure:"dry-run"` // if true do not report inventory to Anchore
}

// Logging Configuration
Expand All @@ -65,7 +64,6 @@ var DefaultConfigValues = AppConfig{
PollingIntervalSeconds: 300,
Quiet: false,
DryRun: false,
Metadata: true,
}

var ErrConfigFileNotFound = fmt.Errorf("application config file not found")
Expand All @@ -76,7 +74,6 @@ func setDefaultValues(v *viper.Viper) {
v.SetDefault("anchore.account", DefaultConfigValues.AnchoreDetails.Account)
v.SetDefault("anchore.http.insecure", DefaultConfigValues.AnchoreDetails.HTTP.Insecure)
v.SetDefault("anchore.http.timeout-seconds", DefaultConfigValues.AnchoreDetails.HTTP.TimeoutSeconds)
v.SetDefault("metadata", DefaultConfigValues.Metadata)
}

// Load the Application Configuration from the Viper specifications
Expand Down
3 changes: 0 additions & 3 deletions internal/config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ func TestLoadConfigFromFileCliConfigPath(t *testing.T) {
Region: "us-east-1",
PollingIntervalSeconds: 60,
Quiet: true,
Metadata: true,
}

assert.EqualValues(t, expectedCfg, appCfg)
Expand Down Expand Up @@ -101,7 +100,6 @@ anchoredetails:
region: ""
quiet: false
dryrun: false
metadata: false
`

assert.Equal(t, expected, config.String())
Expand Down Expand Up @@ -134,7 +132,6 @@ func TestDefaultValuesSuppliedForEmptyConfig(t *testing.T) {
TimeoutSeconds: 10,
},
},
Metadata: true,
}

assert.EqualValues(t, expectedCfg, appCfg)
Expand Down
38 changes: 17 additions & 21 deletions pkg/inventory/report.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ func HandleReport(report reporter.Report, anchoreDetails connection.AnchoreInfo,
return nil
}

func GetInventoryReportsForRegion(region string, anchoreDetails connection.AnchoreInfo, quiet, dryRun, metadata bool) error {
func GetInventoryReportsForRegion(region string, anchoreDetails connection.AnchoreInfo, quiet, dryRun bool) error {
defer tracker.TrackFunctionTime(time.Now(), fmt.Sprintf("Getting Inventory Reports for region: %s", region))
logger.Log.Info("Getting Inventory Reports for region", "region", region)
sessConfig := &aws.Config{}
Expand Down Expand Up @@ -80,7 +80,7 @@ func GetInventoryReportsForRegion(region string, anchoreDetails connection.Ancho

ecsClient := ecs.New(sess)

report, err := GetInventoryReportForCluster(cluster, ecsClient, metadata)
report, err := GetInventoryReportForCluster(cluster, ecsClient)
if err != nil {
logger.Log.Error("Failed to get inventory report for cluster", err)
}
Expand All @@ -100,7 +100,7 @@ func GetInventoryReportsForRegion(region string, anchoreDetails connection.Ancho
}

// GetInventoryReportForCluster is an atomic method for getting in-use image results, for a cluster
func GetInventoryReportForCluster(clusterARN string, ecsClient ecsiface.ECSAPI, metadata bool) (reporter.Report, error) {
func GetInventoryReportForCluster(clusterARN string, ecsClient ecsiface.ECSAPI) (reporter.Report, error) {
defer tracker.TrackFunctionTime(time.Now(), fmt.Sprintf("Getting Inventory Report for cluster: %s", clusterARN))
logger.Log.Debug("Found cluster", "cluster", clusterARN)

Expand All @@ -113,36 +113,32 @@ func GetInventoryReportForCluster(clusterARN string, ecsClient ecsiface.ECSAPI,
return reporter.Report{}, err
}

if metadata {
servicesMeta := []reporter.Service{}
services, err := fetchServicesFromCluster(ecsClient, clusterARN)
servicesMeta := []reporter.Service{}
services, err := fetchServicesFromCluster(ecsClient, clusterARN)
if err != nil {
return reporter.Report{}, err
}
if len(services) == 0 {
logger.Log.Debug("No services found in cluster", "cluster", clusterARN)
} else {
servicesMeta, err = fetchServicesMetadata(ecsClient, clusterARN, services)
if err != nil {
return reporter.Report{}, err
}
if len(services) == 0 {
logger.Log.Debug("No services found in cluster", "cluster", clusterARN)
} else {
servicesMeta, err = fetchServicesMetadata(ecsClient, clusterARN, services)
if err != nil {
return reporter.Report{}, err
}
}
report.Services = servicesMeta
}
report.Services = servicesMeta

// Must be at least one task to continue
if len(tasks) == 0 {
logger.Log.Debug("No tasks found in cluster", "cluster", clusterARN)
} else {
logger.Log.Debug("Found tasks in cluster", "cluster", clusterARN, "taskCount", len(tasks))

if metadata {
taskMeta, err := fetchTasksMetadata(ecsClient, clusterARN, tasks)
if err != nil {
return reporter.Report{}, err
}
report.Tasks = taskMeta
taskMeta, err := fetchTasksMetadata(ecsClient, clusterARN, tasks)
if err != nil {
return reporter.Report{}, err
}
report.Tasks = taskMeta

containers, err := fetchContainersFromTasks(ecsClient, clusterARN, tasks)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion pkg/inventory/report_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
func TestGetInventoryReportForCluster(t *testing.T) {
mockSvc := &mockECSClient{}

report, err := GetInventoryReportForCluster("cluster-1", mockSvc, true)
report, err := GetInventoryReportForCluster("cluster-1", mockSvc)

assert.NoError(t, err)
fmt.Println(report)
Expand Down
4 changes: 2 additions & 2 deletions pkg/lib.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ func PeriodicallyGetInventoryReport(
pollingIntervalSeconds int,
anchoreDetails connection.AnchoreInfo,
region string,
quiet, dryRun, metadata bool,
quiet, dryRun bool,
) {
// Fire off a ticker that reports according to a configurable polling interval
ticker := time.NewTicker(time.Duration(pollingIntervalSeconds) * time.Second)

for {
err := inventory.GetInventoryReportsForRegion(region, anchoreDetails, quiet, dryRun, metadata)
err := inventory.GetInventoryReportsForRegion(region, anchoreDetails, quiet, dryRun)
if err != nil {
log.Error("Failed to get Inventory Reports for region", err)
}
Expand Down

0 comments on commit 6221509

Please sign in to comment.