/*
* Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl.manager;
import java.util.ArrayList;
import java.util.List;
import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.unconfigured.rule.groups.unconfigured.rule.group.UnconfiguredResolvedRule;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.Status;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.RendererEndpoint;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.status.unconfigured.endpoints.UnconfiguredRendererEndpoint;
/**
* Purpose: placeholder for
* <ul>
* <li>{@link PolicyManagerImpl.PolicyMapLocation}</li>
* <li>{@link Status} parts</li>
* </ul>
*/
public class PolicyConfigurationContext {
private final List<UnconfiguredRendererEndpoint> unconfiguredRendererEPBag;
private final List<CheckedFuture<Boolean, TransactionCommitFailedException>> cumulativeResult;
private PolicyManagerImpl.PolicyMapLocation policyMapLocation;
private RendererEndpoint currentRendererEP;
private UnconfiguredResolvedRule currentUnconfiguredRule;
public PolicyConfigurationContext() {
unconfiguredRendererEPBag = new ArrayList<>();
cumulativeResult = new ArrayList<>();
}
/**
* Set transaction result to result pool
*
* @param result current result
*/
public void setFutureResult(final CheckedFuture<Boolean, TransactionCommitFailedException> result) {
cumulativeResult.add(result);
}
/**
* append given endpoint to collection of not configurable policies
*
* @param endpoint not configurable endpoint
*/
public void appendUnconfiguredRendererEP(UnconfiguredRendererEndpoint endpoint) {
unconfiguredRendererEPBag.add(endpoint);
}
/**
* @return policy-map location
*/
public PolicyManagerImpl.PolicyMapLocation getPolicyMapLocation() {
return policyMapLocation;
}
/**
* @param policyMapLocation for actual policy-map/interface location
*/
public void setPolicyMapLocation(final PolicyManagerImpl.PolicyMapLocation policyMapLocation) {
this.policyMapLocation = policyMapLocation;
}
/**
* @return endpoint currently being configured
*/
public RendererEndpoint getCurrentRendererEP() {
return currentRendererEP;
}
/**
* @param currentRendererEP endpoint currently being configured
*/
public void setCurrentRendererEP(final RendererEndpoint currentRendererEP) {
this.currentRendererEP = currentRendererEP;
}
/**
* @return list of not configurable policies
*/
List<UnconfiguredRendererEndpoint> getUnconfiguredRendererEPBag() {
return unconfiguredRendererEPBag;
}
/**
* @return all unconfigured rules
*/
public UnconfiguredResolvedRule getCurrentUnconfiguredRule() {
return currentUnconfiguredRule;
}
/**
* Add unconfigured rule to list
*
* @param unconfiguredResolvedRule unconfigured rule
*/
public void setCurrentUnconfiguredRule(final UnconfiguredResolvedRule unconfiguredResolvedRule) {
this.currentUnconfiguredRule = unconfiguredResolvedRule;
}
/**
* @return get all transaction results as a list
*/
ListenableFuture<List<Boolean>> getCumulativeResult() {
return Futures.allAsList(cumulativeResult);
}
}