2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl.util;
11 import com.google.common.annotations.VisibleForTesting;
12 import java.util.List;
13 import java.util.Objects;
14 import java.util.stream.Collectors;
15 import java.util.stream.Stream;
16 import org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl.manager.PolicyConfigurationContext;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.rule.group.with.renderer.endpoint.participation.RuleGroupWithRendererEndpointParticipation;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.unconfigured.rule.groups.UnconfiguredRuleGroup;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.unconfigured.rule.groups.UnconfiguredRuleGroupBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.Status;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.RendererEndpoint;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.renderer.endpoints.renderer.endpoint.PeerEndpoint;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.status.unconfigured.endpoints.UnconfiguredRendererEndpoint;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.status.unconfigured.endpoints.UnconfiguredRendererEndpointBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.status.unconfigured.endpoints.unconfigured.renderer.endpoint.UnconfiguredPeerEndpoint;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.status.unconfigured.endpoints.unconfigured.renderer.endpoint.UnconfiguredPeerEndpointBuilder;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
31 * Purpose: assembly methods for {@link Status}.
33 public class StatusUtil {
35 private static final Logger LOG = LoggerFactory.getLogger(StatusUtil.class);
37 private StatusUtil() {
38 throw new IllegalAccessError("instance of util class not supported");
42 * @param context holder of actual configuration state
43 * @param info detailed message for not configurable item
44 * @return ful collection of not configurable items under given endpoint
46 public static UnconfiguredRendererEndpoint assembleFullyNotConfigurableRendererEP(final PolicyConfigurationContext context,
48 final RendererEndpoint rendererEndpoint = context.getCurrentRendererEP();
49 LOG.trace("fully not configurable EP: {}", info);
50 return new UnconfiguredRendererEndpointBuilder(rendererEndpoint)
51 .setUnconfiguredPeerEndpoint(assemblePeerEndpoint(rendererEndpoint.getPeerEndpoint().stream()))
57 * @param context holder of actual configuration state
58 * @param info detailed message for not configurable item
59 * @return filtered collection of not configurable items under given endpoint and peer
61 public static UnconfiguredRendererEndpoint assembleNotConfigurableRendererEPForPeer(final PolicyConfigurationContext context,
62 final PeerEndpoint peerEndpoint,
64 final RendererEndpoint rendererEndpoint = context.getCurrentRendererEP();
65 LOG.trace("not configurable EP for peer: {}", info);
66 return new UnconfiguredRendererEndpointBuilder(rendererEndpoint)
67 .setUnconfiguredPeerEndpoint(assemblePeerEndpoint(Stream.of(peerEndpoint)))
73 static List<UnconfiguredPeerEndpoint> assemblePeerEndpoint(final Stream<PeerEndpoint> peerEndpoint) {
75 .map((peerEP) -> new UnconfiguredPeerEndpointBuilder(peerEP)
76 .setUnconfiguredRuleGroup(
77 assembleRuleGroups(peerEP.getRuleGroupWithRendererEndpointParticipation().stream())
79 .collect(Collectors.toList());
83 static List<UnconfiguredRuleGroup> assembleRuleGroups(final Stream<RuleGroupWithRendererEndpointParticipation> stream) {
85 .filter(Objects::nonNull)
86 .map((ruleGroup) -> new UnconfiguredRuleGroupBuilder(ruleGroup)
87 .setRendererEndpointParticipation(ruleGroup.getRendererEndpointParticipation())
88 // TODO: find rule-group and append names of resolved rules ...setUnconfiguredResolvedRule()
90 .collect(Collectors.toList());