Skip to content

Commit

Permalink
Merge pull request #33 from fugue/feature/RM-5553/waivers-fugue-cli
Browse files Browse the repository at this point in the history
[RM-5553]Create waivers with wildcards
  • Loading branch information
mattm-fugue committed May 24, 2021
2 parents 1ba6807 + 6de10bd commit 53063c4
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 16 deletions.
23 changes: 19 additions & 4 deletions cmd/createRuleWaiver.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ type createRuleWaiverOptions struct {
ResourceID string
ResourceType string
ResourceProvider string
ResourceTag string
}

// NewCreateRuleWaiverCommand returns a command that creates a custom rule
Expand All @@ -28,7 +29,7 @@ func NewCreateRuleWaiverCommand() *cobra.Command {
cmd := &cobra.Command{
Use: "rule-waiver",
Short: "Create a rule waiver",
Aliases: []string{"waiver", "rule_waiver"},
Aliases: []string{"waiver", "rule_waiver", "rule-waivers", "waivers", "rule_waivers"},
Run: func(cmd *cobra.Command, args []string) {

client, auth := getClient()
Expand All @@ -42,6 +43,7 @@ func NewCreateRuleWaiverCommand() *cobra.Command {
ResourceID: &opts.ResourceID,
ResourceType: &opts.ResourceType,
ResourceProvider: &opts.ResourceProvider,
ResourceTag: opts.ResourceTag,
}

resp, err := client.RuleWaivers.CreateRuleWaiver(params, auth)
Expand All @@ -56,6 +58,13 @@ func NewCreateRuleWaiverCommand() *cobra.Command {

waiver := resp.Payload

var item Item
if waiver.ResourceTag != nil {
item = Item{"RESOURCE_TAG", *waiver.ResourceTag}
} else {
item = Item{"RESOURCE_TAG", "-"}
}

items := []interface{}{
Item{"RULE_WAIVER_ID", *waiver.ID},
Item{"NAME", *waiver.Name},
Expand All @@ -66,6 +75,7 @@ func NewCreateRuleWaiverCommand() *cobra.Command {
Item{"RESOURCE_ID", *waiver.ResourceID},
Item{"RESOURCE_TYPE", *waiver.ResourceType},
Item{"RESOURCE_PROVIDER", *waiver.ResourceProvider},
item,
Item{"CREATED_AT", format.Unix(waiver.CreatedAt)},
Item{"CREATED_BY", waiver.CreatedBy},
Item{"CREATED_BY_DISPLAY_NAME", waiver.CreatedByDisplayName},
Expand All @@ -91,13 +101,18 @@ func NewCreateRuleWaiverCommand() *cobra.Command {
cmd.Flags().StringVar(&opts.Comment, "comment", "", "Comment describing the rule waiver purpose")
cmd.Flags().StringVar(&opts.RuleID, "rule-id", "", "Rule ID (e.g. FG_R00217, <UUID Custom Rule ID>)")
cmd.Flags().StringVar(&opts.EnvironmentID, "environment-id", "", "Environment ID")
cmd.Flags().StringVar(&opts.ResourceID, "resource-id", "*", "Resource ID")
cmd.Flags().StringVar(&opts.ResourceType, "resource-type", "*", "Resource Type (e.g. AWS.S3.Bucket, '*')")
cmd.Flags().StringVar(&opts.ResourceProvider, "resource-provider", "*", "Resource Provider (e.g. aws.us-east-1, azure, '*')")
cmd.Flags().StringVar(&opts.ResourceID, "resource-id", "", "Resource ID (e.g. resource-123, 'resource-*')")
cmd.Flags().StringVar(&opts.ResourceType, "resource-type", "", "Resource Type (e.g. AWS.S3.Bucket, '*')")
cmd.Flags().StringVar(&opts.ResourceProvider, "resource-provider", "", "Resource Provider (e.g. aws.us-east-1, azure, '*')")
// resource-tag is optional in the API: if resource-tag == "", the CLI is not posting the resource-tag json field
cmd.Flags().StringVar(&opts.ResourceTag, "resource-tag", "", "Resource tag (e.g. 'env:prod', 'env:*', '*')")

cmd.MarkFlagRequired("name")
cmd.MarkFlagRequired("rule-id")
cmd.MarkFlagRequired("environment-id")
cmd.MarkFlagRequired("resource-id")
cmd.MarkFlagRequired("resource-type")
cmd.MarkFlagRequired("resource-provider")

return cmd
}
Expand Down
7 changes: 7 additions & 0 deletions cmd/getRuleWaiver.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@ func NewGetRuleWaiverCommand() *cobra.Command {
}
}

var item Item
if waiver.ResourceTag != nil {
item = Item{"RESOURCE_TAG", *waiver.ResourceTag}
} else {
item = Item{"RESOURCE_TAG", "-"}
}
items := []interface{}{
Item{"RULE_WAIVER_ID", *waiver.ID},
Item{"NAME", *waiver.Name},
Expand All @@ -54,6 +60,7 @@ func NewGetRuleWaiverCommand() *cobra.Command {
Item{"RESOURCE_ID", *waiver.ResourceID},
Item{"RESOURCE_TYPE", *waiver.ResourceType},
Item{"RESOURCE_PROVIDER", *waiver.ResourceProvider},
item,
Item{"CREATED_AT", format.Unix(waiver.CreatedAt)},
Item{"CREATED_BY", waiver.CreatedBy},
Item{"CREATED_BY_DISPLAY_NAME", waiver.CreatedByDisplayName},
Expand Down
23 changes: 16 additions & 7 deletions cmd/listRuleWaivers.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ type listRuleWaiversOptions struct {
ResourceIDFilter string
ResourceProviderFilter string
ResourceTypeFilter string
ResourceTagFilter string
Offset int64
MaxItems int64
OrderBy string
Expand All @@ -37,6 +38,7 @@ type listRuleWaiversViewItem struct {
ResourceID string
ResourceProvider string
ResourceType string
ResourceTag string
CreatedAt string
CreatedBy string
CreatedByDisplayName string
Expand Down Expand Up @@ -131,9 +133,7 @@ func NewListRuleWaiversCommand() *cobra.Command {
}
resp, err := client.RuleWaivers.ListRuleWaivers(params, auth)
CheckErr(err)
for _, waiver := range resp.Payload.Items {
waivers = append(waivers, waiver)
}
waivers = append(waivers, resp.Payload.Items...)
if opts.FetchAll && resp.Payload.IsTruncated {
offset = resp.Payload.NextOffset
continue
Expand All @@ -143,23 +143,31 @@ func NewListRuleWaiversCommand() *cobra.Command {

var rows []interface{}
for _, waiver := range waivers {
rows = append(rows, listRuleWaiversViewItem{

resourceTag := "-"
if waiver.ResourceTag != nil {
resourceTag = *waiver.ResourceTag
}
row := listRuleWaiversViewItem{
ID: *waiver.ID,
Name: *waiver.Name,
Comment: *&waiver.Comment,
Comment: waiver.Comment,
EnvironmentID: *waiver.EnvironmentID,
EnvironmentName: *&waiver.EnvironmentName,
EnvironmentName: waiver.EnvironmentName,
RuleID: *waiver.RuleID,
ResourceID: *waiver.ResourceID,
ResourceType: *waiver.ResourceType,
ResourceProvider: *waiver.ResourceProvider,
ResourceTag: resourceTag,
CreatedAt: format.Unix(waiver.CreatedAt),
CreatedBy: waiver.CreatedBy,
CreatedByDisplayName: waiver.CreatedByDisplayName,
UpdatedAt: format.Unix(waiver.UpdatedAt),
UpdatedBy: waiver.UpdatedBy,
UpdatedByDisplayName: waiver.UpdatedByDisplayName,
})
}
rows = append(rows, row)

}

table, err := format.Table(format.TableOpts{
Expand All @@ -184,6 +192,7 @@ func NewListRuleWaiversCommand() *cobra.Command {
"ResourceID",
"ResourceType",
"ResourceProvider",
"ResourceTag",
}

cmd.Flags().StringVar(&opts.SearchQuery, "search", "", "Combined filter for ID, Name, and Rule ID")
Expand Down
7 changes: 5 additions & 2 deletions models/create_group_input.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions models/create_rule_waiver_input.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 0 additions & 3 deletions models/provider_options_google.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions models/rule_waiver.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 53063c4

Please sign in to comment.