github.com/vmware/go-vcloud-director/v2@v2.24.0/govcd/tenant_context_test.go (about) 1 //go:build functional || openapi || ALL 2 3 package govcd 4 5 import ( 6 "fmt" 7 8 "github.com/vmware/go-vcloud-director/v2/types/v56" 9 . "gopkg.in/check.v1" 10 ) 11 12 // Test_TenantContext checks that different members of a hierarchy 13 // with an Admin Org at its top are all reporting the same tenant context 14 // using different methods to retrieve each member 15 // When running with -vcd-verbose, you should see a long list of entities 16 // with the corresponding tenant context. If no errors occur, the tenant context 17 // values in all rows should be the same. 18 func (vcd *TestVCD) Test_TenantContext(check *C) { 19 // Check the tenant context of the AdminOrg (top of the hierarchy) 20 adminOrg, err := vcd.client.GetAdminOrgByName(vcd.config.VCD.Org) 21 check.Assert(err, IsNil) 22 check.Assert(adminOrg, NotNil) 23 check.Assert(adminOrg.TenantContext, NotNil) 24 check.Assert(adminOrg.TenantContext.OrgId, Equals, extractUuid(adminOrg.AdminOrg.ID)) 25 check.Assert(adminOrg.TenantContext.OrgName, Equals, adminOrg.AdminOrg.Name) 26 adminOrgTenantContext := adminOrg.TenantContext 27 checkTenantContext(check, "adminOrg by name", adminOrgTenantContext, adminOrgTenantContext) 28 29 adminOrgById, err := vcd.client.GetAdminOrgById(adminOrg.AdminOrg.ID) 30 check.Assert(err, IsNil) 31 check.Assert(adminOrgById, NotNil) 32 check.Assert(adminOrgById.TenantContext, NotNil) 33 check.Assert(adminOrgById.TenantContext.OrgId, Equals, extractUuid(adminOrgById.AdminOrg.ID)) 34 check.Assert(adminOrgById.TenantContext.OrgName, Equals, adminOrgById.AdminOrg.Name) 35 adminOrgByIdTenantContext := adminOrgById.TenantContext 36 checkTenantContext(check, "adminOrg by ID", adminOrgByIdTenantContext, adminOrgTenantContext) 37 38 adminOrgByNameOrId, err := vcd.client.GetAdminOrgByNameOrId(adminOrg.AdminOrg.ID) 39 check.Assert(err, IsNil) 40 check.Assert(adminOrgByNameOrId, NotNil) 41 check.Assert(adminOrgByNameOrId.TenantContext, NotNil) 42 check.Assert(adminOrgByNameOrId.TenantContext.OrgId, Equals, extractUuid(adminOrgByNameOrId.AdminOrg.ID)) 43 check.Assert(adminOrgByNameOrId.TenantContext.OrgName, Equals, adminOrgByNameOrId.AdminOrg.Name) 44 adminOrgByNameOrIdTenantContext := adminOrgByNameOrId.TenantContext 45 checkTenantContext(check, "adminOrg by ID", adminOrgByNameOrIdTenantContext, adminOrgTenantContext) 46 47 // Check the tenant context of the Org (top of the hierarchy) 48 org, err := vcd.client.GetOrgByName(vcd.config.VCD.Org) 49 check.Assert(err, IsNil) 50 check.Assert(org, NotNil) 51 check.Assert(org.TenantContext, NotNil) 52 check.Assert(org.TenantContext.OrgId, Equals, extractUuid(org.Org.ID)) 53 check.Assert(org.TenantContext.OrgName, Equals, org.Org.Name) 54 orgTenantContext := org.TenantContext 55 checkTenantContext(check, "org by name", orgTenantContext, adminOrgTenantContext) 56 57 orgById, err := vcd.client.GetOrgById(org.Org.ID) 58 check.Assert(err, IsNil) 59 check.Assert(orgById, NotNil) 60 check.Assert(orgById.TenantContext, NotNil) 61 check.Assert(orgById.TenantContext.OrgId, Equals, extractUuid(orgById.Org.ID)) 62 check.Assert(orgById.TenantContext.OrgName, Equals, orgById.Org.Name) 63 orgTenantContext = orgById.TenantContext 64 checkTenantContext(check, "org by ID", orgTenantContext, adminOrgTenantContext) 65 66 orgByNameOrId, err := vcd.client.GetOrgByNameOrId(org.Org.ID) 67 check.Assert(err, IsNil) 68 check.Assert(orgByNameOrId, NotNil) 69 check.Assert(orgByNameOrId.TenantContext, NotNil) 70 check.Assert(orgByNameOrId.TenantContext.OrgId, Equals, extractUuid(orgByNameOrId.Org.ID)) 71 check.Assert(orgByNameOrId.TenantContext.OrgName, Equals, orgByNameOrId.Org.Name) 72 orgTenantContext = orgByNameOrId.TenantContext 73 checkTenantContext(check, "org by name or ID", orgTenantContext, adminOrgTenantContext) 74 75 // Check that an admin VDC depending from our org has the same tenant context 76 adminVdc, err := adminOrg.GetAdminVDCByName(vcd.config.VCD.Vdc, false) 77 check.Assert(err, IsNil) 78 check.Assert(adminVdc, NotNil) 79 adminVdcTenantContext, err := adminVdc.getTenantContext() 80 check.Assert(err, IsNil) 81 checkTenantContext(check, "adminVdc by name", adminVdcTenantContext, adminOrgTenantContext) 82 83 adminVdcById, err := adminOrg.GetAdminVDCById(adminVdc.AdminVdc.ID, false) 84 check.Assert(err, IsNil) 85 check.Assert(adminVdcById, NotNil) 86 adminVdcTenantContext, err = adminVdcById.getTenantContext() 87 check.Assert(err, IsNil) 88 checkTenantContext(check, "adminVdc by ID", adminVdcTenantContext, adminOrgTenantContext) 89 90 adminVdcByNameOrId, err := adminOrg.GetAdminVDCByNameOrId(adminVdc.AdminVdc.ID, false) 91 check.Assert(err, IsNil) 92 check.Assert(adminVdcByNameOrId, NotNil) 93 adminVdcTenantContext, err = adminVdcByNameOrId.getTenantContext() 94 check.Assert(err, IsNil) 95 checkTenantContext(check, "adminVdc by name or ID", adminVdcTenantContext, adminOrgTenantContext) 96 97 // Check that a VDC depending from our org has the same tenant context 98 vdc, err := adminOrg.GetVDCByName(vcd.config.VCD.Vdc, false) 99 check.Assert(err, IsNil) 100 check.Assert(vdc, NotNil) 101 vdcTenantContext, err := vdc.getTenantContext() 102 check.Assert(err, IsNil) 103 checkTenantContext(check, "VDC by name", vdcTenantContext, adminOrgTenantContext) 104 105 vdcById, err := adminOrg.GetVDCById(vdc.Vdc.ID, false) 106 check.Assert(err, IsNil) 107 check.Assert(vdcById, NotNil) 108 vdcTenantContext, err = vdcById.getTenantContext() 109 check.Assert(err, IsNil) 110 checkTenantContext(check, "VDC by ID", vdcTenantContext, adminOrgTenantContext) 111 112 vdcByNameOrId, err := adminOrg.GetVDCByNameOrId(vdc.Vdc.ID, false) 113 check.Assert(err, IsNil) 114 check.Assert(vdcByNameOrId, NotNil) 115 vdcTenantContext, err = vdcByNameOrId.getTenantContext() 116 check.Assert(err, IsNil) 117 checkTenantContext(check, "VDC by name or ID", vdcTenantContext, adminOrgTenantContext) 118 119 // Check that an admin catalog depending from our org has the same tenant context 120 adminCatalog, err := adminOrg.GetAdminCatalogByName(vcd.config.VCD.Catalog.Name, false) 121 check.Assert(err, IsNil) 122 check.Assert(adminCatalog, NotNil) 123 adminCatalogTenantContext, err := adminCatalog.getTenantContext() 124 check.Assert(err, IsNil) 125 checkTenantContext(check, "adminCatalog by name", adminCatalogTenantContext, adminOrgTenantContext) 126 127 adminCatalogById, err := adminOrg.GetAdminCatalogById(adminCatalog.AdminCatalog.ID, false) 128 check.Assert(err, IsNil) 129 check.Assert(adminCatalogById, NotNil) 130 adminCatalogTenantContext, err = adminCatalogById.getTenantContext() 131 check.Assert(err, IsNil) 132 checkTenantContext(check, "adminCatalog by ID", adminCatalogTenantContext, adminOrgTenantContext) 133 134 adminCatalogByNameOrId, err := adminOrg.GetAdminCatalogByNameOrId(adminCatalog.AdminCatalog.ID, false) 135 check.Assert(err, IsNil) 136 check.Assert(adminCatalogByNameOrId, NotNil) 137 adminCatalogTenantContext, err = adminCatalogByNameOrId.getTenantContext() 138 check.Assert(err, IsNil) 139 checkTenantContext(check, "adminCatalog by Name or ID", adminCatalogTenantContext, adminOrgTenantContext) 140 141 // Check that a catalog depending from our org has the same tenant context 142 catalog, err := adminOrg.GetCatalogByName(vcd.config.VCD.Catalog.Name, false) 143 check.Assert(err, IsNil) 144 check.Assert(catalog, NotNil) 145 catalogTenantContext, err := catalog.getTenantContext() 146 check.Assert(err, IsNil) 147 checkTenantContext(check, "catalog by Name", catalogTenantContext, adminOrgTenantContext) 148 149 catalogById, err := adminOrg.GetCatalogById(catalog.Catalog.ID, false) 150 check.Assert(err, IsNil) 151 check.Assert(catalogById, NotNil) 152 catalogTenantContext, err = catalogById.getTenantContext() 153 check.Assert(err, IsNil) 154 checkTenantContext(check, "catalog by ID", catalogTenantContext, adminOrgTenantContext) 155 156 catalogByNameOrId, err := adminOrg.GetCatalogByNameOrId(catalog.Catalog.ID, false) 157 check.Assert(err, IsNil) 158 check.Assert(catalogByNameOrId, NotNil) 159 catalogTenantContext, err = catalogByNameOrId.getTenantContext() 160 check.Assert(err, IsNil) 161 checkTenantContext(check, "catalog by ID", catalogTenantContext, adminOrgTenantContext) 162 163 vappList := vdc.GetVappList() 164 165 if len(vappList) > 0 { 166 // Check that a vApp depending from our org has the same tenant context 167 vapp, err := vdc.GetVAppByName(vappList[0].Name, false) 168 check.Assert(err, IsNil) 169 check.Assert(vapp, NotNil) 170 vappTenantContext, err := vapp.getTenantContext() 171 check.Assert(err, IsNil) 172 checkTenantContext(check, "vapp by name", vappTenantContext, adminOrgTenantContext) 173 174 vappById, err := vdc.GetVAppById(vapp.VApp.ID, false) 175 check.Assert(err, IsNil) 176 check.Assert(vappById, NotNil) 177 vappTenantContext, err = vappById.getTenantContext() 178 check.Assert(err, IsNil) 179 checkTenantContext(check, "vapp by ID", vappTenantContext, adminOrgTenantContext) 180 181 vappByNameOrId, err := vdc.GetVAppByNameOrId(vapp.VApp.ID, false) 182 check.Assert(err, IsNil) 183 check.Assert(vappByNameOrId, NotNil) 184 vappTenantContext, err = vappByNameOrId.getTenantContext() 185 check.Assert(err, IsNil) 186 checkTenantContext(check, "vapp by name or ID", vappTenantContext, adminOrgTenantContext) 187 188 vmList, err := vdc.QueryVmList(types.VmQueryFilterOnlyDeployed) 189 check.Assert(err, IsNil) 190 if len(vmList) > 0 { 191 // Check that a VM depending from our org has the same tenant context 192 vm, err := vcd.client.Client.GetVMByHref(vmList[0].HREF) 193 check.Assert(err, IsNil) 194 check.Assert(vm, NotNil) 195 196 vmTenantContext, err := vm.getTenantContext() 197 check.Assert(err, IsNil) 198 checkTenantContext(check, "VM by Href", vmTenantContext, adminOrgTenantContext) 199 } 200 } 201 202 // Check that a VM depending from our org has the same tenant context 203 role, err := adminOrg.GetRoleByName("vApp Author") 204 check.Assert(err, IsNil) 205 check.Assert(role, NotNil) 206 checkTenantContext(check, "role by name", role.TenantContext, adminOrgTenantContext) 207 208 roleById, err := adminOrg.GetRoleById(role.Role.ID) 209 check.Assert(err, IsNil) 210 check.Assert(role, NotNil) 211 checkTenantContext(check, "role by Id", roleById.TenantContext, adminOrgTenantContext) 212 } 213 214 func checkTenantContext(check *C, label string, tenantContext, parentTenantContext *TenantContext) { 215 check.Assert(tenantContext, DeepEquals, parentTenantContext) 216 check.Assert(tenantContext.OrgId, Equals, parentTenantContext.OrgId) 217 check.Assert(tenantContext.OrgName, Equals, parentTenantContext.OrgName) 218 if testVerbose { 219 fmt.Printf("%-30s %-20s -> %s\n", label, tenantContext.OrgId, parentTenantContext.OrgName) 220 } 221 }