Claudine Chiu

ONOS-3931: BasicDeviceConfig to allow configuration of DeviceKeyId

Change-Id: I75d37709f19913f3382fa7614291e5a837ecf1a1
...@@ -17,7 +17,7 @@ package org.onosproject.net.config.basics; ...@@ -17,7 +17,7 @@ package org.onosproject.net.config.basics;
17 17
18 import org.onosproject.net.Device; 18 import org.onosproject.net.Device;
19 import org.onosproject.net.DeviceId; 19 import org.onosproject.net.DeviceId;
20 - 20 +import org.onosproject.net.key.DeviceKeyId;
21 /** 21 /**
22 * Basic configuration for network infrastructure devices. 22 * Basic configuration for network infrastructure devices.
23 */ 23 */
...@@ -30,12 +30,13 @@ public final class BasicDeviceConfig extends BasicElementConfig<DeviceId> { ...@@ -30,12 +30,13 @@ public final class BasicDeviceConfig extends BasicElementConfig<DeviceId> {
30 private static final String HW_VERSION = "hwVersion"; 30 private static final String HW_VERSION = "hwVersion";
31 private static final String SW_VERSION = "swVersion"; 31 private static final String SW_VERSION = "swVersion";
32 private static final String SERIAL = "serial"; 32 private static final String SERIAL = "serial";
33 + private static final String DEVICE_KEY_ID = "deviceKeyId";
33 34
34 @Override 35 @Override
35 public boolean isValid() { 36 public boolean isValid() {
36 return hasOnlyFields(ALLOWED, NAME, LATITUDE, LONGITUDE, RACK_ADDRESS, OWNER, 37 return hasOnlyFields(ALLOWED, NAME, LATITUDE, LONGITUDE, RACK_ADDRESS, OWNER,
37 TYPE, DRIVER, MANUFACTURER, HW_VERSION, SW_VERSION, SERIAL, 38 TYPE, DRIVER, MANUFACTURER, HW_VERSION, SW_VERSION, SERIAL,
38 - MANAGEMENT_ADDRESS); 39 + MANAGEMENT_ADDRESS, DEVICE_KEY_ID);
39 } 40 }
40 41
41 /** 42 /**
...@@ -162,7 +163,7 @@ public final class BasicDeviceConfig extends BasicElementConfig<DeviceId> { ...@@ -162,7 +163,7 @@ public final class BasicDeviceConfig extends BasicElementConfig<DeviceId> {
162 } 163 }
163 164
164 /** 165 /**
165 - * Sets the driver name. 166 + * Sets the device management ip (ip:port).
166 * 167 *
167 * @param managementAddress new device management address (ip:port); null to clear 168 * @param managementAddress new device management address (ip:port); null to clear
168 * @return self 169 * @return self
...@@ -171,6 +172,27 @@ public final class BasicDeviceConfig extends BasicElementConfig<DeviceId> { ...@@ -171,6 +172,27 @@ public final class BasicDeviceConfig extends BasicElementConfig<DeviceId> {
171 return (BasicDeviceConfig) setOrClear(MANAGEMENT_ADDRESS, managementAddress); 172 return (BasicDeviceConfig) setOrClear(MANAGEMENT_ADDRESS, managementAddress);
172 } 173 }
173 174
175 + /**
176 + * Returns the device key id.
177 + *
178 + * @return device key id or null if not set
179 + */
180 + public DeviceKeyId deviceKeyId() {
181 + String s = get(DEVICE_KEY_ID, null);
182 + return s == null ? null : DeviceKeyId.deviceKeyId(s);
183 + }
184 +
185 + /**
186 + * Sets the device key id.
187 + *
188 + * @param deviceKeyId new device key id; null to clear
189 + * @return self
190 + */
191 + public BasicDeviceConfig deviceKeyId(DeviceKeyId deviceKeyId) {
192 + return (BasicDeviceConfig) setOrClear(DEVICE_KEY_ID,
193 + deviceKeyId != null ? deviceKeyId.id() : null);
194 + }
195 +
174 // TODO: device port meta-data to be configured via BasicPortsConfig 196 // TODO: device port meta-data to be configured via BasicPortsConfig
175 // TODO: device credentials/keys; in a separate config 197 // TODO: device credentials/keys; in a separate config
176 198
......
...@@ -20,6 +20,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; ...@@ -20,6 +20,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
20 import com.fasterxml.jackson.databind.node.JsonNodeFactory; 20 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
21 import org.junit.Before; 21 import org.junit.Before;
22 import org.junit.Test; 22 import org.junit.Test;
23 +import org.onosproject.net.key.DeviceKeyId;
23 import org.onosproject.net.DeviceId; 24 import org.onosproject.net.DeviceId;
24 import org.onosproject.net.config.ConfigApplyDelegate; 25 import org.onosproject.net.config.ConfigApplyDelegate;
25 26
...@@ -39,12 +40,14 @@ public class BasicDeviceConfigTest { ...@@ -39,12 +40,14 @@ public class BasicDeviceConfigTest {
39 private static final String SW_VERSION = "0.0"; 40 private static final String SW_VERSION = "0.0";
40 private static final String SERIAL = "1234"; 41 private static final String SERIAL = "1234";
41 private static final String MANAGEMENT_ADDRESS = "12.34.56.78:99"; 42 private static final String MANAGEMENT_ADDRESS = "12.34.56.78:99";
43 + private static final DeviceKeyId DEVICE_KEY_ID = DeviceKeyId.deviceKeyId("fooDeviceKeyId");
42 private static final String DRIVER_NEW = "barDriver"; 44 private static final String DRIVER_NEW = "barDriver";
43 private static final String MANUFACTURER_NEW = "barManufacturer"; 45 private static final String MANUFACTURER_NEW = "barManufacturer";
44 private static final String HW_VERSION_NEW = "1.1"; 46 private static final String HW_VERSION_NEW = "1.1";
45 private static final String SW_VERSION_NEW = "1.1"; 47 private static final String SW_VERSION_NEW = "1.1";
46 private static final String SERIAL_NEW = "5678"; 48 private static final String SERIAL_NEW = "5678";
47 private static final String MANAGEMENT_ADDRESS_NEW = "99.87.65.43:12"; 49 private static final String MANAGEMENT_ADDRESS_NEW = "99.87.65.43:12";
50 + private static final DeviceKeyId DEVICE_KEY_ID_NEW = DeviceKeyId.deviceKeyId("barDeviceKeyId");
48 51
49 private static final String NAME1 = "fooProtocol:fooIP:fooPort"; 52 private static final String NAME1 = "fooProtocol:fooIP:fooPort";
50 53
...@@ -58,7 +61,8 @@ public class BasicDeviceConfigTest { ...@@ -58,7 +61,8 @@ public class BasicDeviceConfigTest {
58 public void setUp() { 61 public void setUp() {
59 SW_BDC.init(DeviceId.deviceId(NAME1), NAME1, JsonNodeFactory.instance.objectNode(), mapper, delegate); 62 SW_BDC.init(DeviceId.deviceId(NAME1), NAME1, JsonNodeFactory.instance.objectNode(), mapper, delegate);
60 SW_BDC.type(SWITCH).manufacturer(MANUFACTURER).hwVersion(HW_VERSION) 63 SW_BDC.type(SWITCH).manufacturer(MANUFACTURER).hwVersion(HW_VERSION)
61 - .swVersion(SW_VERSION).serial(SERIAL).managementAddress(MANAGEMENT_ADDRESS).driver(DRIVER); 64 + .swVersion(SW_VERSION).serial(SERIAL).managementAddress(MANAGEMENT_ADDRESS).driver(DRIVER)
65 + .deviceKeyId(DEVICE_KEY_ID);
62 } 66 }
63 67
64 @Test 68 @Test
...@@ -71,6 +75,7 @@ public class BasicDeviceConfigTest { ...@@ -71,6 +75,7 @@ public class BasicDeviceConfigTest {
71 assertEquals("Incorrect swVersion", SW_VERSION, SW_BDC.swVersion()); 75 assertEquals("Incorrect swVersion", SW_VERSION, SW_BDC.swVersion());
72 assertEquals("Incorrect serial", SERIAL, SW_BDC.serial()); 76 assertEquals("Incorrect serial", SERIAL, SW_BDC.serial());
73 assertEquals("Incorrect management Address", MANAGEMENT_ADDRESS, SW_BDC.managementAddress()); 77 assertEquals("Incorrect management Address", MANAGEMENT_ADDRESS, SW_BDC.managementAddress());
78 + assertEquals("Incorrect deviceKeyId", DEVICE_KEY_ID, SW_BDC.deviceKeyId());
74 } 79 }
75 80
76 81
...@@ -119,4 +124,14 @@ public class BasicDeviceConfigTest { ...@@ -119,4 +124,14 @@ public class BasicDeviceConfigTest {
119 SW_BDC.managementAddress(MANAGEMENT_ADDRESS_NEW); 124 SW_BDC.managementAddress(MANAGEMENT_ADDRESS_NEW);
120 assertEquals("Incorrect managementAddress", MANAGEMENT_ADDRESS_NEW, SW_BDC.managementAddress()); 125 assertEquals("Incorrect managementAddress", MANAGEMENT_ADDRESS_NEW, SW_BDC.managementAddress());
121 } 126 }
127 +
128 + @Test
129 + public void testSetDeviceKeyId() {
130 + // change device key id
131 + SW_BDC.deviceKeyId(DEVICE_KEY_ID_NEW);
132 + assertEquals("Incorrect deviceKeyId", DEVICE_KEY_ID_NEW, SW_BDC.deviceKeyId());
133 + // clear device key id
134 + SW_BDC.deviceKeyId(null);
135 + assertEquals("Incorrect deviceKeyId", null, SW_BDC.deviceKeyId());
136 + }
122 } 137 }
...\ No newline at end of file ...\ No newline at end of file
......