BGPCEP-726: Introduce tunnel topology config
[bgpcep.git] / pcep / tunnel / tunnel-provider / src / main / java / org / opendaylight / controller / config / yang / pcep / tunnel / provider / PCEPTunnelTopologyProviderModule.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 /**
9  * Generated file
10
11  * Generated from: yang module name: config-pcep-tunnel-provider  yang module local name: pcep-tunnel-topology-impl
12  * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
13  * Generated at: Tue Nov 19 04:23:38 CET 2013
14  *
15  * Do not modify this file unless it is present under src/main directory
16  */
17 package org.opendaylight.controller.config.yang.pcep.tunnel.provider;
18
19 import org.opendaylight.bgpcep.pcep.tunnel.provider.PCEPTunnelTopologyProvider;
20 import org.opendaylight.bgpcep.pcep.tunnel.provider.TunnelProgramming;
21 import org.opendaylight.bgpcep.topology.DefaultTopologyReference;
22 import org.opendaylight.controller.config.api.JmxAttributeValidationException;
23 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.topology.rev140113.NetworkTopologyContext;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev171025.NetworkTopologyPcepService;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev131030.TopologyTunnelPcepProgrammingService;
27 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
28 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
29 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
30 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
31
32 /**
33  *
34  */
35 public final class PCEPTunnelTopologyProviderModule extends AbstractPCEPTunnelTopologyProviderModule {
36
37     public PCEPTunnelTopologyProviderModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier,
38             final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
39         super(identifier, dependencyResolver);
40     }
41
42     public PCEPTunnelTopologyProviderModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier,
43             final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
44             final PCEPTunnelTopologyProviderModule oldModule, final java.lang.AutoCloseable oldInstance) {
45         super(identifier, dependencyResolver, oldModule, oldInstance);
46     }
47
48     @Override
49     public void validate() {
50         super.validate();
51         JmxAttributeValidationException.checkNotNull(getTopologyId(), "is not set.", topologyIdJmxAttribute);
52     }
53
54     @Override
55     public java.lang.AutoCloseable createInstance() {
56         final PCEPTunnelTopologyProvider ttp = PCEPTunnelTopologyProvider.create(getDataProviderDependency(),
57                 getSourceTopologyDependency().getInstanceIdentifier(), getTopologyId());
58         final NetworkTopologyPcepService ntps = getRpcRegistryDependency().getRpcService(NetworkTopologyPcepService.class);
59         final TunnelProgramming tp = new TunnelProgramming(getSchedulerDependency(), getDataProviderDependency(), ntps);
60
61         final BindingAwareBroker.RoutedRpcRegistration<TopologyTunnelPcepProgrammingService> reg = getRpcRegistryDependency().addRoutedRpcImplementation(
62                 TopologyTunnelPcepProgrammingService.class, tp);
63         final InstanceIdentifier<Topology> topology = InstanceIdentifier.builder(NetworkTopology.class).child(Topology.class,
64                 new TopologyKey(getTopologyId())).build();
65         reg.registerPath(NetworkTopologyContext.class, topology);
66
67         final class TunnelTopologyReferenceCloseable extends DefaultTopologyReference implements AutoCloseable {
68             public TunnelTopologyReferenceCloseable(final InstanceIdentifier<Topology> instanceIdentifier) {
69                 super(instanceIdentifier);
70             }
71
72             @Override
73             public void close() {
74                 reg.close();
75                 tp.close();
76                 ttp.close();
77             }
78         }
79
80         return new TunnelTopologyReferenceCloseable(ttp.getTopologyReference().getInstanceIdentifier());
81     }
82 }