2 * Copyright (c) 2014 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
8 package org.opendaylight.protocol.pcep.segment.routing;
10 import com.google.common.base.MoreObjects;
11 import java.util.ArrayList;
12 import java.util.List;
13 import org.kohsuke.MetaInfServices;
14 import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderActivator;
15 import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext;
16 import org.opendaylight.protocol.pcep.spi.TlvRegistry;
17 import org.opendaylight.protocol.pcep.spi.VendorInformationTlvRegistry;
18 import org.opendaylight.protocol.pcep.spi.pojo.AbstractPCEPExtensionProviderActivator;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev200720.add.lsp.input.arguments.ero.subobject.subobject.type.SrEroType;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev200720.add.lsp.input.arguments.rro.subobject.subobject.type.SrRroType;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev200720.sr.pce.capability.tlv.SrPceCapability;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.open.object.Open;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.path.setup.type.tlv.PathSetupType;
24 import org.opendaylight.yangtools.concepts.Registration;
26 @MetaInfServices(value = PCEPExtensionProviderActivator.class)
27 public class SegmentRoutingActivator extends AbstractPCEPExtensionProviderActivator {
29 private final boolean ianaSrSubobjectsType;
31 public SegmentRoutingActivator() {
32 ianaSrSubobjectsType = true;
36 public SegmentRoutingActivator(final boolean ianaSrSubobjectsType) {
37 this.ianaSrSubobjectsType = ianaSrSubobjectsType;
41 protected List<Registration> startImpl(final PCEPExtensionProviderContext context) {
42 final List<Registration> regs = new ArrayList<>();
45 regs.add(context.registerTlvParser(SrPceCapabilityTlvParser.TYPE, new SrPceCapabilityTlvParser()));
46 regs.add(context.registerTlvParser(SrPathSetupTypeTlvParser.TYPE, new SrPathSetupTypeTlvParser()));
48 regs.add(context.registerTlvSerializer(PathSetupType.class, new SrPathSetupTypeTlvParser()));
49 regs.add(context.registerTlvSerializer(SrPceCapability.class, new SrPceCapabilityTlvParser()));
52 final SrEroSubobjectParser srEroSubobjectParser = new SrEroSubobjectParser(ianaSrSubobjectsType);
53 regs.add(context.registerEROSubobjectParser(srEroSubobjectParser.getCodePoint(), srEroSubobjectParser));
54 regs.add(context.registerEROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
55 .pcep.segment.routing.rev200720.network.topology.topology.node.path.computation.client.reported.lsp.path.ero
56 .subobject.subobject.type.SrEroType.class,srEroSubobjectParser));
57 regs.add(context.registerEROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
58 .pcep.segment.routing.rev200720.pcinitiate.pcinitiate.message.requests.ero.subobject.subobject.type
59 .SrEroType.class, srEroSubobjectParser));
60 regs.add(context.registerEROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
61 .pcep.segment.routing.rev200720.pcrep.pcrep.message.replies.result.success._case.success.paths.ero.subobject
62 .subobject.type.SrEroType.class, srEroSubobjectParser));
63 regs.add(context.registerEROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
64 .pcep.segment.routing.rev200720.pcrpt.pcrpt.message.reports.path.ero.subobject.subobject.type
65 .SrEroType.class, srEroSubobjectParser));
66 regs.add(context.registerEROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
67 .pcep.segment.routing.rev200720.pcupd.pcupd.message.updates.path.ero.subobject.subobject.type
68 .SrEroType.class, srEroSubobjectParser));
69 regs.add(context.registerEROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
70 .pcep.segment.routing.rev200720.update.lsp.input.arguments.ero.subobject.subobject.type.SrEroType.class,
71 srEroSubobjectParser));
72 regs.add(context.registerEROSubobjectSerializer(SrEroType.class, srEroSubobjectParser));
74 final SrRroSubobjectParser srRroSubobjectParser = new SrRroSubobjectParser(ianaSrSubobjectsType);
75 regs.add(context.registerRROSubobjectParser(srRroSubobjectParser.getCodePoint(), srRroSubobjectParser));
76 regs.add(context.registerRROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
77 .pcep.segment.routing.rev200720.network.topology.topology.node.path.computation.client.reported.lsp.path.rro
78 .subobject.subobject.type.SrRroType.class, srRroSubobjectParser));
79 regs.add(context.registerRROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
80 .pcep.segment.routing.rev200720.pcinitiate.pcinitiate.message.requests.rro.subobject.subobject.type
81 .SrRroType.class, srRroSubobjectParser));
82 regs.add(context.registerRROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
83 .pcep.segment.routing.rev200720.pcrep.pcrep.message.replies.result.failure._case.rro.subobject.subobject
84 .type.SrRroType.class, srRroSubobjectParser));
85 regs.add(context.registerRROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
86 .pcep.segment.routing.rev200720.pcreq.pcreq.message.requests.segment.computation.p2p.reported.route.rro
87 .subobject.subobject.type.SrRroType.class, srRroSubobjectParser));
88 regs.add(context.registerRROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
89 .pcep.segment.routing.rev200720.pcrpt.pcrpt.message.reports.path.rro.subobject.subobject.type
90 .SrRroType.class, srRroSubobjectParser));
91 regs.add(context.registerRROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
92 .pcep.segment.routing.rev200720.pcupd.pcupd.message.updates.path.rro.subobject.subobject.type
93 .SrRroType.class, srRroSubobjectParser));
94 regs.add(context.registerRROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
95 .pcep.segment.routing.rev200720.update.lsp.input.arguments.rro.subobject.subobject.type.SrRroType.class,
96 srRroSubobjectParser));
97 regs.add(context.registerRROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
98 .pcep.segment.routing.rev200720.pcrep.pcrep.message.replies.result.success._case.success.paths.rro.subobject
99 .subobject.type.SrRroType.class, srRroSubobjectParser));
100 regs.add(context.registerRROSubobjectSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
101 .pcep.segment.routing.rev200720.pcreq.pcreq.message.requests.segment.computation.p2p.rro.subobject.subobject
102 .type.SrRroType.class, srRroSubobjectParser));
103 regs.add(context.registerRROSubobjectSerializer(SrRroType.class, srRroSubobjectParser));
106 final TlvRegistry tlvReg = context.getTlvHandlerRegistry();
107 final VendorInformationTlvRegistry viTlvRegistry = context.getVendorInformationTlvRegistry();
108 regs.add(context.registerObjectParser(new PcepOpenObjectWithSpcTlvParser(tlvReg, viTlvRegistry)));
109 regs.add(context.registerObjectSerializer(Open.class,
110 new PcepOpenObjectWithSpcTlvParser(tlvReg, viTlvRegistry)));
116 public String toString() {
117 return MoreObjects.toStringHelper(this).add("ianaSubobjects", ianaSrSubobjectsType).toString();