/* * Copyright 2015 Open Networking Laboratory * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.onosproject.netconf; import com.google.common.base.Preconditions; import org.onlab.packet.IpAddress; import org.onosproject.net.DeviceId; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.net.URI; import java.net.URISyntaxException; import java.util.Objects; /** * Represents a Netconf device information. */ public class NetconfDeviceInfo { public static final Logger log = LoggerFactory .getLogger(NetconfDeviceInfo.class); private String name; private String password; private IpAddress ipAddress; private int port; private File keyFile; /** * Information for contacting the controller. * * @param name the connection type * @param password the password for the device * @param ipAddress the ip address * @param port the tcp port */ public NetconfDeviceInfo(String name, String password, IpAddress ipAddress, int port) { Preconditions.checkArgument(!name.equals(""), "Empty device name"); Preconditions.checkNotNull(port > 0, "Negative port"); Preconditions.checkNotNull(ipAddress, "Null ip address"); this.name = name; this.password = password; this.ipAddress = ipAddress; this.port = port; } /** * Information for contacting the controller. * * @param name the connection type * @param password the password for the device * @param ipAddress the ip address * @param port the tcp port * @param keyString the string cointaing the key. */ public NetconfDeviceInfo(String name, String password, IpAddress ipAddress, int port, String keyString) { Preconditions.checkArgument(!name.equals(""), "Empty device name"); Preconditions.checkNotNull(port > 0, "Negative port"); Preconditions.checkNotNull(ipAddress, "Null ip address"); this.name = name; this.password = password; this.ipAddress = ipAddress; this.port = port; this.keyFile = new File(keyString); } /** * Exposes the name of the controller. * * @return String name */ public String name() { return name; } /** * Exposes the password of the controller. * * @return String password */ public String password() { return password; } /** * Exposes the ip address of the controller. * * @return IpAddress ip address */ public IpAddress ip() { return ipAddress; } /** * Exposes the port of the controller. * * @return int port address */ public int port() { return port; } /** * Exposes the keyFile of the controller. * * @return int port address */ public File getKeyFile() { return keyFile; } /** * Return the info about the device in a string. * String format: "netconf:name@ip:port" * * @return String device info */ public String toString() { return "netconf:" + name + "@" + ipAddress + ":" + port; } /** * Return the DeviceId about the device containing the URI. * * @return DeviceId */ public DeviceId getDeviceId() { try { return DeviceId.deviceId(new URI(this.toString())); } catch (URISyntaxException e) { log.debug("Unable to build deviceID for device {} ", this, e); } return null; } @Override public int hashCode() { return Objects.hash(ipAddress, port, name); } @Override public boolean equals(Object toBeCompared) { if (toBeCompared instanceof NetconfDeviceInfo) { NetconfDeviceInfo netconfDeviceInfo = (NetconfDeviceInfo) toBeCompared; if (netconfDeviceInfo.name().equals(name) && netconfDeviceInfo.ip().equals(ipAddress) && netconfDeviceInfo.port() == port && netconfDeviceInfo.password().equals(password)) { return true; } } return false; } }