@@ -331,69 +331,68 @@ func resourceTencentCloudSecurityGroupRuleSetUpdate(d *schema.ResourceData, m in
331331 request .SecurityGroupPolicySet = & vpc.SecurityGroupPolicySet {}
332332 request .SortPolicys = helper .Bool (true )
333333
334- ingressRules := d .Get ("ingress" ).([]interface {})
335- egressRules := d .Get ("egress" ).([]interface {})
336- if len (ingressRules ) == 0 && len (egressRules ) == 0 {
334+ oldIngress , newIngress := d .GetChange ("ingress" )
335+ oldEgress , newEgress := d .GetChange ("egress" )
336+
337+ oldIngressList := oldIngress .([]interface {})
338+ newIngressList := newIngress .([]interface {})
339+ oldEgressList := oldEgress .([]interface {})
340+ newEgressList := newEgress .([]interface {})
341+
342+ if len (newIngressList ) == 0 && len (newEgressList ) == 0 {
337343 ver = 0
338- } else if len (ingressRules ) != 0 && len (egressRules ) == 0 {
339- request .SecurityGroupPolicySet .Ingress , err = unmarshalSecurityPolicy (ingressRules )
344+
345+ } else if len (newIngressList ) != 0 && len (newEgressList ) == 0 {
346+ request .SecurityGroupPolicySet .Ingress , err = unmarshalSecurityPolicy (newIngressList )
340347 if err != nil {
341348 return err
342349 }
343350
344- result , e := service .DescribeSecurityGroupPolicies (ctx , securityGroupId )
345- if e != nil {
346- return e
347- }
348-
349- if len (result .Egress ) > 0 {
350- tmpList := []* int64 {}
351- egressRulesList := marshalSecurityPolicy (result .Egress )
352- for _ , v := range egressRulesList {
351+ if len (oldEgressList ) > 0 {
352+ tmpList := make ([]* int64 , 0 )
353+ for _ , v := range oldEgressList {
353354 item := v .(map [string ]interface {})
354- tmpList = append (tmpList , item ["policy_index" ].(* int64 ))
355+ policyIndex := int64 (item ["policy_index" ].(int ))
356+ tmpList = append (tmpList , & policyIndex )
355357 }
356358
357- e = service .DeleteSecurityGroupPolicyByPolicyIndexList (ctx , securityGroupId , tmpList , "egress" )
359+ e : = service .DeleteSecurityGroupPolicyByPolicyIndexList (ctx , securityGroupId , tmpList , "egress" )
358360 if e != nil {
359361 return e
360362 }
361363
362364 ver += 1
363365 }
364366
365- } else if len (ingressRules ) == 0 && len (egressRules ) != 0 {
366- request .SecurityGroupPolicySet .Egress , err = unmarshalSecurityPolicy (egressRules )
367+ } else if len (newIngressList ) == 0 && len (newEgressList ) != 0 {
368+ request .SecurityGroupPolicySet .Egress , err = unmarshalSecurityPolicy (newEgressList )
367369 if err != nil {
368370 return err
369371 }
370372
371- result , e := service .DescribeSecurityGroupPolicies (ctx , securityGroupId )
372- if e != nil {
373- return e
374- }
375-
376- if len (result .Ingress ) > 0 {
377- tmpList := []* int64 {}
378- ingressRulesList := marshalSecurityPolicy (result .Ingress )
379- for _ , v := range ingressRulesList {
373+ if len (oldIngressList ) > 0 {
374+ tmpList := make ([]* int64 , 0 )
375+ for _ , v := range oldIngressList {
380376 item := v .(map [string ]interface {})
381- tmpList = append (tmpList , item ["policy_index" ].(* int64 ))
377+ policyIndex := int64 (item ["policy_index" ].(int ))
378+ tmpList = append (tmpList , & policyIndex )
382379 }
383- e = service .DeleteSecurityGroupPolicyByPolicyIndexList (ctx , securityGroupId , tmpList , "ingress" )
380+
381+ e := service .DeleteSecurityGroupPolicyByPolicyIndexList (ctx , securityGroupId , tmpList , "ingress" )
384382 if e != nil {
385383 return e
386384 }
387385
388386 ver += 1
389387 }
388+
390389 } else {
391- request .SecurityGroupPolicySet .Ingress , err = unmarshalSecurityPolicy (ingressRules )
390+ request .SecurityGroupPolicySet .Ingress , err = unmarshalSecurityPolicy (newIngressList )
392391 if err != nil {
393392 return err
394393 }
395394
396- request .SecurityGroupPolicySet .Egress , err = unmarshalSecurityPolicy (egressRules )
395+ request .SecurityGroupPolicySet .Egress , err = unmarshalSecurityPolicy (newEgressList )
397396 if err != nil {
398397 return err
399398 }
0 commit comments