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 }