github.com/vmware/govmomi@v0.51.0/simulator/tenant_manager.go (about)

     1  // © Broadcom. All Rights Reserved.
     2  // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
     3  // SPDX-License-Identifier: Apache-2.0
     4  
     5  package simulator
     6  
     7  import (
     8  	"github.com/vmware/govmomi/vim25/methods"
     9  	"github.com/vmware/govmomi/vim25/mo"
    10  	"github.com/vmware/govmomi/vim25/soap"
    11  	"github.com/vmware/govmomi/vim25/types"
    12  )
    13  
    14  type TenantManager struct {
    15  	mo.TenantTenantManager
    16  
    17  	spEntities map[types.ManagedObjectReference]bool
    18  }
    19  
    20  func (t *TenantManager) init(r *Registry) {
    21  	t.spEntities = make(map[types.ManagedObjectReference]bool)
    22  }
    23  
    24  func (t *TenantManager) markEntities(entities []types.ManagedObjectReference) {
    25  	for _, e := range entities {
    26  		t.spEntities[e] = true
    27  	}
    28  }
    29  
    30  func (t *TenantManager) unmarkEntities(entities []types.ManagedObjectReference) {
    31  	for _, e := range entities {
    32  		_, ok := t.spEntities[e]
    33  		if ok {
    34  			delete(t.spEntities, e)
    35  		}
    36  	}
    37  }
    38  
    39  func (t *TenantManager) getEntities() []types.ManagedObjectReference {
    40  	entities := []types.ManagedObjectReference{}
    41  	for e := range t.spEntities {
    42  		entities = append(entities, e)
    43  	}
    44  	return entities
    45  }
    46  
    47  func (t *TenantManager) MarkServiceProviderEntities(req *types.MarkServiceProviderEntities) soap.HasFault {
    48  	body := new(methods.MarkServiceProviderEntitiesBody)
    49  	t.markEntities(req.Entity)
    50  	body.Res = &types.MarkServiceProviderEntitiesResponse{}
    51  	return body
    52  }
    53  
    54  func (t *TenantManager) UnmarkServiceProviderEntities(req *types.UnmarkServiceProviderEntities) soap.HasFault {
    55  	body := new(methods.UnmarkServiceProviderEntitiesBody)
    56  	t.unmarkEntities(req.Entity)
    57  	body.Res = &types.UnmarkServiceProviderEntitiesResponse{}
    58  	return body
    59  }
    60  
    61  func (t *TenantManager) RetrieveServiceProviderEntities(req *types.RetrieveServiceProviderEntities) soap.HasFault {
    62  	body := new(methods.RetrieveServiceProviderEntitiesBody)
    63  	body.Res = &types.RetrieveServiceProviderEntitiesResponse{
    64  		Returnval: t.getEntities(),
    65  	}
    66  	return body
    67  }