func()

in network/hnswrapper/hnsv2wrapperfake.go [286:340]


func (f Hnsv2wrapperFake) ApplyEndpointPolicy(endpoint *hcn.HostComputeEndpoint, requestType hcn.RequestType, endpointPolicy hcn.PolicyEndpointRequest) error {
	f.Lock()
	defer f.Unlock()
	delayHnsCall(f.Delay)
	epCache, ok := f.Cache.endpoints[endpoint.Id]
	if !ok {
		return newErrorFakeHNS(fmt.Sprintf("[FakeHNS] could not find endpoint %s", endpoint.Id))
	}
	switch requestType {
	case hcn.RequestTypeAdd:
		for _, newPolicy := range endpointPolicy.Policies {
			if newPolicy.Type != hcn.ACL {
				continue
			}
			var aclPol FakeEndpointPolicy
			err := json.Unmarshal(newPolicy.Settings, &aclPol)
			if err != nil {
				return newErrorFakeHNS(err.Error())
			}
			epCache.Policies = append(epCache.Policies, &aclPol)
		}
	case hcn.RequestTypeRemove:
		for _, newPolicy := range endpointPolicy.Policies {
			if newPolicy.Type != hcn.ACL {
				continue
			}
			var aclPol FakeEndpointPolicy
			err := json.Unmarshal(newPolicy.Settings, &aclPol)
			if err != nil {
				return newErrorFakeHNS(err.Error())
			}
			err = epCache.RemovePolicy(&aclPol)
			if err != nil {
				return err
			}
		}
	case hcn.RequestTypeUpdate:
		epCache.Policies = make([]*FakeEndpointPolicy, 0)
		for _, newPolicy := range endpointPolicy.Policies {
			if newPolicy.Type != hcn.ACL {
				continue
			}
			var aclPol FakeEndpointPolicy
			err := json.Unmarshal(newPolicy.Settings, &aclPol)
			if err != nil {
				return newErrorFakeHNS(err.Error())
			}
			epCache.Policies = append(epCache.Policies, &aclPol)
		}
	case hcn.RequestTypeRefresh:
		return nil
	}

	return nil
}