-
Notifications
You must be signed in to change notification settings - Fork 0
/
ecr.go
119 lines (115 loc) · 3.43 KB
/
ecr.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package recipes
import (
"github.com/aws/aws-sdk-go-v2/service/ecr"
"github.com/aws/aws-sdk-go-v2/service/ecr/types"
"github.com/cloudquery/plugin-sdk/codegen"
"github.com/cloudquery/plugin-sdk/schema"
"github.com/OpsHelmInc/cloudquery/resources/services/ecr/models"
)
func ECRResources() []*Resource {
resources := []*Resource{
{
SubService: "registries",
Struct: &ecr.DescribeRegistryOutput{},
SkipFields: []string{"RegistryId", "ResultMetadata"},
Multiplex: `client.ServiceAccountRegionMultiplexer("api.ecr")`,
ExtraColumns: append(
defaultRegionalColumnsPK,
[]codegen.ColumnDefinition{
{
Name: "registry_id",
Type: schema.TypeString,
Resolver: `schema.PathResolver("RegistryId")`,
Options: schema.ColumnCreationOptions{PrimaryKey: true},
},
}...),
},
{
SubService: "registry_policies",
Struct: &ecr.GetRegistryPolicyOutput{},
SkipFields: []string{"RegistryId", "PolicyText", "ResultMetadata"},
Multiplex: `client.ServiceAccountRegionMultiplexer("api.ecr")`,
ExtraColumns: append(
defaultRegionalColumnsPK,
[]codegen.ColumnDefinition{
{
Name: "registry_id",
Type: schema.TypeString,
Resolver: `schema.PathResolver("RegistryId")`,
Options: schema.ColumnCreationOptions{PrimaryKey: true},
},
{
Name: "policy_text",
Type: schema.TypeJSON,
Resolver: `schema.PathResolver("PolicyText")`,
},
}...),
},
{
SubService: "repositories",
Struct: &types.Repository{},
Description: "https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_Repository.html",
SkipFields: []string{"RepositoryArn"},
Multiplex: `client.ServiceAccountRegionMultiplexer("api.ecr")`,
ExtraColumns: append(
defaultRegionalColumns,
[]codegen.ColumnDefinition{
{
Name: "arn",
Type: schema.TypeString,
Resolver: `schema.PathResolver("RepositoryArn")`,
Options: schema.ColumnCreationOptions{PrimaryKey: true},
},
{
Name: "tags",
Type: schema.TypeJSON,
Resolver: `resolveRepositoryTags`,
},
{
Name: "policy_text",
Type: schema.TypeJSON,
Resolver: `resolveRepositoryPolicy`,
},
{
Name: ohResourceTypeColumn,
Type: schema.TypeString,
Resolver: `client.StaticValueResolver("AWS::ECR::Repository")`,
},
}...),
Relations: []string{
"RepositoryImages()",
},
},
{
SubService: "repository_images",
Struct: &types.ImageDetail{},
Description: "https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_ImageDetail.html",
ExtraColumns: append(
defaultRegionalColumns,
[]codegen.ColumnDefinition{
{
Name: "arn",
Type: schema.TypeString,
Resolver: `resolveImageArn`,
Options: schema.ColumnCreationOptions{PrimaryKey: true},
},
{
Name: ohResourceTypeColumn,
Type: schema.TypeString,
Resolver: `client.StaticValueResolver("AWS::ECR::Image")`,
},
}...),
Relations: []string{"RepositoryImageScanFindings()"},
},
{
SubService: "repository_image_scan_findings",
Struct: &models.ImageScanWrapper{},
Description: "https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_ImageScanFindings.html",
ExtraColumns: defaultRegionalColumns,
},
}
for _, r := range resources {
r.Service = "ecr"
}
return resources
}