Support default auto-maps service
[alto.git] / alto-core / standard-northbound-routes / networkmap / api / src / main / java / org / opendaylight / alto / core / northbound / route / networkmap / AltoNbrNetworkmapUtils.java
1 /*
2  * Copyright (c) 2015 Yale University 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 package org.opendaylight.alto.core.northbound.route.networkmap;
10
11
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;
27
28 import java.util.LinkedList;
29 import java.util.List;
30
31 public class AltoNbrNetworkmapUtils {
32
33     public static final String BASE_URL = "/alto/networkmap";
34
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();
38     }
39
40     public static String createRecord(String path, ResourceId rid, final WriteTransaction wx) {
41         return createRecord(path, rid, new Uuid(ResourcepoolUtils.DEFAULT_CONTEXT), wx);
42     }
43
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)
53                 .build());
54         addressTypeMappingList.add(new AddressTypeMappingBuilder()
55                 .setAddressTypeString("ipv6")
56                 .setAddressType(AddressTypeIpv6.class)
57                 .build());
58         builder.setAddressTypeMapping(addressTypeMappingList);
59
60         wx.put(LogicalDatastoreType.CONFIGURATION, iid, builder.build());
61
62         return path;
63     }
64
65     public static void deleteRecord(String path, final WriteTransaction wx) {
66         InstanceIdentifier<Record> iid = getRecordIID(path);
67
68         wx.delete(LogicalDatastoreType.CONFIGURATION, iid);
69     }
70 }
71