Skip to content

Commit

Permalink
Add query methods
Browse files Browse the repository at this point in the history
Signed-off-by: abarreiro <abarreiro@vmware.com>
  • Loading branch information
adambarreiro committed Jun 19, 2024
1 parent 989b0ea commit b561b5b
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 21 deletions.
13 changes: 6 additions & 7 deletions govcd/vdc_template.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,13 +138,12 @@ func (vcdClient *VCDClient) QueryAdminVdcTemplates() ([]*types.QueryResultAdminO
return results.Results.AdminOrgVdcTemplateRecord, nil
}

// QueryVdcTemplates gets the list of VDC Templates as a tenant
func (vcdClient *VCDClient) QueryVdcTemplates() ([]*types.QueryResultOrgVdcTemplateRecordType, error) {
if vcdClient.Client.IsSysAdmin {
return nil, fmt.Errorf("querying %s requires a tenant user", types.QtOrgVdcTemplate)
}

results, err := vcdClient.Client.cumulativeQuery(types.QtOrgVdcTemplate, nil, nil)
// QueryVdcTemplates gets the list of VDC Templates from the receiver Org, as a tenant
func (org *Org) QueryVdcTemplates() ([]*types.QueryResultOrgVdcTemplateRecordType, error) {
results, err := org.client.cumulativeQueryWithHeaders(types.QtOrgVdcTemplate, nil, nil, getTenantContextHeader(&TenantContext{
OrgId: org.Org.ID,
OrgName: org.Org.Name,
}))
if err != nil {
return nil, err
}
Expand Down
44 changes: 30 additions & 14 deletions govcd/vdc_template_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ func (vcd *TestVCD) Test_VdcTemplateCRUD(check *C) {

// Pre-requisites: We need information such as Provider VDC, External networks (Provider Gateways)
// and Edge Clusters.
org, err := vcd.client.GetAdminOrgByName(vcd.config.VCD.Org)
adminOrg, err := vcd.client.GetAdminOrgByName(vcd.config.VCD.Org)
check.Assert(err, IsNil)
check.Assert(org, NotNil)
check.Assert(adminOrg, NotNil)

vdc, err := org.GetVDCByName(vcd.config.VCD.Nsxt.Vdc, false)
vdc, err := adminOrg.GetVDCByName(vcd.config.VCD.Nsxt.Vdc, false)
check.Assert(err, IsNil)
check.Assert(vdc, NotNil)

Expand Down Expand Up @@ -197,16 +197,16 @@ func (vcd *TestVCD) Test_VdcTemplateCRUD(check *C) {
check.Assert(err, NotNil)
check.Assert(ContainsNotFound(err), Equals, true)

_, err = vcd.client.QueryVdcTemplates()
check.Assert(err, NotNil)
org, err := vcd.client.GetOrgByName(adminOrg.AdminOrg.Name)
check.Assert(err, IsNil)
check.Assert(org, NotNil)

adminTemplates, err := vcd.client.QueryAdminVdcTemplates()
check.Assert(err, IsNil)
check.Assert(true, Equals, len(adminTemplates) > 0)
found := false
for _, adminTemplate := range adminTemplates {
// Comparing HREFs as IDs are empty
if adminTemplate.HREF == templateByName.VdcTemplate.HREF {
if extractUuid(adminTemplate.HREF) == extractUuid(templateByName.VdcTemplate.HREF) {
found = true
break
}
Expand All @@ -228,7 +228,7 @@ func (vcd *TestVCD) Test_VdcTemplateCRUD(check *C) {
check.Assert(access, NotNil)
check.Assert(access.AccessSettings, IsNil)

err = template.SetAccessControl([]string{org.AdminOrg.ID})
err = template.SetAccessControl([]string{adminOrg.AdminOrg.ID})
check.Assert(err, IsNil)

access, err = template.GetAccessControl()
Expand All @@ -237,7 +237,20 @@ func (vcd *TestVCD) Test_VdcTemplateCRUD(check *C) {
check.Assert(access.AccessSettings, NotNil)
check.Assert(len(access.AccessSettings.AccessSetting), Equals, 1)
check.Assert(access.AccessSettings.AccessSetting[0].Subject, NotNil)
check.Assert(access.AccessSettings.AccessSetting[0].Subject.HREF, Equals, org.AdminOrg.HREF)
check.Assert(access.AccessSettings.AccessSetting[0].Subject.HREF, Equals, adminOrg.AdminOrg.HREF)

// Now that the tenant has permissions, the query should return it
templates, err := org.QueryVdcTemplates()
check.Assert(err, IsNil)
check.Assert(true, Equals, len(adminTemplates) > 0)
found = false
for _, t := range templates {
if extractUuid(t.HREF) == extractUuid(templateByName.VdcTemplate.HREF) {
found = true
break
}
}
check.Assert(found, Equals, true)
}

func (vcd *TestVCD) Test_VdcTemplateInstantiate(check *C) {
Expand Down Expand Up @@ -368,13 +381,16 @@ func (vcd *TestVCD) Test_VdcTemplateInstantiate(check *C) {
_, err = vcdClient.QueryAdminVdcTemplates()
check.Assert(err, NotNil)

tenantTemplates, err := vcdClient.QueryVdcTemplates()
org, err := vcdClient.GetOrgByName(orgName)
check.Assert(err, IsNil)
check.Assert(org, NotNil)

tenantTemplates, err := org.QueryVdcTemplates()
check.Assert(err, IsNil)
check.Assert(true, Equals, len(tenantTemplates) > 0)
found := false
for _, tenantTemplate := range tenantTemplates {
// Comparing HREFs as IDs are empty
if tenantTemplate.HREF == templateAsTenant.VdcTemplate.HREF {
if extractUuid(tenantTemplate.HREF) == extractUuid(templateAsTenant.VdcTemplate.HREF) {
found = true
break
}
Expand All @@ -394,8 +410,8 @@ func (vcd *TestVCD) Test_VdcTemplateInstantiate(check *C) {
check.Assert(vdc2.Vdc.Name, Equals, check.TestName()+"2")
check.Assert(vdc2.Vdc.Description, Equals, check.TestName()+"2")

org, err := vdc.getParentOrg()
vdcOrg, err := vdc.getParentOrg()
check.Assert(err, IsNil)
check.Assert(adminOrg.AdminOrg.ID, Equals, org.orgId())
check.Assert(adminOrg.AdminOrg.ID, Equals, vdcOrg.orgId())
}
}

0 comments on commit b561b5b

Please sign in to comment.