2 * Copyright (c) 2015 Yale University 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.alto.core.northbound.route.networkmap;
12 import org.opendaylight.alto.core.resourcepool.ResourcepoolUtils;
13 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
14 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.northbound.route.networkmap.rev151021.Records;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.northbound.route.networkmap.rev151021.records.Record;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.northbound.route.networkmap.rev151021.records.RecordBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.northbound.route.networkmap.rev151021.records.RecordKey;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.northbound.route.networkmap.rev151021.records.record.AddressTypeMapping;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.northbound.route.networkmap.rev151021.records.record.AddressTypeMappingBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.core.types.rev150921.ResourceId;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.AddressTypeIpv4;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.alto.service.model.networkmap.rev151021.AddressTypeIpv6;
26 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
28 import java.util.LinkedList;
29 import java.util.List;
31 public class AltoNbrNetworkmapUtils {
33 public static final String BASE_URL = "/alto/networkmap";
35 public static InstanceIdentifier<Record> getRecordIID(String path) {
36 RecordKey key = new RecordKey(new Uri(path));
37 return InstanceIdentifier.builder(Records.class).child(Record.class, key).build();
40 public static String createRecord(String path, ResourceId rid, final WriteTransaction wx) {
41 return createRecord(path, rid, new Uuid(ResourcepoolUtils.DEFAULT_CONTEXT), wx);
44 public static String createRecord(String path, ResourceId rid, Uuid cid, final WriteTransaction wx) {
45 InstanceIdentifier<Record> iid = getRecordIID(path);
46 RecordBuilder builder = new RecordBuilder();
47 builder.setPath(new Uri(path));
48 builder.setResourceIid(ResourcepoolUtils.getResourceIID(cid, rid));
49 List<AddressTypeMapping> addressTypeMappingList = new LinkedList<>();
50 addressTypeMappingList.add(new AddressTypeMappingBuilder()
51 .setAddressTypeString("ipv4")
52 .setAddressType(AddressTypeIpv4.class)
54 addressTypeMappingList.add(new AddressTypeMappingBuilder()
55 .setAddressTypeString("ipv6")
56 .setAddressType(AddressTypeIpv6.class)
58 builder.setAddressTypeMapping(addressTypeMappingList);
60 wx.put(LogicalDatastoreType.CONFIGURATION, iid, builder.build());
65 public static void deleteRecord(String path, final WriteTransaction wx) {
66 InstanceIdentifier<Record> iid = getRecordIID(path);
68 wx.delete(LogicalDatastoreType.CONFIGURATION, iid);