Add flexible mount point naming strategy 02/81402/2
authoragosain <agosain@luminanetworks.com>
Fri, 8 Feb 2019 21:31:42 +0000 (13:31 -0800)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 24 May 2019 12:10:13 +0000 (14:10 +0200)
The user can now configure mount point names to either contain
IP address and port (default), or just the IP address.

Change-Id: Iea07f49ace2f9d0c5826e08791847e414c261403
Signed-off-by: agosain <agosain@luminanetworks.com>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 5855a337cbe0657c8dfd9ef3fba2d2d94939965a)

netconf/callhome-model/src/main/yang/odl-netconf-callhome-server.yang
netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeAuthProviderImpl.java

index 52a9b0f4c34985ca60e40361dbdfc7e0c655bd26..4a4d168316538e3c40633fa046df7335acb52792 100644 (file)
@@ -43,6 +43,15 @@ module odl-netconf-callhome-server {
         type boolean;
         default false;
       }
+
+      leaf mount-point-naming-strategy {
+        type enumeration {
+            enum IP_PORT;
+            enum IP_ONLY;
+        }
+        default IP_PORT;
+        description "Mount name will be chosen as per this strategy in the absence of per device settings. Default is IP_PORT";
+      }
     }
 
     container allowed-devices {
index 9a345b02f3fe1e39ce8e1980fe0aa8f8484291a2..eda8ba2dd6b34ca47d23864ce15755789bd0f36c 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.netconf.callhome.mount;
 
 import com.google.common.collect.Iterables;
-import com.google.common.net.InetAddresses;
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
@@ -33,6 +32,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netconf.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netconf.callhome.server.rev161109.credentials.Credentials;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netconf.callhome.server.rev161109.netconf.callhome.server.AllowedDevices;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netconf.callhome.server.rev161109.netconf.callhome.server.Global;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netconf.callhome.server.rev161109.netconf.callhome.server.Global.MountPointNamingStrategy;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netconf.callhome.server.rev161109.netconf.callhome.server.allowed.devices.Device;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -119,10 +119,20 @@ public class CallHomeAuthProviderImpl implements CallHomeAuthorizationProvider,
         deviceOpReg.close();
     }
 
-    private static String fromRemoteAddress(final SocketAddress remoteAddress) {
+    private String fromRemoteAddress(final SocketAddress remoteAddress) {
         if (remoteAddress instanceof InetSocketAddress) {
             InetSocketAddress socketAddress = (InetSocketAddress) remoteAddress;
-            return InetAddresses.toAddrString(socketAddress.getAddress()) + ":" + socketAddress.getPort();
+            String ip = socketAddress.getAddress().getHostAddress();
+
+            final MountPointNamingStrategy strat = globalConfig.getMountPointNamingStrategy();
+            switch (strat) {
+                case IPONLY:
+                    return ip;
+                case IPPORT:
+                    return ip + ":" + socketAddress.getPort();
+                default:
+                    throw new IllegalStateException("Unhandled naming strategy " + strat);
+            }
         }
         return remoteAddress.toString();
     }
@@ -256,5 +266,11 @@ public class CallHomeAuthProviderImpl implements CallHomeAuthorizationProvider,
             final Global local = current;
             return local != null ? local.getCredentials() : null;
         }
+
+        MountPointNamingStrategy getMountPointNamingStrategy() {
+            final Global local = current;
+            final MountPointNamingStrategy strat = local != null ? local.getMountPointNamingStrategy() : null;
+            return strat == null ? MountPointNamingStrategy.IPPORT : strat;
+        }
     }
 }