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
9 package org.opendaylight.protocol.pcep.segment.routing;
11 import com.google.common.collect.Lists;
12 import java.util.List;
13 import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext;
14 import org.opendaylight.protocol.pcep.spi.TlvRegistry;
15 import org.opendaylight.protocol.pcep.spi.VendorInformationTlvRegistry;
16 import org.opendaylight.protocol.pcep.spi.pojo.AbstractPCEPExtensionProviderActivator;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.add.lsp.input.arguments.ero.subobject.subobject.type.SrEroType;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.add.lsp.input.arguments.rro.subobject.subobject.type.SrRroType;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.sr.pce.capability.tlv.SrPceCapability;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.Open;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.path.setup.type.tlv.PathSetupType;
23 public class SegmentRoutingActivator extends AbstractPCEPExtensionProviderActivator {
25 private final boolean ianaSrSubobjectsType;
27 public SegmentRoutingActivator() {
28 this.ianaSrSubobjectsType = false;
31 public SegmentRoutingActivator(final boolean ianaSrSubobjectsType) {
32 this.ianaSrSubobjectsType = ianaSrSubobjectsType;
36 protected List<AutoCloseable> startImpl(final PCEPExtensionProviderContext context) {
37 final List<AutoCloseable> regs = Lists.newArrayList();
40 regs.add(context.registerTlvParser(SrPceCapabilityTlvParser.TYPE, new SrPceCapabilityTlvParser()));
41 regs.add(context.registerTlvParser(SrPathSetupTypeTlvParser.TYPE, new SrPathSetupTypeTlvParser()));
43 regs.add(context.registerTlvSerializer(PathSetupType.class, new SrPathSetupTypeTlvParser()));
44 regs.add(context.registerTlvSerializer(SrPceCapability.class, new SrPceCapabilityTlvParser()));
47 final SrEroSubobjectParser srEroSubobjectParser = new SrEroSubobjectParser(this.ianaSrSubobjectsType);
48 regs.add(context.registerEROSubobjectParser(srEroSubobjectParser.getCodePoint(), srEroSubobjectParser));
49 regs.add(context.registerEROSubobjectSerializer(
50 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.network.topology.topology.node.path.computation.client.reported.lsp.path.ero.subobject.subobject.type.SrEroType.class,
51 srEroSubobjectParser));
52 regs.add(context.registerEROSubobjectSerializer(
53 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.pcinitiate.pcinitiate.message.requests.ero.subobject.subobject.type.SrEroType.class,
54 srEroSubobjectParser));
55 regs.add(context.registerEROSubobjectSerializer(
56 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.pcrep.pcrep.message.replies.result.success._case.success.paths.ero.subobject.subobject.type.SrEroType.class,
57 srEroSubobjectParser));
58 regs.add(context.registerEROSubobjectSerializer(
59 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.pcrpt.pcrpt.message.reports.path.ero.subobject.subobject.type.SrEroType.class,
60 srEroSubobjectParser));
61 regs.add(context.registerEROSubobjectSerializer(
62 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.pcupd.pcupd.message.updates.path.ero.subobject.subobject.type.SrEroType.class,
63 srEroSubobjectParser));
64 regs.add(context.registerEROSubobjectSerializer(
65 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.update.lsp.input.arguments.ero.subobject.subobject.type.SrEroType.class,
66 srEroSubobjectParser));
67 regs.add(context.registerEROSubobjectSerializer(SrEroType.class, srEroSubobjectParser));
69 final SrRroSubobjectParser srRroSubobjectParser = new SrRroSubobjectParser(this.ianaSrSubobjectsType);
70 regs.add(context.registerRROSubobjectParser(srRroSubobjectParser.getCodePoint(), srRroSubobjectParser));
71 regs.add(context.registerRROSubobjectSerializer(
72 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.network.topology.topology.node.path.computation.client.reported.lsp.path.rro.subobject.subobject.type.SrRroType.class,
73 srRroSubobjectParser));
74 regs.add(context.registerRROSubobjectSerializer(
75 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.pcinitiate.pcinitiate.message.requests.rro.subobject.subobject.type.SrRroType.class,
76 srRroSubobjectParser));
77 regs.add(context.registerRROSubobjectSerializer(
78 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.pcrep.pcrep.message.replies.result.failure._case.rro.subobject.subobject.type.SrRroType.class,
79 srRroSubobjectParser));
80 regs.add(context.registerRROSubobjectSerializer(
81 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.pcreq.pcreq.message.requests.segment.computation.p2p.reported.route.rro.subobject.subobject.type.SrRroType.class,
82 srRroSubobjectParser));
83 regs.add(context.registerRROSubobjectSerializer(
84 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.pcrpt.pcrpt.message.reports.path.rro.subobject.subobject.type.SrRroType.class,
85 srRroSubobjectParser));
86 regs.add(context.registerRROSubobjectSerializer(
87 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.pcupd.pcupd.message.updates.path.rro.subobject.subobject.type.SrRroType.class,
88 srRroSubobjectParser));
89 regs.add(context.registerRROSubobjectSerializer(
90 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.update.lsp.input.arguments.rro.subobject.subobject.type.SrRroType.class, srRroSubobjectParser));
91 regs.add(context.registerRROSubobjectSerializer(
92 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.pcrep.pcrep.message.replies.result.success._case.success.paths.rro.subobject.subobject.type.SrRroType.class,
93 srRroSubobjectParser));
94 regs.add(context.registerRROSubobjectSerializer(
95 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev171025.pcreq.pcreq.message.requests.segment.computation.p2p.rro.subobject.subobject.type.SrRroType.class,
96 srRroSubobjectParser));
97 regs.add(context.registerRROSubobjectSerializer(SrRroType.class, srRroSubobjectParser));
100 final TlvRegistry tlvReg = context.getTlvHandlerRegistry();
101 final VendorInformationTlvRegistry viTlvRegistry = context.getVendorInformationTlvRegistry();
102 regs.add(context.registerObjectParser(new PcepOpenObjectWithSpcTlvParser(tlvReg, viTlvRegistry)));
103 regs.add(context.registerObjectSerializer(Open.class, new PcepOpenObjectWithSpcTlvParser(tlvReg, viTlvRegistry)));