@@ -25,8 +25,8 @@ var cmdSecurityGroups = &Command{
2525
2626 $ scw _security-groups list-groups
2727 $ scw _security-groups show-group SGID
28- $ scw _security-groups new-group --name=NAME --desc =DESC
29- $ scw _security-groups update-group SGID --name=NAME --desc=DESC
28+ $ scw _security-groups new-group --name=NAME --description =DESC --stateful=[true, false] --inbound=[accept, drop] --outbound=[accept, drop]
29+ $ scw _security-groups update-group SGID --name=NAME --desc=DESC --stateful=[true, false] --inbound=[accept, drop] --outbound=[accept, drop]
3030 $ scw _security-groups delete-group SGID
3131
3232 $ scw _security-groups list-rules SGID
@@ -42,6 +42,9 @@ func init() {
4242 cmdSecurityGroups .Flag .BoolVar (& securityGroupsHelp , []string {"h" , "-help" }, false , "Print usage" )
4343 cmdSecurityGroups .Flag .StringVar (& securityGroupsName , []string {"n" , "-name" }, "" , "SecurityGroup's name" )
4444 cmdSecurityGroups .Flag .StringVar (& securityGroupsDesc , []string {"d" , "-description" }, "" , "SecurityGroup's description" )
45+ cmdSecurityGroups .Flag .BoolVar (& securityGroupsStateful , []string {"s" , "-stateful" }, false , "is SecurityGroup stateful" )
46+ cmdSecurityGroups .Flag .StringVar (& securityGroupsInboundDefaultPolicy , []string {"i" , "-inbound" }, "accept" , "Inbound default policy" )
47+ cmdSecurityGroups .Flag .StringVar (& securityGroupsOutboundDefaultPolicy , []string {"o" , "-outbound" }, "accept" , "Outbound default policy" )
4548 subCmdSecurityGroup = map [string ]func (cmd * Command , args []string ) error {
4649 "list-groups" : listSecurityGroup ,
4750 "new-group" : newSecurityGroup ,
@@ -57,9 +60,12 @@ func init() {
5760}
5861
5962// Flags
60- var securityGroupsHelp bool // -h, --help flag
61- var securityGroupsName string // -n, --name flag
62- var securityGroupsDesc string // -d, --description flag
63+ var securityGroupsHelp bool // -h, --help flag
64+ var securityGroupsName string // -n, --name flag
65+ var securityGroupsDesc string // -d, --description flag
66+ var securityGroupsStateful bool // -s, --stateful flag
67+ var securityGroupsInboundDefaultPolicy string // -i, --inbound flag
68+ var securityGroupsOutboundDefaultPolicy string // -o, --outbound flag
6369
6470// SubCommand
6571var subCmdSecurityGroup map [string ]func (cmd * Command , args []string ) error
@@ -81,16 +87,31 @@ func printRawMode(out io.Writer, data interface{}) error {
8187 return nil
8288}
8389
90+ func isValidPolicy (policy string ) bool {
91+ switch policy {
92+ case
93+ "accept" ,
94+ "drop" :
95+ return true
96+ }
97+ return false
98+ }
99+
84100func newSecurityGroup (cmd * Command , args []string ) error {
85101 fmt .Println (securityGroupsDesc )
86102 fmt .Println (securityGroupsName )
87- if securityGroupsName == "" || securityGroupsDesc == "" {
103+ if securityGroupsName == "" || securityGroupsDesc == "" ||
104+ ! isValidPolicy (securityGroupsInboundDefaultPolicy ) ||
105+ ! isValidPolicy (securityGroupsOutboundDefaultPolicy ) {
88106 return cmd .PrintShortUsage ()
89107 }
90108 return cmd .API .PostSecurityGroup (api.ScalewayNewSecurityGroup {
91- Organization : cmd .API .Organization ,
92- Name : securityGroupsName ,
93- Description : securityGroupsDesc ,
109+ Organization : cmd .API .Organization ,
110+ Name : securityGroupsName ,
111+ Description : securityGroupsDesc ,
112+ Stateful : securityGroupsStateful ,
113+ InboundDefaultPolicy : securityGroupsInboundDefaultPolicy ,
114+ OutboundDefaultPolicy : securityGroupsOutboundDefaultPolicy ,
94115 })
95116}
96117
@@ -100,9 +121,12 @@ func updateSecurityGroup(cmd *Command, args []string) error {
100121 return cmd .PrintShortUsage ()
101122 }
102123 return cmd .API .PutSecurityGroup (api.ScalewayUpdateSecurityGroup {
103- Organization : cmd .API .Organization ,
104- Name : securityGroupsName ,
105- Description : securityGroupsDesc ,
124+ Organization : cmd .API .Organization ,
125+ Name : securityGroupsName ,
126+ Description : securityGroupsDesc ,
127+ Stateful : securityGroupsStateful ,
128+ InboundDefaultPolicy : securityGroupsInboundDefaultPolicy ,
129+ OutboundDefaultPolicy : securityGroupsOutboundDefaultPolicy ,
106130 }, args [0 ])
107131}
108132
0 commit comments