@@ -21,8 +21,9 @@ import (
2121
2222// Instance statuses
2323const (
24- InstanceStatusStopped = "SHUTOFF"
25- InstanceStatusRunning = "ACTIVE"
24+ InstanceStatusStopped = "SHUTOFF"
25+ InstanceStatusRunning = "ACTIVE"
26+ DefaultSecurityGroupDescription = "Automatically created by docker-machine for OTC"
2627)
2728
2829// InitCompute initializes Compute v2 service
@@ -141,6 +142,19 @@ func (c *Client) DeleteInstance(instanceID string) error {
141142 return servers .Delete (c .ComputeV2 , instanceID ).Err
142143}
143144
145+ // GetInstanceSG get details of ECS instance security groups
146+ func (c * Client ) GetInstanceSG (instanceID string ) ([]secgroups.SecurityGroup , error ) {
147+ allPages , err := secgroups .ListByServer (c .ComputeV2 , instanceID ).AllPages ()
148+ if err != nil {
149+ return nil , err
150+ }
151+ securityGroups , err := secgroups .ExtractSecurityGroups (allPages )
152+ if err != nil {
153+ return nil , err
154+ }
155+ return securityGroups , nil
156+ }
157+
144158// FindInstance returns instance ID by instance Name
145159func (c * Client ) FindInstance (name string ) (string , error ) {
146160 listOpts := servers.ListOpts {Name : name }
@@ -306,7 +320,7 @@ type PortRange struct {
306320func (c * Client ) CreateSecurityGroup (securityGroupName string , ports ... PortRange ) (* secgroups.SecurityGroup , error ) {
307321 opts := secgroups.CreateOpts {
308322 Name : securityGroupName ,
309- Description : "Automatically created by docker-machine for OTC" ,
323+ Description : DefaultSecurityGroupDescription ,
310324 }
311325 sg , err := secgroups .Create (c .ComputeV2 , opts ).Extract ()
312326 if err != nil {
@@ -364,6 +378,12 @@ func (c *Client) FindSecurityGroups(secGroups []string) ([]string, error) {
364378 return secGroupIDs , nil
365379}
366380
381+ // SecurityGroupExist check if security group still exist
382+ func (c * Client ) SecurityGroupExist (id string ) bool {
383+ err := secgroups .Get (c .ComputeV2 , id ).Err
384+ return err == nil
385+ }
386+
367387// DeleteSecurityGroup deletes managed security group
368388func (c * Client ) DeleteSecurityGroup (securityGroupID string ) error {
369389 return secgroups .Delete (c .ComputeV2 , securityGroupID ).Err
0 commit comments