diff --git a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackAuth.java b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackAuth.java
index fb6f53b..ae0af8f 100644
--- a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackAuth.java
+++ b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackAuth.java
@@ -27,7 +27,6 @@
 public final class DefaultOpenstackAuth implements OpenstackAuth {
 
     private final String version;
-    private final Integer port;
     private final Protocol protocol;
     private final String username;
     private final String password;
@@ -40,19 +39,17 @@
      * A default constructor of keystone authentication instance.
      *
      * @param version       version number
-     * @param port          endpoint port number
      * @param protocol      endpoint protocol type
      * @param username      keystone username
      * @param password      keystone password
      * @param project       project name
      * @param perspective   user perspective
      */
-    private DefaultOpenstackAuth(String version, Integer port, Protocol protocol,
+    private DefaultOpenstackAuth(String version, Protocol protocol,
                                    String username, String password, String project,
                                    Perspective perspective) {
 
         this.version = version;
-        this.port = port;
         this.protocol = protocol;
         this.username = username;
         this.password = password;
@@ -66,11 +63,6 @@
     }
 
     @Override
-    public Integer port() {
-        return port;
-    }
-
-    @Override
     public Protocol protocol() {
         return protocol;
     }
@@ -104,7 +96,6 @@
         if (obj instanceof DefaultOpenstackAuth) {
             DefaultOpenstackAuth that = (DefaultOpenstackAuth) obj;
             return Objects.equals(version, that.version) &&
-                    Objects.equals(port, that.port) &&
                     Objects.equals(protocol, that.protocol) &&
                     Objects.equals(username, that.username) &&
                     Objects.equals(password, that.password) &&
@@ -117,7 +108,6 @@
     @Override
     public int hashCode() {
         return Objects.hash(version,
-                port,
                 protocol,
                 username,
                 password,
@@ -129,7 +119,6 @@
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("version", version)
-                .add("port", port)
                 .add("protocol", protocol)
                 .add("username", username)
                 .add("password", password)
@@ -153,7 +142,6 @@
     public static final class Builder implements OpenstackAuth.Builder {
 
         private String version;
-        private Integer port;
         private Protocol protocol;
         private String username;
         private String password;
@@ -167,14 +155,12 @@
         @Override
         public OpenstackAuth build() {
             checkArgument(version != null, NOT_NULL_MSG, "version");
-            checkArgument(port != null, NOT_NULL_MSG, "port");
             checkArgument(protocol != null, NOT_NULL_MSG, "protocol");
             checkArgument(username != null, NOT_NULL_MSG, "username");
             checkArgument(password != null, NOT_NULL_MSG, "password");
             checkArgument(project != null, NOT_NULL_MSG, "project");
 
             return new DefaultOpenstackAuth(version,
-                    port,
                     protocol,
                     username,
                     password,
@@ -189,12 +175,6 @@
         }
 
         @Override
-        public Builder port(Integer port) {
-            this.port = port;
-            return this;
-        }
-
-        @Override
         public Builder protocol(Protocol protocol) {
             this.protocol = protocol;
             return this;
diff --git a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackNode.java b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackNode.java
index a7ee999..43a4535 100644
--- a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackNode.java
+++ b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackNode.java
@@ -56,7 +56,7 @@
     private final Collection<OpenstackPhyInterface> phyIntfs;
     private final Collection<ControllerInfo> controllers;
     private final OpenstackAuth auth;
-    private final String endPoint;
+    private final String endpoint;
     private final OpenstackSshAuth sshAuth;
     private final DatapathType datapathType;
 
@@ -78,7 +78,7 @@
      * @param phyIntfs      physical interfaces
      * @param controllers   customized controllers
      * @param auth          keystone authentication info
-     * @param endPoint      openstack endpoint URL
+     * @param endpoint      openstack endpoint URL
      * @param sshAuth       ssh authentication info
      * @param datapathType  data path type
      */
@@ -92,7 +92,7 @@
                                    Collection<OpenstackPhyInterface> phyIntfs,
                                    Collection<ControllerInfo> controllers,
                                    OpenstackAuth auth,
-                                   String endPoint,
+                                   String endpoint,
                                    OpenstackSshAuth sshAuth,
                                    DatapathType datapathType) {
         this.hostname = hostname;
@@ -106,7 +106,7 @@
         this.phyIntfs = phyIntfs;
         this.controllers = controllers;
         this.auth = auth;
-        this.endPoint = endPoint;
+        this.endpoint = endpoint;
         this.sshAuth = sshAuth;
         this.datapathType = datapathType;
     }
@@ -255,7 +255,7 @@
                     Objects.equals(phyIntfs, that.phyIntfs) &&
                     Objects.equals(controllers, that.controllers) &&
                     Objects.equals(auth, that.auth) &&
-                    Objects.equals(endPoint, that.endPoint) &&
+                    Objects.equals(endpoint, that.endpoint) &&
                     Objects.equals(sshAuth, that.sshAuth) &&
                     Objects.equals(datapathType, that.datapathType);
         }
@@ -274,7 +274,7 @@
                 phyIntfs,
                 controllers,
                 auth,
-                endPoint,
+                endpoint,
                 sshAuth,
                 datapathType);
     }
@@ -293,7 +293,7 @@
                 .add("phyIntfs", phyIntfs)
                 .add("controllers", controllers)
                 .add("auth", auth)
-                .add("endpoint", endPoint)
+                .add("endpoint", endpoint)
                 .add("sshAuth", sshAuth)
                 .add("datapathType", datapathType)
                 .toString();
@@ -313,7 +313,7 @@
                 .phyIntfs(phyIntfs)
                 .controllers(controllers)
                 .authentication(auth)
-                .endPoint(endPoint)
+                .endpoint(endpoint)
                 .sshAuthInfo(sshAuth)
                 .datapathType(datapathType)
                 .build();
@@ -333,7 +333,7 @@
                 .phyIntfs(phyIntfs)
                 .controllers(controllers)
                 .authentication(auth)
-                .endPoint(endPoint)
+                .endpoint(endpoint)
                 .sshAuthInfo(sshAuth)
                 .datapathType(datapathType)
                 .build();
@@ -389,8 +389,8 @@
     }
 
     @Override
-    public String endPoint() {
-        return endPoint;
+    public String endpoint() {
+        return endpoint;
     }
 
     /**
@@ -421,7 +421,7 @@
                 .phyIntfs(osNode.phyIntfs())
                 .controllers(osNode.controllers())
                 .authentication(osNode.authentication())
-                .endPoint(osNode.endPoint())
+                .endpoint(osNode.endpoint())
                 .sshAuthInfo(osNode.sshAuthInfo())
                 .datapathType(osNode.datapathType());
     }
@@ -442,7 +442,7 @@
         private Collection<OpenstackPhyInterface> phyIntfs;
         private Collection<ControllerInfo> controllers;
         private OpenstackAuth auth;
-        private String endPoint;
+        private String endpoint;
         private OpenstackSshAuth sshAuth;
         private DatapathType datapathType = DatapathType.NORMAL;
 
@@ -462,7 +462,7 @@
                     throw new IllegalArgumentException("Either data IP or VLAN interface is required");
                 }
             } else {
-                checkArgument(endPoint != null, NOT_NULL_MSG, "endpoint URL");
+                checkArgument(endpoint != null, NOT_NULL_MSG, "endpoint URL");
             }
 
             if (type == NodeType.GATEWAY && uplinkPort == null) {
@@ -480,7 +480,7 @@
                     phyIntfs,
                     controllers,
                     auth,
-                    endPoint,
+                    endpoint,
                     sshAuth,
                     datapathType);
         }
@@ -554,8 +554,8 @@
         }
 
         @Override
-        public Builder endPoint(String endPoint) {
-            this.endPoint = endPoint;
+        public Builder endpoint(String endpoint) {
+            this.endpoint = endpoint;
             return this;
         }
 
diff --git a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackAuth.java b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackAuth.java
index e7e04cb..7704efe 100644
--- a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackAuth.java
+++ b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackAuth.java
@@ -45,13 +45,6 @@
     String version();
 
     /**
-     * Returns the keystone authentication port number.
-     *
-     * @return keystone authentication port number
-     */
-    Integer port();
-
-    /**
      * Returns the keystone authentication protocol type.
      *
      * @return keystone authentication protocol type
@@ -107,14 +100,6 @@
         Builder version(String version);
 
         /**
-         * Returns keystone authentication builder with supplied port number.
-         *
-         * @param port port number
-         * @return keystone authentication builder
-         */
-        Builder port(Integer port);
-
-        /**
          * Returns keystone authentication builder with supplied protocol.
          *
          * @param protocol protocol
diff --git a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java
index 3a56593..7fbbf9a 100644
--- a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java
+++ b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java
@@ -221,7 +221,7 @@
      *
      * @return keystone authentication info
      */
-    String endPoint();
+    String endpoint();
 
     /**
      * Returns a collection of customized controllers.
@@ -340,10 +340,10 @@
         /**
          * Returns openstack node builder with supplied endpoint info.
          *
-         * @param endPoint endpoint info
+         * @param endpoint endpoint info
          * @return openstack node builder
          */
-        Builder endPoint(String endPoint);
+        Builder endpoint(String endpoint);
 
         /**
          * Returns openstack node builder with supplied ssh authentication info.
diff --git a/apps/openstacknode/api/src/test/java/org/onosproject/openstacknode/api/OpenstackNodeAdapter.java b/apps/openstacknode/api/src/test/java/org/onosproject/openstacknode/api/OpenstackNodeAdapter.java
index e83f198..333edb0 100644
--- a/apps/openstacknode/api/src/test/java/org/onosproject/openstacknode/api/OpenstackNodeAdapter.java
+++ b/apps/openstacknode/api/src/test/java/org/onosproject/openstacknode/api/OpenstackNodeAdapter.java
@@ -140,7 +140,7 @@
     }
 
     @Override
-    public String endPoint() {
+    public String endpoint() {
         return null;
     }
 
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackAuthCodec.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackAuthCodec.java
index 35e806d..d3ddabb 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackAuthCodec.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackAuthCodec.java
@@ -35,7 +35,6 @@
     private final Logger log = getLogger(getClass());
 
     private static final String VERSION = "version";
-    private static final String PORT = "port";
     private static final String PROTOCOL = "protocol";
     private static final String USERNAME = "username";
     private static final String PASSWORD = "password";
@@ -50,7 +49,6 @@
 
         ObjectNode result = context.mapper().createObjectNode()
                 .put(VERSION, auth.version())
-                .put(PORT, auth.port())
                 .put(PROTOCOL, auth.protocol().name())
                 .put(USERNAME, auth.username())
                 .put(PASSWORD, auth.password())
@@ -71,8 +69,6 @@
 
         String version = nullIsIllegal(json.get(VERSION).asText(),
                 VERSION + MISSING_MESSAGE);
-        Integer port = nullIsIllegal(json.get(PORT).asInt(),
-                PORT + MISSING_MESSAGE);
         String protocol = nullIsIllegal(json.get(PROTOCOL).asText(),
                 PROTOCOL + MISSING_MESSAGE);
         String username = nullIsIllegal(json.get(USERNAME).asText(),
@@ -84,7 +80,6 @@
 
         DefaultOpenstackAuth.Builder authBuilder = DefaultOpenstackAuth.builder()
                 .version(version)
-                .port(port)
                 .protocol(OpenstackAuth.Protocol.valueOf(protocol))
                 .username(username)
                 .password(password)
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackNodeCodec.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackNodeCodec.java
index ef7b341..66a3f8b 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackNodeCodec.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackNodeCodec.java
@@ -59,7 +59,7 @@
     private static final String PHYSICAL_INTERFACES = "phyIntfs";
     private static final String CONTROLLERS = "controllers";
     private static final String AUTHENTICATION = "authentication";
-    private static final String END_POINT = "endPoint";
+    private static final String END_POINT = "endpoint";
     private static final String SSH_AUTH = "sshAuth";
     private static final String DATA_PATH_TYPE = "datapathType";
 
@@ -84,7 +84,7 @@
         }
 
         if (type == OpenstackNode.NodeType.CONTROLLER) {
-            result.put(END_POINT, node.endPoint());
+            result.put(END_POINT, node.endpoint());
         }
 
         if (node.intgBridge() != null) {
@@ -156,7 +156,7 @@
         if (type.equals(CONTROLLER)) {
             String endPoint = nullIsIllegal(json.get(END_POINT).asText(),
                     END_POINT + MISSING_MESSAGE);
-            nodeBuilder.endPoint(endPoint);
+            nodeBuilder.endpoint(endPoint);
         }
         if (json.get(VLAN_INTF_NAME) != null) {
             nodeBuilder.vlanIntf(json.get(VLAN_INTF_NAME).asText());
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/util/OpenstackNodeUtil.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/util/OpenstackNodeUtil.java
index e970b2b..4d8167b 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/util/OpenstackNodeUtil.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/util/OpenstackNodeUtil.java
@@ -212,17 +212,7 @@
         StringBuilder endpointSb = new StringBuilder();
         endpointSb.append(auth.protocol().name().toLowerCase());
         endpointSb.append("://");
-        endpointSb.append(node.endPoint());
-        endpointSb.append(":");
-        endpointSb.append(auth.port());
-        endpointSb.append("/");
-
-        // in case the version is v3, we need to append identity path into endpoint
-        if (auth.version().equals(KEYSTONE_V3)) {
-            endpointSb.append(IDENTITY_PATH);
-        }
-
-        endpointSb.append(auth.version());
+        endpointSb.append(node.endpoint());
         return endpointSb.toString();
     }
 
diff --git a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackAuthJsonMatcher.java b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackAuthJsonMatcher.java
index 2f165f9..bed83ad 100644
--- a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackAuthJsonMatcher.java
+++ b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackAuthJsonMatcher.java
@@ -50,14 +50,6 @@
             return false;
         }
 
-        // check port
-        Integer jsonPort = jsonNode.get(PORT).asInt();
-        Integer port = auth.port();
-        if (!jsonPort.equals(port)) {
-            description.appendText("port was " + jsonPort);
-            return false;
-        }
-
         // check protocol
         String jsonProtocol = jsonNode.get(PROTOCOL).asText();
         String protocol = auth.protocol().name();
diff --git a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackNodeCodecTest.java b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackNodeCodecTest.java
index 3d45238..49b67a5 100644
--- a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackNodeCodecTest.java
+++ b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackNodeCodecTest.java
@@ -181,7 +181,6 @@
     public void testOpenstackControllerNodeEncode() {
         OpenstackAuth auth = DefaultOpenstackAuth.builder()
                 .version("v2.0")
-                .port(35357)
                 .protocol(OpenstackAuth.Protocol.HTTP)
                 .project("admin")
                 .username("admin")
@@ -194,7 +193,7 @@
                 .type(OpenstackNode.NodeType.CONTROLLER)
                 .state(NodeState.INIT)
                 .managementIp(IpAddress.valueOf("172.16.130.10"))
-                .endPoint("keystone-end-point-url")
+                .endpoint("keystone-end-point-url")
                 .authentication(auth)
                 .build();
 
@@ -212,12 +211,11 @@
         assertThat(node.hostname(), is("controller"));
         assertThat(node.type().name(), is("CONTROLLER"));
         assertThat(node.managementIp().toString(), is("172.16.130.10"));
-        assertThat(node.endPoint(), is("keystone-end-point-url"));
+        assertThat(node.endpoint(), is("keystone-end-point-url"));
 
         OpenstackAuth auth = node.authentication();
 
         assertThat(auth.version(), is("v2.0"));
-        assertThat(auth.port(), is(35357));
         assertThat(auth.protocol(), is(OpenstackAuth.Protocol.HTTP));
         assertThat(auth.username(), is("admin"));
         assertThat(auth.password(), is("nova"));
diff --git a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackNodeJsonMatcher.java b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackNodeJsonMatcher.java
index 3614f5f..b53c31c 100644
--- a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackNodeJsonMatcher.java
+++ b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/codec/OpenstackNodeJsonMatcher.java
@@ -40,7 +40,7 @@
     private static final String PHYSICAL_INTERFACES = "phyIntfs";
     private static final String CONTROLLERS = "controllers";
     private static final String AUTHENTICATION = "authentication";
-    private static final String END_POINT = "endPoint";
+    private static final String END_POINT = "endpoint";
     private static final String SSH_AUTH = "sshAuth";
     private static final String DATA_PATH_TYPE = "datapathType";
 
@@ -135,11 +135,11 @@
         }
 
         // check endpoint URL
-        JsonNode jsonEndPoint = jsonNode.get(END_POINT);
-        if (jsonEndPoint != null) {
-            String endPoint = node.endPoint();
-            if (!jsonEndPoint.asText().equals(endPoint)) {
-                description.appendText("endpoint URL was " + jsonEndPoint);
+        JsonNode jsonEndpoint = jsonNode.get(END_POINT);
+        if (jsonEndpoint != null) {
+            String endpoint = node.endpoint();
+            if (!jsonEndpoint.asText().equals(endpoint)) {
+                description.appendText("endpoint URL was " + jsonEndpoint);
                 return false;
             }
         }
diff --git a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackAuthTest.java b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackAuthTest.java
index 7a09f96..e602cf2 100644
--- a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackAuthTest.java
+++ b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackAuthTest.java
@@ -33,24 +33,20 @@
     private static final String PROJECT = "admin";
     private static final String VERSION_1 = "v2.0";
     private static final String VERSION_2 = "v3";
-    private static final Integer PORT_1 = 35357;
-    private static final Integer PORT_2 = 5000;
     private static final OpenstackAuth.Protocol PROTOCOL_1 = OpenstackAuth.Protocol.HTTP;
     private static final OpenstackAuth.Protocol PROTOCOL_2 = OpenstackAuth.Protocol.HTTPS;
 
     private static final OpenstackAuth OS_AUTH_1 =
-                         createOpenstackAuth(VERSION_1, PORT_1, PROTOCOL_1);
+                         createOpenstackAuth(VERSION_1, PROTOCOL_1);
     private static final OpenstackAuth OS_AUTH_2 =
-                         createOpenstackAuth(VERSION_2, PORT_2, PROTOCOL_2);
+                         createOpenstackAuth(VERSION_2, PROTOCOL_2);
     private static final OpenstackAuth OS_AUTH_3 =
-                         createOpenstackAuth(VERSION_1, PORT_1, PROTOCOL_1);
+                         createOpenstackAuth(VERSION_1, PROTOCOL_1);
 
     private static OpenstackAuth createOpenstackAuth(String version,
-                                              Integer port,
                                               OpenstackAuth.Protocol protocol) {
         return DefaultOpenstackAuth.builder()
                 .version(version)
-                .port(port)
                 .protocol(protocol)
                 .username(USERNAME)
                 .password(PASSWORD)
@@ -77,7 +73,6 @@
         OpenstackAuth auth = OS_AUTH_1;
 
         assertThat(auth.version(), is("v2.0"));
-        assertThat(auth.port(), is(35357));
         assertThat(auth.protocol(), is(OpenstackAuth.Protocol.HTTP));
         assertThat(auth.username(), is("admin"));
         assertThat(auth.password(), is("nova"));
diff --git a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandlerTest.java b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandlerTest.java
index e24b4e4..9ed0a3a 100644
--- a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandlerTest.java
+++ b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandlerTest.java
@@ -501,7 +501,7 @@
                                   Set<OpenstackPhyInterface> phyIntfs,
                                   Set<ControllerInfo> controllers,
                                   OpenstackAuth auth,
-                                  String endPoint,
+                                  String endpoint,
                                   OpenstackSshAuth sshAuth,
                                   DatapathType datapathType) {
             super(hostname,
@@ -515,7 +515,7 @@
                     phyIntfs,
                     controllers,
                     auth,
-                    endPoint,
+                    endpoint,
                     sshAuth,
                     datapathType);
         }
diff --git a/apps/openstacknode/app/src/test/resources/org/onosproject/openstacknode/codec/OpenstackControllerNode.json b/apps/openstacknode/app/src/test/resources/org/onosproject/openstacknode/codec/OpenstackControllerNode.json
index 705a977..c60baad 100644
--- a/apps/openstacknode/app/src/test/resources/org/onosproject/openstacknode/codec/OpenstackControllerNode.json
+++ b/apps/openstacknode/app/src/test/resources/org/onosproject/openstacknode/codec/OpenstackControllerNode.json
@@ -2,7 +2,7 @@
   "hostname": "controller",
   "type": "CONTROLLER",
   "managementIp": "172.16.130.10",
-  "endPoint": "keystone-end-point-url",
+  "endpoint": "keystone-end-point-url",
   "authentication": {
     "version": "v2.0",
     "port": 35357,
diff --git a/apps/openstacknode/network-cfg.json b/apps/openstacknode/network-cfg.json
index 6de0cf3..b173147 100644
--- a/apps/openstacknode/network-cfg.json
+++ b/apps/openstacknode/network-cfg.json
@@ -62,7 +62,7 @@
             "hostname" : "controller",
             "type" : "CONTROLLER",
             "managementIp" : "172.16.130.10",
-            "endPoint" : "keystone-endpoint-url",
+            "endpoint" : "keystone-endpoint-url",
             "authentication" : {
               "version" : "v2.0",
               "port" : 35357,
