HONEYCOMB-58 - Routing Api
[honeycomb.git] / ioam / impl / src / main / java / io / fd / honeycomb / vppioam / impl / config / VppIoamWriterFactory.java
1 /*
2  * Copyright (c) 2016 Cisco and/or its affiliates.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at:
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package io.fd.honeycomb.vppioam.impl.config;
18
19 import com.google.common.collect.Sets;
20 import com.google.inject.Inject;
21 import com.google.inject.name.Named;
22 import io.fd.honeycomb.translate.impl.write.GenericListWriter;
23 import io.fd.honeycomb.translate.vpp.util.NamingContext;
24 import io.fd.honeycomb.translate.write.WriterFactory;
25 import io.fd.honeycomb.translate.write.registry.ModifiableWriterRegistryBuilder;
26 import javax.annotation.Nonnull;
27 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.IoamTraceConfig;
28 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.ioam.sb.trace.rev160512.ioam.trace.config.TraceConfig;
29 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
30 import io.fd.vpp.jvpp.ioamtrace.future.FutureJVppIoamtrace;
31
32 public class VppIoamWriterFactory implements WriterFactory {
33
34     @Nonnull
35     private final FutureJVppIoamtrace jvppIoam;
36
37     @Inject
38     public VppIoamWriterFactory(@Nonnull final FutureJVppIoamtrace jvppIoam) {
39         this.jvppIoam = jvppIoam;
40     }
41
42     @Override
43     public void init(@Nonnull final ModifiableWriterRegistryBuilder registry) {
44         // TraceConfig
45         final InstanceIdentifier<TraceConfig> trId =
46                 InstanceIdentifier.create(IoamTraceConfig.class).child(TraceConfig.class);
47         registry.add(new GenericListWriter<>(trId, new IoamTraceWriterCustomizer(jvppIoam)));
48     }
49 }