Skip to content

Commit

Permalink
Add adapter for DeviceDetails
Browse files Browse the repository at this point in the history
Signed-off-by: bharathappali <abharath@redhat.com>
  • Loading branch information
bharathappali committed Oct 8, 2024
1 parent 0cbccdc commit bd82175
Show file tree
Hide file tree
Showing 12 changed files with 116 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package com.autotune.analyzer.adapters;

import com.autotune.analyzer.utils.AnalyzerConstants;
import com.autotune.common.data.system.info.device.DeviceDetails;
import com.autotune.common.data.system.info.device.accelerator.AcceleratorDeviceData;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;

public class DeviceDetailsAdapter extends TypeAdapter<DeviceDetails> {

@Override
public void write(JsonWriter out, DeviceDetails value) throws IOException {
out.beginObject();
out.name("type").value(value.getType().name());

if (value instanceof AcceleratorDeviceData accelerator) {
out.name("manufacturer").value(accelerator.getManufacturer());
out.name("modelName").value(accelerator.getModelName());
out.name("hostName").value(accelerator.getHostName());
out.name("UUID").value(accelerator.getUUID());
out.name("deviceName").value(accelerator.getDeviceName());
out.name("isMIG").value(accelerator.isMIG());
}
// Add for other devices when added

out.endObject();
}

@Override
public DeviceDetails read(JsonReader in) throws IOException {
String type = null;
String manufacturer = null;
String modelName = null;
String hostName = null;
String UUID = null;
String deviceName = null;
boolean isMIG = false;

in.beginObject();
while (in.hasNext()) {
switch (in.nextName()) {
case "type":
type = in.nextString();
break;
case "manufacturer":
manufacturer = in.nextString();
break;
case "modelName":
modelName = in.nextString();
break;
case "hostName":
hostName = in.nextString();
break;
case "UUID":
UUID = in.nextString();
break;
case "deviceName":
deviceName = in.nextString();
break;
case "isMIG":
isMIG = in.nextBoolean();
break;
default:
in.skipValue();
}
}
in.endObject();

if (type != null && type.equals(AnalyzerConstants.DeviceType.ACCELERATOR.name())) {
return (DeviceDetails) new AcceleratorDeviceData(modelName, hostName, UUID, deviceName, isMIG);
}
// Add for other device types if implemented in future

return null;
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.autotune.analyzer.services;

import com.autotune.analyzer.adapters.DeviceDetailsAdapter;
import com.autotune.analyzer.adapters.RecommendationItemAdapter;
import com.autotune.analyzer.exceptions.KruizeResponse;
import com.autotune.analyzer.serviceObjects.DSMetadataAPIObject;
Expand All @@ -24,6 +25,7 @@
import com.autotune.analyzer.utils.GsonUTCDateAdapter;
import com.autotune.common.data.ValidationOutputData;
import com.autotune.common.data.dataSourceMetadata.DataSourceMetadataInfo;
import com.autotune.common.data.system.info.device.DeviceDetails;
import com.autotune.common.datasource.DataSourceInfo;
import com.autotune.common.datasource.DataSourceManager;
import com.autotune.common.datasource.DataSourceMetadataValidation;
Expand Down Expand Up @@ -419,6 +421,7 @@ private Gson createGsonObject() {
.enableComplexMapKeySerialization()
.registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
.registerTypeAdapter(AnalyzerConstants.RecommendationItem.class, new RecommendationItemAdapter())
.registerTypeAdapter(DeviceDetails.class, new DeviceDetailsAdapter())
.create();
}
private boolean isValidBooleanValue(String value) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*******************************************************************************/
package com.autotune.analyzer.services;

import com.autotune.analyzer.adapters.DeviceDetailsAdapter;
import com.autotune.analyzer.adapters.RecommendationItemAdapter;
import com.autotune.analyzer.exceptions.FetchMetricsError;
import com.autotune.analyzer.kruizeObject.KruizeObject;
Expand All @@ -30,6 +31,7 @@
import com.autotune.common.data.metrics.MetricResults;
import com.autotune.common.data.result.ContainerData;
import com.autotune.common.data.result.IntervalResults;
import com.autotune.common.data.system.info.device.DeviceDetails;
import com.autotune.common.datasource.DataSourceInfo;
import com.autotune.common.k8sObjects.K8sObject;
import com.autotune.utils.GenericRestApiClient;
Expand Down Expand Up @@ -173,6 +175,7 @@ public boolean shouldSkipClass(Class<?> clazz) {
.enableComplexMapKeySerialization()
.registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
.registerTypeAdapter(AnalyzerConstants.RecommendationItem.class, new RecommendationItemAdapter())
.registerTypeAdapter(DeviceDetails.class, new DeviceDetailsAdapter())
.setExclusionStrategies(strategy)
.create();
gsonStr = gsonObj.toJson(recommendationList);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,13 @@

package com.autotune.analyzer.services;

import com.autotune.analyzer.adapters.DeviceDetailsAdapter;
import com.autotune.analyzer.adapters.RecommendationItemAdapter;
import com.autotune.analyzer.serviceObjects.ListDatasourcesAPIObject;
import com.autotune.analyzer.utils.AnalyzerConstants;
import com.autotune.analyzer.utils.AnalyzerErrorConstants;
import com.autotune.analyzer.utils.GsonUTCDateAdapter;
import com.autotune.common.data.system.info.device.DeviceDetails;
import com.autotune.common.datasource.DataSourceInfo;
import com.autotune.database.service.ExperimentDBService;
import com.autotune.utils.MetricsConfig;
Expand Down Expand Up @@ -150,6 +152,7 @@ private Gson createGsonObject() {
.enableComplexMapKeySerialization()
.registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
.registerTypeAdapter(AnalyzerConstants.RecommendationItem.class, new RecommendationItemAdapter())
.registerTypeAdapter(DeviceDetails.class, new DeviceDetailsAdapter())
.create();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.autotune.analyzer.services;

import com.autotune.analyzer.adapters.DeviceDetailsAdapter;
import com.autotune.analyzer.adapters.RecommendationItemAdapter;
import com.autotune.analyzer.experiment.KruizeExperiment;
import com.autotune.analyzer.kruizeObject.KruizeObject;
Expand All @@ -30,6 +31,7 @@
import com.autotune.common.data.metrics.MetricResults;
import com.autotune.common.data.result.ContainerData;
import com.autotune.common.data.result.IntervalResults;
import com.autotune.common.data.system.info.device.DeviceDetails;
import com.autotune.common.k8sObjects.K8sObject;
import com.autotune.common.target.kubernetes.service.KubernetesServices;
import com.autotune.common.trials.ExperimentTrial;
Expand Down Expand Up @@ -283,6 +285,7 @@ private Gson createGsonObject() {
.enableComplexMapKeySerialization()
.registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
.registerTypeAdapter(AnalyzerConstants.RecommendationItem.class, new RecommendationItemAdapter())
.registerTypeAdapter(DeviceDetails.class, new DeviceDetailsAdapter())
.setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.autotune.analyzer.services;

import com.autotune.analyzer.adapters.DeviceDetailsAdapter;
import com.autotune.analyzer.adapters.RecommendationItemAdapter;
import com.autotune.analyzer.exceptions.KruizeResponse;
import com.autotune.analyzer.kruizeObject.KruizeObject;
Expand All @@ -27,6 +28,7 @@
import com.autotune.analyzer.utils.GsonUTCDateAdapter;
import com.autotune.analyzer.utils.ServiceHelpers;
import com.autotune.common.data.result.ContainerData;
import com.autotune.common.data.system.info.device.DeviceDetails;
import com.autotune.database.service.ExperimentDBService;
import com.autotune.utils.KruizeConstants;
import com.autotune.utils.MetricsConfig;
Expand Down Expand Up @@ -226,6 +228,7 @@ public boolean shouldSkipClass(Class<?> clazz) {
.enableComplexMapKeySerialization()
.registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
.registerTypeAdapter(AnalyzerConstants.RecommendationItem.class, new RecommendationItemAdapter())
.registerTypeAdapter(DeviceDetails.class, new DeviceDetailsAdapter())
.setExclusionStrategies(strategy)
.create();
gsonStr = gsonObj.toJson(recommendationList);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@
*******************************************************************************/
package com.autotune.analyzer.services;

import com.autotune.analyzer.adapters.DeviceDetailsAdapter;
import com.autotune.analyzer.adapters.RecommendationItemAdapter;
import com.autotune.analyzer.serviceObjects.ListSupportedK8sObjectsSO;
import com.autotune.analyzer.utils.GsonUTCDateAdapter;
import com.autotune.analyzer.utils.AnalyzerConstants;
import com.autotune.common.data.system.info.device.DeviceDetails;
import com.autotune.utils.Utils;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
Expand Down Expand Up @@ -59,6 +61,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
.enableComplexMapKeySerialization()
.registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
.registerTypeAdapter(AnalyzerConstants.RecommendationItem.class, new RecommendationItemAdapter())
.registerTypeAdapter(DeviceDetails.class, new DeviceDetailsAdapter())
.create();
// Convert the Service object to JSON
responseGSONString = gsonObj.toJson(listSupportedK8sObjectsSO);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.autotune.analyzer.services;

import com.autotune.analyzer.adapters.DeviceDetailsAdapter;
import com.autotune.analyzer.adapters.RecommendationItemAdapter;
import com.autotune.analyzer.exceptions.InvalidValueException;
import com.autotune.analyzer.exceptions.PerformanceProfileResponse;
Expand All @@ -29,6 +30,7 @@
import com.autotune.common.data.ValidationOutputData;
import com.autotune.common.data.metrics.Metric;
import com.autotune.common.data.result.ContainerData;
import com.autotune.common.data.system.info.device.DeviceDetails;
import com.autotune.database.dao.ExperimentDAOImpl;
import com.autotune.database.service.ExperimentDBService;
import com.autotune.utils.KruizeConstants;
Expand Down Expand Up @@ -380,6 +382,7 @@ private Gson createGsonObject() {
.enableComplexMapKeySerialization()
.registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
.registerTypeAdapter(AnalyzerConstants.RecommendationItem.class, new RecommendationItemAdapter())
.registerTypeAdapter(DeviceDetails.class, new DeviceDetailsAdapter())
// a custom serializer for serializing metadata of JsonNode type.
.registerTypeAdapter(JsonNode.class, new JsonSerializer<JsonNode>() {
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.autotune.analyzer.services;

import com.autotune.analyzer.adapters.DeviceDetailsAdapter;
import com.autotune.analyzer.adapters.RecommendationItemAdapter;
import com.autotune.analyzer.exceptions.InvalidValueException;
import com.autotune.analyzer.exceptions.PerformanceProfileResponse;
Expand All @@ -27,6 +28,7 @@
import com.autotune.analyzer.utils.GsonUTCDateAdapter;
import com.autotune.common.data.ValidationOutputData;
import com.autotune.common.data.metrics.Metric;
import com.autotune.common.data.system.info.device.DeviceDetails;
import com.autotune.database.service.ExperimentDBService;
import com.google.gson.ExclusionStrategy;
import com.google.gson.FieldAttributes;
Expand Down Expand Up @@ -132,6 +134,7 @@ protected void doGet(HttpServletRequest req, HttpServletResponse response) throw
.enableComplexMapKeySerialization()
.registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
.registerTypeAdapter(AnalyzerConstants.RecommendationItem.class, new RecommendationItemAdapter())
.registerTypeAdapter(DeviceDetails.class, new DeviceDetailsAdapter())
.setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*******************************************************************************/
package com.autotune.analyzer.services;

import com.autotune.analyzer.adapters.DeviceDetailsAdapter;
import com.autotune.analyzer.adapters.RecommendationItemAdapter;
import com.autotune.analyzer.exceptions.FetchMetricsError;
import com.autotune.analyzer.kruizeObject.KruizeObject;
Expand All @@ -26,6 +27,7 @@
import com.autotune.analyzer.utils.AnalyzerErrorConstants;
import com.autotune.analyzer.utils.GsonUTCDateAdapter;
import com.autotune.common.data.result.ContainerData;
import com.autotune.common.data.system.info.device.DeviceDetails;
import com.autotune.operator.KruizeDeploymentInfo;
import com.autotune.utils.KruizeConstants;
import com.autotune.utils.MetricsConfig;
Expand Down Expand Up @@ -171,6 +173,7 @@ public boolean shouldSkipClass(Class<?> clazz) {
.enableComplexMapKeySerialization()
.registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
.registerTypeAdapter(AnalyzerConstants.RecommendationItem.class, new RecommendationItemAdapter())
.registerTypeAdapter(DeviceDetails.class, new DeviceDetailsAdapter())
.setExclusionStrategies(strategy)
.create();
gsonStr = gsonObj.toJson(recommendationList);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.autotune.analyzer.services;

import com.autotune.analyzer.adapters.DeviceDetailsAdapter;
import com.autotune.analyzer.adapters.RecommendationItemAdapter;
import com.autotune.analyzer.exceptions.KruizeResponse;
import com.autotune.analyzer.experiment.ExperimentInitiator;
Expand All @@ -24,6 +25,7 @@
import com.autotune.analyzer.serviceObjects.UpdateResultsAPIObject;
import com.autotune.analyzer.utils.AnalyzerConstants;
import com.autotune.analyzer.utils.AnalyzerErrorConstants;
import com.autotune.common.data.system.info.device.DeviceDetails;
import com.autotune.operator.KruizeDeploymentInfo;
import com.autotune.utils.MetricsConfig;
import com.google.gson.*;
Expand Down Expand Up @@ -80,6 +82,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
.registerTypeAdapter(Double.class, new CustomNumberDeserializer())
.registerTypeAdapter(Integer.class, new CustomNumberDeserializer())
.registerTypeAdapter(AnalyzerConstants.RecommendationItem.class, new RecommendationItemAdapter())
.registerTypeAdapter(DeviceDetails.class, new DeviceDetailsAdapter())
.create();
LOGGER.debug("updateResults API request payload for requestID {} is {}", calCount, inputData);
try {
Expand Down
7 changes: 7 additions & 0 deletions src/main/java/com/autotune/database/helper/DBHelpers.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.autotune.database.helper;

import com.autotune.analyzer.adapters.DeviceDetailsAdapter;
import com.autotune.analyzer.adapters.RecommendationItemAdapter;
import com.autotune.analyzer.exceptions.InvalidConversionOfRecommendationEntryException;
import com.autotune.analyzer.kruizeObject.KruizeObject;
Expand All @@ -33,6 +34,7 @@
import com.autotune.common.data.result.ContainerData;
import com.autotune.common.data.result.ExperimentResultData;
import com.autotune.common.data.result.NamespaceData;
import com.autotune.common.data.system.info.device.DeviceDetails;
import com.autotune.common.datasource.DataSourceCollection;
import com.autotune.common.datasource.DataSourceInfo;
import com.autotune.common.datasource.DataSourceMetadataOperator;
Expand Down Expand Up @@ -336,6 +338,7 @@ public static KruizeResultsEntry convertExperimentResultToExperimentResultsTable
.setDateFormat(KruizeConstants.DateFormats.STANDARD_JSON_DATE_FORMAT)
.registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
.registerTypeAdapter(AnalyzerConstants.RecommendationItem.class, new RecommendationItemAdapter())
.registerTypeAdapter(DeviceDetails.class, new DeviceDetailsAdapter())
.create();
try {
kruizeResultsEntry = new KruizeResultsEntry();
Expand Down Expand Up @@ -476,6 +479,7 @@ public static KruizeRecommendationEntry convertKruizeObjectTORecommendation(Krui
.setDateFormat(KruizeConstants.DateFormats.STANDARD_JSON_DATE_FORMAT)
.registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
.registerTypeAdapter(AnalyzerConstants.RecommendationItem.class, new RecommendationItemAdapter())
.registerTypeAdapter(DeviceDetails.class, new DeviceDetailsAdapter())
.create();
try {
ListRecommendationsAPIObject listRecommendationsAPIObject = getListRecommendationAPIObjectForDB(
Expand All @@ -486,6 +490,7 @@ public static KruizeRecommendationEntry convertKruizeObjectTORecommendation(Krui
LOGGER.debug(new GsonBuilder()
.setPrettyPrinting()
.registerTypeAdapter(AnalyzerConstants.RecommendationItem.class, new RecommendationItemAdapter())
.registerTypeAdapter(DeviceDetails.class, new DeviceDetailsAdapter())
.create()
.toJson(listRecommendationsAPIObject));
kruizeRecommendationEntry = new KruizeRecommendationEntry();
Expand Down Expand Up @@ -565,6 +570,7 @@ public static List<UpdateResultsAPIObject> convertResultEntryToUpdateResultsAPIO
.setDateFormat(KruizeConstants.DateFormats.STANDARD_JSON_DATE_FORMAT)
.registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
.registerTypeAdapter(AnalyzerConstants.RecommendationItem.class, new RecommendationItemAdapter())
.registerTypeAdapter(DeviceDetails.class, new DeviceDetailsAdapter())
.create();
List<UpdateResultsAPIObject> updateResultsAPIObjects = new ArrayList<>();
for (KruizeResultsEntry kruizeResultsEntry : kruizeResultsEntries) {
Expand Down Expand Up @@ -635,6 +641,7 @@ public static List<ListRecommendationsAPIObject> convertRecommendationEntryToRec
.setDateFormat(KruizeConstants.DateFormats.STANDARD_JSON_DATE_FORMAT)
.registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
.registerTypeAdapter(AnalyzerConstants.RecommendationItem.class, new RecommendationItemAdapter())
.registerTypeAdapter(DeviceDetails.class, new DeviceDetailsAdapter())
.create();
List<ListRecommendationsAPIObject> listRecommendationsAPIObjectList = new ArrayList<>();
for (KruizeRecommendationEntry kruizeRecommendationEntry : kruizeRecommendationEntryList) {
Expand Down

0 comments on commit bd82175

Please sign in to comment.