--- /dev/null
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.controller.hosttracker.northbound;
+
+import java.io.Serializable;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector;
+import org.opendaylight.controller.sal.core.Node;
+import org.opendaylight.controller.sal.core.NodeConnector;
+import org.opendaylight.controller.sal.packet.address.DataLinkAddress;
+import org.opendaylight.controller.sal.packet.address.EthernetAddress;
+
+/**
+ * Configuration Java Object which represents a Host configuration information
+ * for HostTracker.
+ */
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.NONE)
+public class HostConfig implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @XmlElement
+ public String dataLayerAddress;
+ @XmlElement
+ private String nodeType;
+ @XmlElement
+ private String nodeId;
+ @XmlElement
+ private String nodeConnectorType;
+ @XmlElement
+ private String nodeConnectorId;
+ @XmlElement
+ private String vlan;
+ @XmlElement
+ private boolean staticHost;
+ @XmlElement
+ private String networkAddress;
+
+ public HostConfig() {
+
+ }
+
+ protected String getDataLayerAddress() {
+ return this.dataLayerAddress;
+ }
+
+ protected String getNodeType() {
+ return this.nodeType;
+ }
+
+ protected String getNodeId() {
+ return this.nodeId;
+ }
+
+ protected String getNodeConnectorType() {
+ return this.nodeConnectorType;
+ }
+
+ protected String getNodeConnectorId() {
+ return this.nodeConnectorId;
+ }
+
+ protected String getVlan() {
+ return this.vlan;
+ }
+
+ protected boolean isStaticHost() {
+ return staticHost;
+ }
+
+ protected String getNetworkAddress() {
+ return networkAddress;
+ }
+
+ public static HostConfig convert(HostNodeConnector hnc) {
+ if(hnc == null) {
+ return null;
+ }
+ HostConfig hc = new HostConfig();
+ DataLinkAddress dl = hnc.getDataLayerAddress();
+ if(dl instanceof EthernetAddress) {
+ EthernetAddress et = (EthernetAddress) dl;
+ hc.dataLayerAddress = et.getMacAddress();
+ } else {
+ hc.dataLayerAddress = dl.getName();
+ }
+ NodeConnector nc = hnc.getnodeConnector();
+ if(nc != null) {
+ hc.nodeConnectorType = nc.getType();
+ hc.nodeConnectorId = nc.getNodeConnectorIDString();
+ Node n = hnc.getnodeconnectorNode();
+ if(n != null) {
+ hc.nodeType = n.getType();
+ hc.nodeId = n.getNodeIDString();
+ }
+ }
+ hc.vlan = String.valueOf(hnc.getVlan());
+ hc.staticHost = hnc.isStaticHost();
+ hc.networkAddress = hnc.getNetworkAddressAsString();
+ return hc;
+ }
+}
import java.net.InetAddress;
import java.net.UnknownHostException;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
-import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
-import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.SecurityContext;
+import javax.xml.bind.JAXBElement;
import org.codehaus.enunciate.jaxrs.ResponseCode;
import org.codehaus.enunciate.jaxrs.StatusCodes;
return hostTracker;
}
+ private Hosts convertHosts(Set<HostNodeConnector> hostNodeConnectors) {
+ if(hostNodeConnectors == null) {
+ return null;
+ }
+ Set<HostConfig> hosts = new HashSet<HostConfig>();
+ for(HostNodeConnector hnc : hostNodeConnectors) {
+ hosts.add(HostConfig.convert(hnc));
+ }
+ return new Hosts(hosts);
+ }
+
/**
* Returns a list of all Hosts : both configured via PUT API and dynamically
* learnt on the network.
* Name of the Container. The Container name for the base
* controller is "default".
* @return List of Active Hosts.
+ * <pre>
+ *
+ * Example:
+ *
+ * RequestURL:
+ *
+ * http://localhost:8080/controller/nb/v2/host/default
+ *
+ * Response in XML
+ *
+ * <list>
+ *  <hostConfig>
+ *   <dataLayerAddress>00:00:00:00:01:01</dataLayerAddress>
+ *   <networkAddress>1.1.1.1</networkAddress>
+ *   <nodeType>OF</nodeType>
+ *   <nodeId>00:00:00:00:00:00:00:01</nodeId>
+ *   <nodeConnectorType>OF</nodeConnectorType>
+ *   <nodeConnectorId>9</nodeConnectorId>
+ *   <vlan>0</vlan>
+ *   <staticHost>false</staticHost>
+ *  </hostConfig>
+ *  <hostConfig>
+ *   <dataLayerAddress>00:00:00:00:02:02</dataLayerAddress>
+ *   <networkAddress>2.2.2.2</networkAddress>
+ *   <nodeType>OF</nodeType>
+ *   <nodeId>00:00:00:00:00:00:00:02</nodeId>
+ *   <nodeConnectorType>OF</nodeConnectorType>
+ *   <nodeConnectorId>5</nodeConnectorId>
+ *   <vlan>0</vlan>
+ *   <staticHost>false</staticHost>
+ *  </hostConfig>
+ * </list>
+ *
+ * Response in JSON:
+ *
+ * {
+ *  "hostConfig":[
+ *   {
+ *    "dataLayerAddress":"00:00:00:00:01:01",
+ *    "nodeType":"OF",
+ *    "nodeId":"00:00:00:00:00:00:00:01",
+ *    "nodeConnectorType":"OF",
+ *    "nodeConnectorId":"9",
+ *    "vlan":"0",
+ *    "staticHost":"false",
+ *    "networkAddress":"1.1.1.1"
+ *   },
+ *   {
+ *    "dataLayerAddress":"00:00:00:00:02:02",
+ *    "nodeType":"OF",
+ *    "nodeId":"00:00:00:00:00:00:00:02",
+ *    "nodeConnectorType":"OF",
+ *    "nodeConnectorId":"5",
+ *    "vlan":"0",
+ *    "staticHost":"false",
+ *    "networkAddress":"2.2.2.2"
+ *   }
+ *  ]
+ * }
+ * </pre>
*/
@Path("/{containerName}")
@GET
throw new ServiceUnavailableException("Host Tracker "
+ RestMessages.SERVICEUNAVAILABLE.toString());
}
-
- return new Hosts(hostTracker.getAllHosts());
+ return convertHosts(hostTracker.getAllHosts());
}
/**
* Name of the Container. The Container name for the base
* controller is "default".
* @return List of inactive Hosts.
+ * <pre>
+ *
+ * Example:
+ *
+ * RequestURL:
+ *
+ * http://localhost:8080/controller/nb/v2/host/default/inactive
+ *
+ * Response in XML
+ *
+ * <list>
+ *  <hostConfig>
+ *   <dataLayerAddress>00:00:00:00:01:01</dataLayerAddress>
+ *   <networkAddress>1.1.1.1</networkAddress>
+ *   <nodeType>OF</nodeType>
+ *   <nodeId>00:00:00:00:00:00:00:01</nodeId>
+ *   <nodeConnectorType>OF</nodeConnectorType>
+ *   <nodeConnectorId>9</nodeConnectorId>
+ *   <vlan>0</vlan>
+ *   <staticHost>false</staticHost>
+ *  </hostConfig>
+ *  <hostConfig>
+ *   <dataLayerAddress>00:00:00:00:02:02</dataLayerAddress>
+ *   <networkAddress>2.2.2.2</networkAddress>
+ *   <nodeType>OF</nodeType>
+ *   <nodeId>00:00:00:00:00:00:00:02</nodeId>
+ *   <nodeConnectorType>OF</nodeConnectorType>
+ *   <nodeConnectorId>5</nodeConnectorId>
+ *   <vlan>0</vlan>
+ *   <staticHost>false</staticHost>
+ *  </hostConfig>
+ * </list>
+ *
+ * Response in JSON:
+ *
+ * {
+ *  "hostConfig":[
+ *   {
+ *    "dataLayerAddress":"00:00:00:00:01:01",
+ *    "nodeType":"OF",
+ *    "nodeId":"00:00:00:00:00:00:00:01",
+ *    "nodeConnectorType":"OF",
+ *    "nodeConnectorId":"9",
+ *    "vlan":"0",
+ *    "staticHost":"false",
+ *    "networkAddress":"1.1.1.1"
+ *   },
+ *   {
+ *    "dataLayerAddress":"00:00:00:00:02:02",
+ *    "nodeType":"OF",
+ *    "nodeId":"00:00:00:00:00:00:00:02",
+ *    "nodeConnectorType":"OF",
+ *    "nodeConnectorId":"5",
+ *    "vlan":"0",
+ *    "staticHost":"false",
+ *    "networkAddress":"2.2.2.2"
+ *   }
+ *  ]
+ * }
+ * </pre>
*/
@Path("/{containerName}/inactive")
@GET
throw new ServiceUnavailableException("Host Tracker "
+ RestMessages.SERVICEUNAVAILABLE.toString());
}
-
- return new Hosts(hostTracker.getInactiveStaticHosts());
+ return convertHosts(hostTracker.getInactiveStaticHosts());
}
/**
* @param networkAddress
* IP Address being looked up
* @return host that matches the IP Address
+ * <pre>
+ *
+ * Example:
+ *
+ * RequestURL:
+ *
+ * http://localhost:8080/controller/nb/v2/host/default/1.1.1.1
+ *
+ * Response in XML
+ *
+ * <hostConfig>
+ *  <dataLayerAddress>00:00:00:00:01:01</dataLayerAddress>
+ *  <networkAddress>1.1.1.1</networkAddress>
+ *  <nodeType>OF</nodeType>
+ *  <nodeId>00:00:00:00:00:00:00:01</nodeId>
+ *  <nodeConnectorType>OF</nodeConnectorType>
+ *  <nodeConnectorId>9</nodeConnectorId>
+ *  <vlan>0</vlan>
+ *  <staticHost>false</staticHost>
+ * </hostConfig>
+ *
+ * Response in JSON:
+ *
+ * {
+ *  "dataLayerAddress":"00:00:00:00:01:01",
+ *  "nodeType":"OF",
+ *  "nodeId":"00:00:00:00:00:00:00:01",
+ *  "nodeConnectorType":"OF",
+ *  "nodeConnectorId":"9",
+ *  "vlan":"0",
+ *  "staticHost":"false",
+ *  "networkAddress":"1.1.1.1"
+ * }
+ * </pre>
*/
@Path("/{containerName}/{networkAddress}")
@GET
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
- @TypeHint(HostNodeConnector.class)
+ @TypeHint(HostConfig.class)
@StatusCodes({
@ResponseCode(code = 200, condition = "Operation successful"),
@ResponseCode(code = 404, condition = "The containerName is not found"),
@ResponseCode(code = 415, condition = "Invalid IP Address passed in networkAddress parameter"),
@ResponseCode(code = 503, condition = "One or more of Controller Services are unavailable") })
- public HostNodeConnector getHostDetails(
+ public HostConfig getHostDetails(
@PathParam("containerName") String containerName,
@PathParam("networkAddress") String networkAddress) {
if (!NorthboundUtils.isAuthorized(
}
for (HostNodeConnector host : hostTracker.getAllHosts()) {
if (host.getNetworkAddress().equals(ip)) {
- return host;
+ return HostConfig.convert(host);
}
}
throw new ResourceNotFoundException(RestMessages.NOHOST.toString());
* controller is "default".
* @param networkAddress
* Host IP Address
- * @param dataLayerAddress
- * Host L2 data-layer address.
- * @param nodeType
- * Node Type as specifid by Node class
- * @param nodeId
- * Node Identifier as specifid by Node class
- * @param nodeConnectorType
- * Port Type as specified by NodeConnector class
- * @param nodeConnectorId
- * Port Identifier as specified by NodeConnector class
- * @param vlan
- * Vlan number
+ * @param hostConfig
+ * Host Config Details
* @return Response as dictated by the HTTP Response Status code
+ *
+ * <pre>
+ *
+ * Example:
+ *
+ * RequestURL:
+ *
+ * http://localhost:8080/controller/nb/v2/host/default/1.1.1.1
+ *
+ * Request in XML
+ *
+ * <hostConfig>
+ *  <dataLayerAddress>00:00:00:00:01:01</dataLayerAddress>
+ *  <networkAddress>1.1.1.1</networkAddress>
+ *  <nodeType>OF</nodeType>
+ *  <nodeId>00:00:00:00:00:00:00:01</nodeId>
+ *  <nodeConnectorType>OF</nodeConnectorType>
+ *  <nodeConnectorId>9</nodeConnectorId>
+ *  <vlan>0</vlan>
+ *  <staticHost>false</staticHost>
+ * </hostConfig>
+ *
+ * Request in JSON:
+ *
+ * {
+ *  "dataLayerAddress":"00:00:00:00:01:01",
+ *  "nodeType":"OF",
+ *  "nodeId":"00:00:00:00:00:00:00:01",
+ *  "nodeConnectorType":"OF",
+ *  "nodeConnectorId":"9",
+ *  "vlan":"0",
+ *  "staticHost":"false",
+ *  "networkAddress":"1.1.1.1"
+ * }
+ * </pre>
*/
@Path("/{containerName}/{networkAddress}")
- @POST
+ @PUT
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@StatusCodes({
@ResponseCode(code = 201, condition = "Static host created successfully"),
@ResponseCode(code = 503, condition = "One or more of Controller services are unavailable") })
public Response addHost(@PathParam("containerName") String containerName,
@PathParam("networkAddress") String networkAddress,
- @QueryParam("dataLayerAddress") String dataLayerAddress,
- @QueryParam("nodeType") String nodeType,
- @QueryParam("nodeId") String nodeId,
- @QueryParam("nodeConnectorType") String nodeConnectorType,
- @QueryParam("nodeConnectorId") String nodeConnectorId,
- @DefaultValue("0") @QueryParam("vlan") String vlan) {
+ @TypeHint(HostConfig.class) JAXBElement<HostConfig> hostConfig) {
if (!NorthboundUtils.isAuthorized(
getUserName(), containerName, Privilege.WRITE, this)) {
+ RestMessages.SERVICEUNAVAILABLE.toString());
}
- Node node = handleNodeAvailability(containerName, nodeType, nodeId);
+ HostConfig hc = hostConfig.getValue();
+ Node node = handleNodeAvailability(containerName, hc.getNodeType(), hc.getNodeId());
if (node == null) {
throw new InternalServerErrorException(
RestMessages.NONODE.toString());
throw new UnsupportedMediaTypeException(networkAddress + " "
+ RestMessages.INVALIDADDRESS.toString());
}
- NodeConnector nc = NodeConnector.fromStringNoNode(nodeConnectorType,
- nodeConnectorId, node);
+ if(!networkAddress.equals(hc.getNetworkAddress())) {
+ throw new UnsupportedMediaTypeException(networkAddress + " is not the same as "
+ + hc.getNetworkAddress());
+ }
+ if(!hc.isStaticHost()) {
+ throw new UnsupportedMediaTypeException("StaticHost flag must be true");
+ }
+ NodeConnector nc = NodeConnector.fromStringNoNode(hc.getNodeConnectorType(), hc.getNodeConnectorId(), node);
if (nc == null) {
- throw new ResourceNotFoundException(nodeConnectorType + "|"
- + nodeConnectorId + " : " + RestMessages.NONODE.toString());
+ throw new ResourceNotFoundException(hc.getNodeConnectorType() + "|"
+ + hc.getNodeConnectorId() + " : " + RestMessages.NONODE.toString());
}
Status status = hostTracker.addStaticHost(networkAddress,
- dataLayerAddress, nc, vlan);
+ hc.getDataLayerAddress(), nc, hc.getVlan());
if (status.isSuccess()) {
NorthboundUtils.auditlog("Static Host", username, "added", networkAddress, containerName);
return Response.status(Response.Status.CREATED).build();
String baseURL = "http://127.0.0.1:8080/controller/nb/v2/host/default";
- // test POST method: addHost()
- String queryParameter = new QueryParameter("dataLayerAddress", dataLayerAddress_1).add("nodeType", nodeType_1)
- .add("nodeId", nodeId_1.toString()).add("nodeConnectorType", nodeConnectorType_1)
- .add("nodeConnectorId", nodeConnectorId_1.toString()).add("vlan", vlan_1).getString();
-
- String result = getJsonResult(baseURL + "/" + networkAddress_1 + queryParameter, "POST");
+ // test PUT method: addHost()
+ JSONObject fc_json = new JSONObject();
+ fc_json.put("dataLayerAddress", dataLayerAddress_1);
+ fc_json.put("nodeType", nodeType_1);
+ fc_json.put("nodeId", nodeId_1);
+ fc_json.put("nodeConnectorType", nodeType_1);
+ fc_json.put("nodeConnectorId", nodeConnectorId_1.toString());
+ fc_json.put("vlan", vlan_1);
+ fc_json.put("staticHost", "true");
+ fc_json.put("networkAddress", networkAddress_1);
+
+ String result = getJsonResult(baseURL + "/" + networkAddress_1, "PUT", fc_json.toString());
Assert.assertTrue(httpResponseCode == 201);
- // vlan is not passed through query parameter but should be
- // defaulted to "0"
- queryParameter = new QueryParameter("dataLayerAddress", dataLayerAddress_2).add("nodeType", nodeType_2)
- .add("nodeId", nodeId_2.toString()).add("nodeConnectorType", nodeConnectorType_2)
- .add("nodeConnectorId", nodeConnectorId_2.toString()).getString();
-
- result = getJsonResult(baseURL + "/" + networkAddress_2 + queryParameter, "POST");
+ fc_json = new JSONObject();
+ fc_json.put("dataLayerAddress", dataLayerAddress_2);
+ fc_json.put("nodeType", nodeType_2);
+ fc_json.put("nodeId", nodeId_2);
+ fc_json.put("nodeConnectorType", nodeType_2);
+ fc_json.put("nodeConnectorId", nodeConnectorId_2.toString());
+ fc_json.put("vlan", vlan_2);
+ fc_json.put("staticHost", "true");
+ fc_json.put("networkAddress", networkAddress_2);
+
+ result = getJsonResult(baseURL + "/" + networkAddress_2 , "PUT", fc_json.toString());
Assert.assertTrue(httpResponseCode == 201);
// define variables for decoding returned strings
JSONTokener jt = new JSONTokener(result);
JSONObject json = new JSONObject(jt);
// there should be at least two hosts in the DB
- Assert.assertTrue(json.get("host") instanceof JSONArray);
- JSONArray ja = json.getJSONArray("host");
+ Assert.assertTrue(json.get("hostConfig") instanceof JSONArray);
+ JSONArray ja = json.getJSONArray("hostConfig");
Integer count = ja.length();
Assert.assertTrue(count == 2);
for (int i = 0; i < count; i++) {
host_jo = ja.getJSONObject(i);
- dl_jo = host_jo.getJSONObject("dataLayerAddress");
- nc_jo = host_jo.getJSONObject("nodeConnector");
- node_jo = nc_jo.getJSONObject("node");
-
networkAddress = host_jo.getString("networkAddress");
if (networkAddress.equalsIgnoreCase(networkAddress_1)) {
- Assert.assertTrue(dl_jo.getString("macAddress").equalsIgnoreCase(dataLayerAddress_1));
- Assert.assertTrue(nc_jo.getString("@type").equalsIgnoreCase(nodeConnectorType_1));
- Assert.assertTrue(nc_jo.getInt("@id") == nodeConnectorId_1);
- Assert.assertTrue(node_jo.getString("@type").equalsIgnoreCase(nodeType_1));
- Assert.assertTrue(node_jo.getInt("@id") == nodeId_1);
+ Assert.assertTrue(host_jo.getString("dataLayerAddress").equalsIgnoreCase(dataLayerAddress_1));
+ Assert.assertTrue(host_jo.getString("nodeConnectorType").equalsIgnoreCase(nodeConnectorType_1));
+ Assert.assertTrue(host_jo.getInt("nodeConnectorId") == nodeConnectorId_1);
+ Assert.assertTrue(host_jo.getString("nodeType").equalsIgnoreCase(nodeType_1));
+ Assert.assertTrue(host_jo.getInt("nodeId") == nodeId_1);
Assert.assertTrue(host_jo.getString("vlan").equalsIgnoreCase(vlan_1));
+ Assert.assertTrue(host_jo.getBoolean("staticHost"));
} else if (networkAddress.equalsIgnoreCase(networkAddress_2)) {
- Assert.assertTrue(dl_jo.getString("macAddress").equalsIgnoreCase(dataLayerAddress_2));
- Assert.assertTrue(nc_jo.getString("@type").equalsIgnoreCase(nodeConnectorType_2));
- Assert.assertTrue(nc_jo.getInt("@id") == nodeConnectorId_2);
- Assert.assertTrue(node_jo.getString("@type").equalsIgnoreCase(nodeType_2));
- Assert.assertTrue(node_jo.getInt("@id") == nodeId_2);
+ Assert.assertTrue(host_jo.getString("dataLayerAddress").equalsIgnoreCase(dataLayerAddress_2));
+ Assert.assertTrue(host_jo.getString("nodeConnectorType").equalsIgnoreCase(nodeConnectorType_2));
+ Assert.assertTrue(host_jo.getInt("nodeConnectorId") == nodeConnectorId_2);
+ Assert.assertTrue(host_jo.getString("nodeType").equalsIgnoreCase(nodeType_2));
+ Assert.assertTrue(host_jo.getInt("nodeId") == nodeId_2);
Assert.assertTrue(host_jo.getString("vlan").equalsIgnoreCase(vlan_2));
+ Assert.assertTrue(host_jo.getBoolean("staticHost"));
} else {
Assert.assertTrue(false);
}
Assert.assertFalse(json.length() == 0);
- dl_jo = json.getJSONObject("dataLayerAddress");
- nc_jo = json.getJSONObject("nodeConnector");
- node_jo = nc_jo.getJSONObject("node");
-
- Assert.assertTrue(json.getString("networkAddress").equalsIgnoreCase(networkAddress_1));
- Assert.assertTrue(dl_jo.getString("macAddress").equalsIgnoreCase(dataLayerAddress_1));
- Assert.assertTrue(nc_jo.getString("@type").equalsIgnoreCase(nodeConnectorType_1));
- Assert.assertTrue(Integer.parseInt(nc_jo.getString("@id")) == nodeConnectorId_1);
- Assert.assertTrue(node_jo.getString("@type").equalsIgnoreCase(nodeType_1));
- Assert.assertTrue(Integer.parseInt(node_jo.getString("@id")) == nodeId_1);
+ Assert.assertTrue(json.getString("dataLayerAddress").equalsIgnoreCase(dataLayerAddress_1));
+ Assert.assertTrue(json.getString("nodeConnectorType").equalsIgnoreCase(nodeConnectorType_1));
+ Assert.assertTrue(json.getInt("nodeConnectorId") == nodeConnectorId_1);
+ Assert.assertTrue(json.getString("nodeType").equalsIgnoreCase(nodeType_1));
+ Assert.assertTrue(json.getInt("nodeId") == nodeId_1);
Assert.assertTrue(json.getString("vlan").equalsIgnoreCase(vlan_1));
+ Assert.assertTrue(json.getBoolean("staticHost"));
// test DELETE method for deleteFlow()
if (json.length() == 0) {
return false;
}
- if (json.get("host") instanceof JSONArray) {
- JSONArray ja = json.getJSONArray("host");
+ if (json.get("hostConfig") instanceof JSONArray) {
+ JSONArray ja = json.getJSONArray("hostConfig");
for (int i = 0; i < ja.length(); i++) {
String na = ja.getJSONObject(i).getString("networkAddress");
if (na.equalsIgnoreCase(hostIp))
}
return false;
} else {
- String na = json.getJSONObject("host").getString("networkAddress");
+ JSONObject ja = json.getJSONObject("hostConfig");
+ String na = ja.getString("networkAddress");
return (na.equalsIgnoreCase(hostIp)) ? true : false;
}
}