From e0630717d8cf764dc7e943f7eb3718af7baba755 Mon Sep 17 00:00:00 2001 From: Munish Mehta <munish.mehta@bigswitch.com> Date: Thu, 21 Jun 2012 13:41:58 -0700 Subject: [PATCH] System uptime support --- .../core/IFloodlightProviderService.java | 7 +++++++ .../core/internal/Controller.java | 11 +++++++++++ .../core/web/CoreWebRoutable.java | 1 + .../core/web/SystemUptimeResource.java | 15 +++++++++++++++ .../core/test/MockFloodlightProvider.java | 8 ++++++++ 5 files changed, 42 insertions(+) create mode 100644 src/main/java/net/floodlightcontroller/core/web/SystemUptimeResource.java diff --git a/src/main/java/net/floodlightcontroller/core/IFloodlightProviderService.java b/src/main/java/net/floodlightcontroller/core/IFloodlightProviderService.java index ab1df5e24..4a5a43d41 100644 --- a/src/main/java/net/floodlightcontroller/core/IFloodlightProviderService.java +++ b/src/main/java/net/floodlightcontroller/core/IFloodlightProviderService.java @@ -191,5 +191,12 @@ public interface IFloodlightProviderService extends IFloodlightService { * @return */ public Map<String, Object> getControllerInfo(String type); + + + /** + * Return the controller uptime in milliseconds + * @return + */ + public long getSystemUptime(); } diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java index 8b6f2464a..94b9b3cb0 100644 --- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java +++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java @@ -174,6 +174,9 @@ public class Controller implements IFloodlightProviderService, // If the controller isn't configured to support roles, then this is null. protected Role role; + // Start time of the controller + protected long systemStartTime; + // Storage table names protected static final String CONTROLLER_TABLE_NAME = "controller_controller"; protected static final String CONTROLLER_ID = "id"; @@ -1926,6 +1929,7 @@ public class Controller implements IFloodlightProviderService, setConfigParams(configParams); this.role = getInitialRole(configParams); initVendorMessages(); + this.systemStartTime = System.currentTimeMillis(); } /** @@ -2096,4 +2100,11 @@ public class Controller implements IFloodlightProviderService, } } + @Override + public long getSystemUptime() { + return (System.currentTimeMillis() - this.systemStartTime); + } + + + } diff --git a/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java b/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java index 009681fb4..45ef6e997 100644 --- a/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java +++ b/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java @@ -59,6 +59,7 @@ public class CoreWebRoutable implements RestletRoutable { router.attach("/controller/summary/json", ControllerSummaryResource.class); router.attach("/role/json", ControllerRoleResource.class); router.attach("/health/json", HealthCheckResource.class); + router.attach("/system/uptime/json", SystemUptimeResource.class); return router; } } diff --git a/src/main/java/net/floodlightcontroller/core/web/SystemUptimeResource.java b/src/main/java/net/floodlightcontroller/core/web/SystemUptimeResource.java new file mode 100644 index 000000000..64b130f2d --- /dev/null +++ b/src/main/java/net/floodlightcontroller/core/web/SystemUptimeResource.java @@ -0,0 +1,15 @@ +package net.floodlightcontroller.core.web; + +import net.floodlightcontroller.core.IFloodlightProviderService; +import org.restlet.resource.Get; +import org.restlet.resource.ServerResource; + +public class SystemUptimeResource extends ServerResource { + @Get("json") + public long retrieve() { + IFloodlightProviderService floodlightProvider = + (IFloodlightProviderService)getContext().getAttributes(). + get(IFloodlightProviderService.class.getCanonicalName()); + return floodlightProvider.getSystemUptime(); + } +} diff --git a/src/test/java/net/floodlightcontroller/core/test/MockFloodlightProvider.java b/src/test/java/net/floodlightcontroller/core/test/MockFloodlightProvider.java index aaa9be06c..63c889963 100644 --- a/src/test/java/net/floodlightcontroller/core/test/MockFloodlightProvider.java +++ b/src/test/java/net/floodlightcontroller/core/test/MockFloodlightProvider.java @@ -291,4 +291,12 @@ public class MockFloodlightProvider implements IFloodlightModule, IFloodlightPro // TODO Auto-generated method stub return null; } + + @Override + public long getSystemUptime() { + // TODO Auto-generated method stub + return 0; + } + + } -- GitLab