Skip to content

Commit

Permalink
Merge pull request #51 from anchore/cluster_arn
Browse files Browse the repository at this point in the history
chore: update to latest enterprise api that s/cluster_name/cluster_arn
  • Loading branch information
bradleyjones authored Apr 25, 2023
2 parents 58ac268 + e877fb3 commit 888a18d
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 37 deletions.
4 changes: 2 additions & 2 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ var rootCmd = &cobra.Command{
// replaced in the future with a health check endpoint for the agents
if appConfig.AnchoreDetails.IsValid() {
dummyReport := reporter.Report{
ClusterName: "validating-creds",
Timestamp: time.Now().UTC().Format(time.RFC3339),
ClusterARN: "validating-creds",
Timestamp: time.Now().UTC().Format(time.RFC3339),
}
err := reporter.Post(dummyReport, appConfig.AnchoreDetails)
if err != nil {
Expand Down
6 changes: 2 additions & 4 deletions pkg/inventory/ecs.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,6 @@ func fetchTasksMetadata(client ecsiface.ECSAPI, cluster string, tasks []*string)

tMetadata := reporter.Task{
ARN: *task.TaskArn,
ClusterARN: *task.ClusterArn,
TaskDefARN: *task.TaskDefinitionArn,
Tags: tagMap,
}
Expand Down Expand Up @@ -192,9 +191,8 @@ func fetchServicesMetadata(client ecsiface.ECSAPI, cluster string, services []*s
}

servicesMetadata = append(servicesMetadata, reporter.Service{
ARN: *service.ServiceArn,
ClusterARN: *service.ClusterArn,
Tags: tagMap,
ARN: *service.ServiceArn,
Tags: tagMap,
})
}

Expand Down
10 changes: 3 additions & 7 deletions pkg/inventory/ecs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,6 @@ func Test_fetchTasksMetadata(t *testing.T) {
want: []reporter.Task{
{
ARN: "arn:aws:ecs:us-east-1:123456789012:task/cluster-1/12345678-1234-1234-1234-000000000000",
ClusterARN: "arn:aws:ecs:us-east-1:123456789012:cluster/cluster-1",
ServiceARN: "arn:aws:ecs:us-east-1:123456789012:service/cluster-1/service-1",
TaskDefARN: "arn:aws:ecs:us-east-1:123456789012:task-definition/task-definition-1:1",
Tags: map[string]string{
Expand All @@ -255,7 +254,6 @@ func Test_fetchTasksMetadata(t *testing.T) {
},
{
ARN: "arn:aws:ecs:us-east-1:123456789012:task/cluster-1/12345678-1234-1234-1234-111111111111",
ClusterARN: "arn:aws:ecs:us-east-1:123456789012:cluster/cluster-1",
ServiceARN: "arn:aws:ecs:us-east-1:123456789012:service/cluster-1/service-1",
TaskDefARN: "arn:aws:ecs:us-east-1:123456789012:task-definition/task-definition-1:1",
Tags: map[string]string{},
Expand Down Expand Up @@ -420,17 +418,15 @@ func Test_fetchServicesMetadata(t *testing.T) {
},
want: []reporter.Service{
{
ARN: "arn:aws:ecs:us-east-1:123456789012:service/cluster-1/service-1",
ClusterARN: "arn:aws:ecs:us-east-1:123456789012:cluster/cluster-1",
ARN: "arn:aws:ecs:us-east-1:123456789012:service/cluster-1/service-1",
Tags: map[string]string{
"svc-key-1": "svc-value-1",
"svc-key-2": "svc-value-2",
},
},
{
ARN: "arn:aws:ecs:us-east-1:123456789012:service/cluster-1/service-2",
ClusterARN: "arn:aws:ecs:us-east-1:123456789012:cluster/cluster-1",
Tags: map[string]string{},
ARN: "arn:aws:ecs:us-east-1:123456789012:service/cluster-1/service-2",
Tags: map[string]string{},
},
},
},
Expand Down
28 changes: 14 additions & 14 deletions pkg/inventory/report.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,29 +100,29 @@ func GetInventoryReportsForRegion(region string, anchoreDetails connection.Ancho
}

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

report := reporter.Report{
Timestamp: time.Now().UTC().Format(time.RFC3339),
ClusterName: cluster,
Timestamp: time.Now().UTC().Format(time.RFC3339),
ClusterARN: clusterARN,
}
tasks, err := fetchTasksFromCluster(ecsClient, cluster)
tasks, err := fetchTasksFromCluster(ecsClient, clusterARN)
if err != nil {
return reporter.Report{}, err
}

if metadata {
servicesMeta := []reporter.Service{}
services, err := fetchServicesFromCluster(ecsClient, cluster)
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", cluster)
logger.Log.Debug("No services found in cluster", "cluster", clusterARN)
} else {
servicesMeta, err = fetchServicesMetadata(ecsClient, cluster, services)
servicesMeta, err = fetchServicesMetadata(ecsClient, clusterARN, services)
if err != nil {
return reporter.Report{}, err
}
Expand All @@ -132,24 +132,24 @@ func GetInventoryReportForCluster(cluster string, ecsClient ecsiface.ECSAPI, met

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

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

containers, err := fetchContainersFromTasks(ecsClient, cluster, tasks)
containers, err := fetchContainersFromTasks(ecsClient, clusterARN, tasks)
if err != nil {
return reporter.Report{}, err
}
report.Containers = containers
logger.Log.Info("Found containers in cluster", "cluster", cluster, "containerCount", len(containers))
logger.Log.Info("Found containers in cluster", "cluster", clusterARN, "containerCount", len(containers))
}

return report, nil
Expand Down
16 changes: 7 additions & 9 deletions pkg/reporter/report.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package reporter

type Report struct {
Timestamp string `json:"timestamp,omitempty"` // Should be generated using time.Now.UTC() and formatted according to RFC Y-M-DTH:M:SZ
ClusterName string `json:"cluster_name,omitempty"`
Containers []Container `json:"containers,omitempty"`
Tasks []Task `json:"tasks,omitempty"`
Services []Service `json:"services,omitempty"`
Timestamp string `json:"timestamp"` // Should be generated using time.Now.UTC() and formatted according to RFC Y-M-DTH:M:SZ
ClusterARN string `json:"cluster_arn"`
Containers []Container `json:"containers,omitempty"`
Tasks []Task `json:"tasks,omitempty"`
Services []Service `json:"services,omitempty"`
}

type Container struct {
Expand All @@ -17,14 +17,12 @@ type Container struct {

type Task struct {
ARN string `json:"arn"`
ClusterARN string `json:"cluster_arn,omitempty"`
ServiceARN string `json:"service_arn,omitempty"`
Tags map[string]string `json:"tags,omitempty"`
TaskDefARN string `json:"task_definition_arn,omitempty"`
}

type Service struct {
ARN string `json:"arn"`
ClusterARN string `json:"cluster_arn,omitempty"`
Tags map[string]string `json:"tags,omitempty"`
ARN string `json:"arn"`
Tags map[string]string `json:"tags,omitempty"`
}
2 changes: 1 addition & 1 deletion pkg/reporter/reporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const ReportAPIPath = "v1/enterprise/ecs-inventory"
//
//nolint:gosec
func Post(report Report, anchoreDetails connection.AnchoreInfo) error {
defer tracker.TrackFunctionTime(time.Now(), fmt.Sprintf("Posting Inventory Report for cluster %s", report.ClusterName))
defer tracker.TrackFunctionTime(time.Now(), fmt.Sprintf("Posting Inventory Report for cluster %s", report.ClusterARN))
logger.Log.Info("Reporting results to Anchore", "Account", anchoreDetails.Account)
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: anchoreDetails.HTTP.Insecure},
Expand Down

0 comments on commit 888a18d

Please sign in to comment.