github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/nsxt_firewall_group_dynamic_security_group_test.go (about)

     1  //go:build network || nsxt || functional || openapi || ALL
     2  
     3  package govcd
     4  
     5  import (
     6  	"github.com/vmware/go-vcloud-director/v2/types/v56"
     7  	. "gopkg.in/check.v1"
     8  )
     9  
    10  // Test_NsxtDynamicSecurityGroup tests out CRUD of Dynamic NSX-T Security Group
    11  //
    12  // Note. Dynamic Security Group is one type of Firewall Group. Other types are IP-Set and Static
    13  // Security Group.
    14  func (vcd *TestVCD) Test_NsxtDynamicSecurityGroup(check *C) {
    15  	skipNoNsxtConfiguration(vcd, check)
    16  	skipOpenApiEndpointTest(vcd, check, types.OpenApiPathVersion1_0_0+types.OpenApiEndpointFirewallGroups)
    17  
    18  	adminOrg, err := vcd.client.GetAdminOrgByName(vcd.config.VCD.Org)
    19  	check.Assert(err, IsNil)
    20  
    21  	vdcGroup, err := adminOrg.GetVdcGroupByName(vcd.config.VCD.Nsxt.VdcGroup)
    22  	check.Assert(err, IsNil)
    23  
    24  	dynamicSecGroupDefinition := &types.NsxtFirewallGroup{
    25  		Name:        check.TestName(),
    26  		Description: check.TestName() + "-Description",
    27  		TypeValue:   types.FirewallGroupTypeVmCriteria,
    28  		OwnerRef:    &types.OpenApiReference{ID: vdcGroup.VdcGroup.Id},
    29  		VmCriteria: []types.NsxtFirewallGroupVmCriteria{
    30  			{
    31  				VmCriteriaRule: []types.NsxtFirewallGroupVmCriteriaRule{
    32  					{
    33  						AttributeType:  "VM_TAG",
    34  						Operator:       "EQUALS",
    35  						AttributeValue: "string",
    36  					}, // Boolean AND
    37  					{
    38  						AttributeType:  "VM_TAG",
    39  						Operator:       "CONTAINS",
    40  						AttributeValue: "substring",
    41  					}, // Boolean AND
    42  					{
    43  						AttributeType:  "VM_TAG",
    44  						Operator:       "STARTS_WITH",
    45  						AttributeValue: "substring",
    46  					}, // Boolean AND
    47  					{
    48  						AttributeType:  "VM_TAG",
    49  						Operator:       "ENDS_WITH",
    50  						AttributeValue: "substring",
    51  					}, // Boolean AND
    52  				},
    53  			}, // Boolean OR
    54  			{
    55  				VmCriteriaRule: []types.NsxtFirewallGroupVmCriteriaRule{
    56  					{
    57  						AttributeType:  "VM_NAME",
    58  						Operator:       "CONTAINS",
    59  						AttributeValue: "substring",
    60  					}, // Boolean AND
    61  					{
    62  						AttributeType:  "VM_NAME",
    63  						Operator:       "STARTS_WITH",
    64  						AttributeValue: "substring",
    65  					}, // Boolean AND
    66  				},
    67  			},
    68  		},
    69  	}
    70  
    71  	createdDynamicGroup, err := vdcGroup.CreateNsxtFirewallGroup(dynamicSecGroupDefinition)
    72  	check.Assert(err, IsNil)
    73  	check.Assert(createdDynamicGroup, NotNil)
    74  
    75  	openApiEndpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointFirewallGroups + createdDynamicGroup.NsxtFirewallGroup.ID
    76  	AddToCleanupListOpenApi(createdDynamicGroup.NsxtFirewallGroup.Name, check.TestName(), openApiEndpoint)
    77  
    78  	check.Assert(createdDynamicGroup.NsxtFirewallGroup.ID, Not(Equals), "")
    79  	check.Assert(createdDynamicGroup.NsxtFirewallGroup.OwnerRef.Name, Equals, vcd.config.VCD.Nsxt.VdcGroup)
    80  	check.Assert(createdDynamicGroup.NsxtFirewallGroup.TypeValue, Equals, types.FirewallGroupTypeVmCriteria)
    81  
    82  	// Update
    83  	createdDynamicGroup.NsxtFirewallGroup.Description = "updated-description"
    84  	createdDynamicGroup.NsxtFirewallGroup.Name = check.TestName() + "-updated"
    85  
    86  	updatedDynamicGroup, err := createdDynamicGroup.Update(createdDynamicGroup.NsxtFirewallGroup)
    87  	check.Assert(err, IsNil)
    88  	check.Assert(updatedDynamicGroup, NotNil)
    89  	check.Assert(updatedDynamicGroup.NsxtFirewallGroup, DeepEquals, createdDynamicGroup.NsxtFirewallGroup)
    90  
    91  	check.Assert(updatedDynamicGroup, DeepEquals, createdDynamicGroup)
    92  
    93  	// Remove Dynamic Security Group
    94  	err = updatedDynamicGroup.Delete()
    95  	check.Assert(err, IsNil)
    96  }