11package parser
22
33import (
4- "c7n-helper/pkg/cloud"
4+ "c7n-helper/pkg/aws"
5+ "c7n-helper/pkg/azure"
56 "c7n-helper/pkg/dto"
7+ "c7n-helper/pkg/gcp"
68 "encoding/json"
79 "errors"
10+ "io"
811 "log"
912 "os"
1013 "path/filepath"
1114 "strings"
1215)
1316
14- var resourceParsers = map [string ]func (file string ) ([]dto.Resource , error ){
15- "eks" : cloud .EksFromFile ,
16- "ec2" : cloud .Ec2FromFile ,
17- "gke" : cloud .GkeFromFile ,
18- "gce" : cloud .GceFromFile ,
17+ var resourceParsers = map [string ]func (content []byte ) ([]dto.Resource , error ){
18+ "eks" : aws .EKS ,
19+ "ec2" : aws .EC2 ,
20+ "gke" : gcp .GKE ,
21+ "gce" : gcp .GCE ,
22+ "arg" : azure .RG ,
1923}
2024
2125func Parse (resourceType , c7nDir , policy , outFile string ) error {
@@ -83,7 +87,11 @@ func resourcesFromFile(resourceType, file string) ([]dto.Resource, error) {
8387 if ! ok {
8488 return nil , errors .New ("unsupported resource type" )
8589 }
86- return parser (file )
90+ content , err := jsonToBytes (file )
91+ if err != nil {
92+ return nil , err
93+ }
94+ return parser (content )
8795}
8896
8997func accountsFromMap (accountMap map [string ]dto.Account ) []dto.Account {
@@ -106,5 +114,15 @@ func persistReport(report dto.PolicyReport, outFile string) error {
106114func accountRegion (file string ) (string , string ) {
107115 parts := strings .Split (file , "/" )
108116 l := len (parts )
117+ //TODO: must be improved for Azure & GCP
109118 return parts [l - 4 ] /* account */ , parts [l - 3 ] /* region */
110119}
120+
121+ func jsonToBytes (file string ) ([]byte , error ) {
122+ jsonFile , err := os .Open (file )
123+ if err != nil {
124+ return nil , err
125+ }
126+ defer jsonFile .Close ()
127+ return io .ReadAll (jsonFile )
128+ }
0 commit comments