/*
* 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.ofoverlay.statistics.util;
import java.util.List;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.RuleName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.classifiers.Classifier;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.classifiers.ClassifierKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.resolved.rules.ResolvedRule;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.resolved.rules.ResolvedRuleKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.resolved.policy.policy.rule.group.with.endpoint.constraints.PolicyRuleGroup;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.resolved.policy.policy.rule.group.with.endpoint.constraints.PolicyRuleGroupKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
public class IidSflowNameUtil {
public static final String DELIMETER = "_-_";
public static final String KEY_DELIMETER = "-_-";
public static String createFlowCacheName(InstanceIdentifier<Classifier> classifierIid, FlowCacheCons.Value value) {
PolicyRuleGroupKey policyRuleGroup = classifierIid.firstKeyOf(PolicyRuleGroup.class);
ResolvedRuleKey resolvedRule = classifierIid.firstKeyOf(ResolvedRule.class);
ClassifierKey classifier = classifierIid.firstKeyOf(Classifier.class);
StringBuilder sb = new StringBuilder();
sb.append(createStringFromCompositeKey(policyRuleGroup.getTenantId().getValue(),
policyRuleGroup.getContractId().getValue(), policyRuleGroup.getSubjectName().getValue()))
.append(DELIMETER)
.append(resolvedRule.getName().getValue())
.append(DELIMETER)
.append(classifier.getName().getValue())
.append(DELIMETER)
.append(value.get());
return sb.toString();
}
private static String createStringFromCompositeKey(String... keys) {
return Joiner.on(KEY_DELIMETER).join(keys);
}
public static ContractId resolveContractIdFromFlowCacheName(String flowCacheName) {
List<String> keys = Splitter.on(DELIMETER).splitToList(flowCacheName);
String policyRuleGroupKey = keys.get(0);
String contractId = Splitter.on(KEY_DELIMETER).splitToList(policyRuleGroupKey).get(1);
return new ContractId(contractId);
}
public static SubjectName resolveSubjectNameFromFlowCacheName(String flowCacheName) {
List<String> keys = Splitter.on(DELIMETER).splitToList(flowCacheName);
String policyRuleGroupKey = keys.get(0);
String subjectName = Splitter.on(KEY_DELIMETER).splitToList(policyRuleGroupKey).get(2);
return new SubjectName(subjectName);
}
public static RuleName resolveRuleNameFromFlowCacheName(String flowCacheName) {
List<String> keys = Splitter.on(DELIMETER).splitToList(flowCacheName);
String ruleName = keys.get(1);
return new RuleName(ruleName);
}
public static ClassifierName resolveClassifierNameFromFlowCacheName(String flowCacheName) {
List<String> keys = Splitter.on(DELIMETER).splitToList(flowCacheName);
String classifierName = keys.get(2);
return new ClassifierName(classifierName);
}
public static String resolveFlowCacheValue(String flowCacheName) {
List<String> keys = Splitter.on(DELIMETER).splitToList(flowCacheName);
return keys.get(3);
}
}