@@ -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
@@ -43,6 +43,8 @@ func init() {
4343 cmdSecurityGroups .Flag .StringVar (& securityGroupsName , []string {"n" , "-name" }, "" , "SecurityGroup's name" )
4444 cmdSecurityGroups .Flag .StringVar (& securityGroupsDesc , []string {"d" , "-description" }, "" , "SecurityGroup's description" )
4545 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" )
4648 subCmdSecurityGroup = map [string ]func (cmd * Command , args []string ) error {
4749 "list-groups" : listSecurityGroup ,
4850 "new-group" : newSecurityGroup ,
@@ -58,10 +60,12 @@ func init() {
5860}
5961
6062// Flags
61- var securityGroupsHelp bool // -h, --help flag
62- var securityGroupsName string // -n, --name flag
63- var securityGroupsDesc string // -d, --description flag
64- var securityGroupsStateful bool // -s, --stateful 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
6569
6670// SubCommand
6771var subCmdSecurityGroup map [string ]func (cmd * Command , args []string ) error
@@ -83,17 +87,31 @@ func printRawMode(out io.Writer, data interface{}) error {
8387 return nil
8488}
8589
90+ func isValidPolicy (policy string ) bool {
91+ switch policy {
92+ case
93+ "accept" ,
94+ "drop" :
95+ return true
96+ }
97+ return false
98+ }
99+
86100func newSecurityGroup (cmd * Command , args []string ) error {
87101 fmt .Println (securityGroupsDesc )
88102 fmt .Println (securityGroupsName )
89- if securityGroupsName == "" || securityGroupsDesc == "" {
103+ if securityGroupsName == "" || securityGroupsDesc == "" ||
104+ ! isValidPolicy (securityGroupsInboundDefaultPolicy ) ||
105+ ! isValidPolicy (securityGroupsOutboundDefaultPolicy ) {
90106 return cmd .PrintShortUsage ()
91107 }
92108 return cmd .API .PostSecurityGroup (api.ScalewayNewSecurityGroup {
93- Organization : cmd .API .Organization ,
94- Name : securityGroupsName ,
95- Description : securityGroupsDesc ,
96- Stateful : securityGroupsStateful ,
109+ Organization : cmd .API .Organization ,
110+ Name : securityGroupsName ,
111+ Description : securityGroupsDesc ,
112+ Stateful : securityGroupsStateful ,
113+ InboundDefaultPolicy : securityGroupsInboundDefaultPolicy ,
114+ OutboundDefaultPolicy : securityGroupsOutboundDefaultPolicy ,
97115 })
98116}
99117
@@ -103,10 +121,12 @@ func updateSecurityGroup(cmd *Command, args []string) error {
103121 return cmd .PrintShortUsage ()
104122 }
105123 return cmd .API .PutSecurityGroup (api.ScalewayUpdateSecurityGroup {
106- Organization : cmd .API .Organization ,
107- Name : securityGroupsName ,
108- Description : securityGroupsDesc ,
109- Stateful : securityGroupsStateful ,
124+ Organization : cmd .API .Organization ,
125+ Name : securityGroupsName ,
126+ Description : securityGroupsDesc ,
127+ Stateful : securityGroupsStateful ,
128+ InboundDefaultPolicy : securityGroupsInboundDefaultPolicy ,
129+ OutboundDefaultPolicy : securityGroupsOutboundDefaultPolicy ,
110130 }, args [0 ])
111131}
112132
0 commit comments