package example.energy; import schedframe.Parameters; import schedframe.PluginConfiguration; import schedframe.resources.computing.profiles.energy.ResourceEvent; import schedframe.resources.computing.profiles.energy.ResourceEventType; import schedframe.resources.computing.profiles.energy.power.plugin.EnergyEstimationPlugin; import schedframe.resources.computing.profiles.energy.power.plugin.EnergyPluginConfiguration; import schedframe.resources.devices.PhysicalResource; import schedframe.scheduling.manager.tasks.JobRegistry; import schemas.StringValueWithUnit; public abstract class BaseEnergyEstimationPlugin implements EnergyEstimationPlugin { EnergyPluginConfiguration plugConf; @Override public PluginConfiguration getConfiguration() { return plugConf; } @Override public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { throw new RuntimeException("Not implemented."); } @Override public double estimateTemperature(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { throw new RuntimeException("Not implemented."); } public void init(Parameters parameters) { plugConf = new EnergyPluginConfiguration(); try{ StringValueWithUnit powerCapLevel = parameters.get("powerCapLevel").get(0); plugConf.setPowerCapLevel(Double.valueOf(powerCapLevel.getContent()).doubleValue()); } catch(Exception e){ plugConf.setPowerCapLevel(-1); } try{ StringValueWithUnit powerFloorLevel = parameters.get("powerFloorLevel").get(0); plugConf.setPowerFloorLevel(Double.valueOf(powerFloorLevel.getContent()).doubleValue()); } catch(Exception e){ plugConf.setPowerFloorLevel(-1); } try{ StringValueWithUnit freq = parameters.get("frequency").get(0); plugConf.addServedEvent(ResourceEventType.TIMER, Double.valueOf(freq.getContent()).intValue()); } catch(Exception e){ } } public String getName() { return getClass().getName(); } }