2 * Copyright (c) 2017 Cisco Systems. 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.groupbasedpolicy.renderer.vpp.commands;
11 import com.google.common.base.Preconditions;
12 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
13 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
14 import org.opendaylight.groupbasedpolicy.renderer.vpp.util.General;
15 import org.opendaylight.groupbasedpolicy.renderer.vpp.util.VppIidFactory;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev170315.proxy.ranges.ProxyRange;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev170315.proxy.ranges.ProxyRangeBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.proxy.arp.rev170315.proxy.ranges.ProxyRangeKey;
20 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
25 * Created by Shakib Ahmed on 5/3/17.
27 public class ProxyRangeCommand extends AbstractConfigCommand {
28 private static final Logger LOG = LoggerFactory.getLogger(ProxyRangeCommand.class);
31 private Ipv4Address startAddress;
32 private Ipv4Address endAddress;
34 public ProxyRangeCommand(ProxyRangeCommandBuilder builder) {
35 this.operation = builder.getOperation();
36 this.vrf = builder.getVrf();
37 this.startAddress = builder.getStartAddress();
38 this.endAddress = builder.getEndAddress();
41 public static ProxyRangeCommandBuilder builder() {
42 return new ProxyRangeCommandBuilder();
46 public InstanceIdentifier getIid() {
47 return VppIidFactory.getProxyRangeIid(vrf, startAddress, endAddress);
51 void put(ReadWriteTransaction rwTx) {
52 InstanceIdentifier<ProxyRange> proxyRangeInstanceIid = VppIidFactory.getProxyRangeIid(vrf, startAddress, endAddress);
53 rwTx.put(LogicalDatastoreType.CONFIGURATION, proxyRangeInstanceIid, getProxyRangeBuilder().build(), true);
57 void merge(ReadWriteTransaction rwTx) {
58 InstanceIdentifier<ProxyRange> proxyRangeInstanceIdentifier = VppIidFactory.
59 getProxyRangeIid(vrf, startAddress, endAddress);
60 rwTx.merge(LogicalDatastoreType.CONFIGURATION, proxyRangeInstanceIdentifier, getProxyRangeBuilder().build(), true);
64 void delete(ReadWriteTransaction rwTx) {
66 InstanceIdentifier<ProxyRange> proxyRangeInstanceIdentifier = VppIidFactory.
67 getProxyRangeIid(vrf, startAddress, endAddress);
68 rwTx.delete(LogicalDatastoreType.CONFIGURATION, proxyRangeInstanceIdentifier);
69 } catch (IllegalStateException ex) {
70 LOG.debug("Proxy Range not deleted from DS {}", this, ex);
74 private ProxyRangeBuilder getProxyRangeBuilder() {
75 return new ProxyRangeBuilder()
76 .setKey(new ProxyRangeKey(this.endAddress, this.startAddress, this.vrf))
78 .setLowAddr(this.startAddress)
79 .setHighAddr(this.endAddress);
83 public static class ProxyRangeCommandBuilder {
85 private General.Operations operation;
87 private Ipv4Address startAddress;
88 private Ipv4Address endAddress;
90 public Long getVrf() {
94 public void setVrf(Long vrf) {
98 public Ipv4Address getStartAddress() {
102 public void setStartAddress(Ipv4Address startAddress) {
103 this.startAddress = startAddress;
106 public Ipv4Address getEndAddress() {
110 public void setEndAddress(Ipv4Address endAddress) {
111 this.endAddress = endAddress;
114 public General.Operations getOperation() {
118 public void setOperation(General.Operations operation) {
119 this.operation = operation;
123 * ProxyRangeCommand build method.
125 * @return ProxyRangeCommand
126 * @throws IllegalArgumentException if vrf, operation, startAddress or endAddress is null.
128 public ProxyRangeCommand build() {
129 Preconditions.checkNotNull(operation, "Operation must not be null!");
130 Preconditions.checkNotNull(vrf, "vrf must not be null!");
131 Preconditions.checkNotNull(startAddress, "StartAddress must not be null!");
132 Preconditions.checkNotNull(endAddress, "EndAddress must not be null!");
133 return new ProxyRangeCommand(this);