security_groups.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. package ecs
  2. import (
  3. "github.com/denverdino/aliyungo/common"
  4. "github.com/denverdino/aliyungo/util"
  5. )
  6. type NicType string
  7. const (
  8. NicTypeInternet = NicType("internet")
  9. NicTypeIntranet = NicType("intranet")
  10. )
  11. type IpProtocol string
  12. const (
  13. IpProtocolAll = IpProtocol("all")
  14. IpProtocolTCP = IpProtocol("tcp")
  15. IpProtocolUDP = IpProtocol("udp")
  16. IpProtocolICMP = IpProtocol("icmp")
  17. IpProtocolGRE = IpProtocol("gre")
  18. )
  19. type PermissionPolicy string
  20. const (
  21. PermissionPolicyAccept = PermissionPolicy("accept")
  22. PermissionPolicyDrop = PermissionPolicy("drop")
  23. )
  24. type DescribeSecurityGroupAttributeArgs struct {
  25. SecurityGroupId string
  26. RegionId common.Region
  27. NicType NicType //enum for internet (default) |intranet
  28. }
  29. //
  30. // You can read doc at http://docs.aliyun.com/#/pub/ecs/open-api/datatype&permissiontype
  31. type PermissionType struct {
  32. IpProtocol IpProtocol
  33. PortRange string
  34. SourceCidrIp string
  35. SourceGroupId string
  36. SourceGroupOwnerAccount string
  37. Policy PermissionPolicy
  38. NicType NicType
  39. }
  40. type DescribeSecurityGroupAttributeResponse struct {
  41. common.Response
  42. SecurityGroupId string
  43. SecurityGroupName string
  44. RegionId common.Region
  45. Description string
  46. Permissions struct {
  47. Permission []PermissionType
  48. }
  49. VpcId string
  50. }
  51. //
  52. // You can read doc at http://docs.aliyun.com/#/pub/ecs/open-api/securitygroup&describesecuritygroupattribute
  53. func (client *Client) DescribeSecurityGroupAttribute(args *DescribeSecurityGroupAttributeArgs) (response *DescribeSecurityGroupAttributeResponse, err error) {
  54. response = &DescribeSecurityGroupAttributeResponse{}
  55. err = client.Invoke("DescribeSecurityGroupAttribute", args, response)
  56. if err != nil {
  57. return nil, err
  58. }
  59. return response, nil
  60. }
  61. type DescribeSecurityGroupsArgs struct {
  62. RegionId common.Region
  63. VpcId string
  64. common.Pagination
  65. }
  66. //
  67. // You can read doc at http://docs.aliyun.com/#/pub/ecs/open-api/datatype&securitygroupitemtype
  68. type SecurityGroupItemType struct {
  69. SecurityGroupId string
  70. SecurityGroupName string
  71. Description string
  72. VpcId string
  73. CreationTime util.ISO6801Time
  74. }
  75. type DescribeSecurityGroupsResponse struct {
  76. common.Response
  77. common.PaginationResult
  78. RegionId common.Region
  79. SecurityGroups struct {
  80. SecurityGroup []SecurityGroupItemType
  81. }
  82. }
  83. // DescribeSecurityGroups describes security groups
  84. //
  85. // You can read doc at http://docs.aliyun.com/#/pub/ecs/open-api/securitygroup&describesecuritygroups
  86. func (client *Client) DescribeSecurityGroups(args *DescribeSecurityGroupsArgs) (securityGroupItems []SecurityGroupItemType, pagination *common.PaginationResult, err error) {
  87. args.Validate()
  88. response := DescribeSecurityGroupsResponse{}
  89. err = client.Invoke("DescribeSecurityGroups", args, &response)
  90. if err != nil {
  91. return nil, nil, err
  92. }
  93. return response.SecurityGroups.SecurityGroup, &response.PaginationResult, nil
  94. }
  95. type CreateSecurityGroupArgs struct {
  96. RegionId common.Region
  97. SecurityGroupName string
  98. Description string
  99. VpcId string
  100. ClientToken string
  101. }
  102. type CreateSecurityGroupResponse struct {
  103. common.Response
  104. SecurityGroupId string
  105. }
  106. // CreateSecurityGroup creates security group
  107. //
  108. // You can read doc at http://docs.aliyun.com/#/pub/ecs/open-api/securitygroup&createsecuritygroup
  109. func (client *Client) CreateSecurityGroup(args *CreateSecurityGroupArgs) (securityGroupId string, err error) {
  110. response := CreateSecurityGroupResponse{}
  111. err = client.Invoke("CreateSecurityGroup", args, &response)
  112. if err != nil {
  113. return "", err
  114. }
  115. return response.SecurityGroupId, err
  116. }
  117. type DeleteSecurityGroupArgs struct {
  118. RegionId common.Region
  119. SecurityGroupId string
  120. }
  121. type DeleteSecurityGroupResponse struct {
  122. common.Response
  123. }
  124. // DeleteSecurityGroup deletes security group
  125. //
  126. // You can read doc at http://docs.aliyun.com/#/pub/ecs/open-api/securitygroup&deletesecuritygroup
  127. func (client *Client) DeleteSecurityGroup(regionId common.Region, securityGroupId string) error {
  128. args := DeleteSecurityGroupArgs{
  129. RegionId: regionId,
  130. SecurityGroupId: securityGroupId,
  131. }
  132. response := DeleteSecurityGroupResponse{}
  133. err := client.Invoke("DeleteSecurityGroup", &args, &response)
  134. return err
  135. }
  136. type ModifySecurityGroupAttributeArgs struct {
  137. RegionId common.Region
  138. SecurityGroupId string
  139. SecurityGroupName string
  140. Description string
  141. }
  142. type ModifySecurityGroupAttributeResponse struct {
  143. common.Response
  144. }
  145. // ModifySecurityGroupAttribute modifies attribute of security group
  146. //
  147. // You can read doc at http://docs.aliyun.com/#/pub/ecs/open-api/securitygroup&modifysecuritygroupattribute
  148. func (client *Client) ModifySecurityGroupAttribute(args *ModifySecurityGroupAttributeArgs) error {
  149. response := ModifySecurityGroupAttributeResponse{}
  150. err := client.Invoke("ModifySecurityGroupAttribute", args, &response)
  151. return err
  152. }
  153. type AuthorizeSecurityGroupArgs struct {
  154. SecurityGroupId string
  155. RegionId common.Region
  156. IpProtocol IpProtocol
  157. PortRange string
  158. SourceGroupId string
  159. SourceGroupOwnerAccount string
  160. SourceCidrIp string // IPv4 only, default 0.0.0.0/0
  161. Policy PermissionPolicy // enum of accept (default) | drop
  162. Priority int // 1 - 100, default 1
  163. NicType NicType // enum of internet | intranet (default)
  164. }
  165. type AuthorizeSecurityGroupResponse struct {
  166. common.Response
  167. }
  168. // AuthorizeSecurityGroup authorize permissions to security group
  169. //
  170. // You can read doc at http://docs.aliyun.com/#/pub/ecs/open-api/securitygroup&authorizesecuritygroup
  171. func (client *Client) AuthorizeSecurityGroup(args *AuthorizeSecurityGroupArgs) error {
  172. response := AuthorizeSecurityGroupResponse{}
  173. err := client.Invoke("AuthorizeSecurityGroup", args, &response)
  174. return err
  175. }