Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,18 @@ message DeviceDimension {
string name = 1;
string value = 2;
}

// Represents the universe scope for routing and feature enablement.
message Universe {
oneof type {
SelfUniverse self_universe = 1;
RoutedUniverse routed_universe = 2;
}
}

message SelfUniverse {}

message RoutedUniverse {
// The ID of the ATS controller to route to.
string ats_controller_id = 1;
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ java_library(
srcs = ["ConfigServiceLogicImpl.java"],
deps = [
":config_service_logic",
"//src/devtools/mobileharness/fe/v6/service/proto/common:common_resources_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/config:config_service_java_proto",
"//src/java/com/google/devtools/mobileharness/fe/v6/service/config/handlers:check_device_write_permission_handler",
"//src/java/com/google/devtools/mobileharness/fe/v6/service/config/handlers:check_host_write_permission_handler",
Expand All @@ -43,6 +44,7 @@ java_library(
"//src/java/com/google/devtools/mobileharness/fe/v6/service/config/handlers:get_recommended_wifi_handler",
"//src/java/com/google/devtools/mobileharness/fe/v6/service/config/handlers:update_device_config_handler",
"//src/java/com/google/devtools/mobileharness/fe/v6/service/config/handlers:update_host_config_handler",
"//src/java/com/google/devtools/mobileharness/fe/v6/service/util",
"@maven//:com_google_guava_guava",
"@maven//:javax_inject_jsr330_api",
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@

package com.google.devtools.mobileharness.fe.v6.service.config;

import static com.google.common.util.concurrent.Futures.immediateFailedFuture;

import com.google.common.util.concurrent.ListenableFuture;
import com.google.devtools.mobileharness.fe.v6.service.config.handlers.CheckDeviceWritePermissionHandler;
import com.google.devtools.mobileharness.fe.v6.service.config.handlers.CheckHostWritePermissionHandler;
Expand All @@ -25,6 +27,7 @@
import com.google.devtools.mobileharness.fe.v6.service.config.handlers.GetRecommendedWifiHandler;
import com.google.devtools.mobileharness.fe.v6.service.config.handlers.UpdateDeviceConfigHandler;
import com.google.devtools.mobileharness.fe.v6.service.config.handlers.UpdateHostConfigHandler;
import com.google.devtools.mobileharness.fe.v6.service.proto.common.Universe;
import com.google.devtools.mobileharness.fe.v6.service.proto.config.CheckDeviceWritePermissionRequest;
import com.google.devtools.mobileharness.fe.v6.service.proto.config.CheckDeviceWritePermissionResponse;
import com.google.devtools.mobileharness.fe.v6.service.proto.config.CheckHostWritePermissionRequest;
Expand All @@ -41,6 +44,7 @@
import com.google.devtools.mobileharness.fe.v6.service.proto.config.UpdateDeviceConfigResponse;
import com.google.devtools.mobileharness.fe.v6.service.proto.config.UpdateHostConfigRequest;
import com.google.devtools.mobileharness.fe.v6.service.proto.config.UpdateHostConfigResponse;
import com.google.devtools.mobileharness.fe.v6.service.util.UniverseFactory;
import java.util.Optional;
import javax.inject.Inject;
import javax.inject.Singleton;
Expand All @@ -57,6 +61,7 @@ public final class ConfigServiceLogicImpl implements ConfigServiceLogic {
private final GetHostConfigHandler getHostConfigHandler;
private final CheckHostWritePermissionHandler checkHostWritePermissionHandler;
private final UpdateHostConfigHandler updateHostConfigHandler;
private final UniverseFactory universeFactory;

@Inject
ConfigServiceLogicImpl(
Expand All @@ -67,7 +72,8 @@ public final class ConfigServiceLogicImpl implements ConfigServiceLogic {
GetHostDefaultDeviceConfigHandler getHostDefaultDeviceConfigHandler,
GetHostConfigHandler getHostConfigHandler,
CheckHostWritePermissionHandler checkHostWritePermissionHandler,
UpdateHostConfigHandler updateHostConfigHandler) {
UpdateHostConfigHandler updateHostConfigHandler,
UniverseFactory universeFactory) {
this.getDeviceConfigHandler = getDeviceConfigHandler;
this.checkDeviceWritePermissionHandler = checkDeviceWritePermissionHandler;
this.updateDeviceConfigHandler = updateDeviceConfigHandler;
Expand All @@ -76,51 +82,101 @@ public final class ConfigServiceLogicImpl implements ConfigServiceLogic {
this.getHostConfigHandler = getHostConfigHandler;
this.checkHostWritePermissionHandler = checkHostWritePermissionHandler;
this.updateHostConfigHandler = updateHostConfigHandler;
this.universeFactory = universeFactory;
}

@Override
public ListenableFuture<GetDeviceConfigResponse> getDeviceConfig(GetDeviceConfigRequest request) {
return getDeviceConfigHandler.getDeviceConfig(request);
Universe universe;
try {
universe = universeFactory.create(request.getUniverse());
} catch (IllegalArgumentException e) {
return immediateFailedFuture(e);
}
return getDeviceConfigHandler.getDeviceConfig(request, universe);
}

@Override
public ListenableFuture<CheckDeviceWritePermissionResponse> checkDeviceWritePermission(
CheckDeviceWritePermissionRequest request, Optional<String> username) {
return checkDeviceWritePermissionHandler.checkDeviceWritePermission(request, username);
Universe universe;
try {
universe = universeFactory.create(request.getUniverse());
} catch (IllegalArgumentException e) {
return immediateFailedFuture(e);
}
return checkDeviceWritePermissionHandler.checkDeviceWritePermission(
request, universe, username);
}

@Override
public ListenableFuture<UpdateDeviceConfigResponse> updateDeviceConfig(
UpdateDeviceConfigRequest request, Optional<String> username) {
return updateDeviceConfigHandler.updateDeviceConfig(request, username);
Universe universe;
try {
universe = universeFactory.create(request.getUniverse());
} catch (IllegalArgumentException e) {
return immediateFailedFuture(e);
}
return updateDeviceConfigHandler.updateDeviceConfig(request, universe, username);
}

@Override
public ListenableFuture<GetRecommendedWifiResponse> getRecommendedWifi(
GetRecommendedWifiRequest request) {
return getRecommendedWifiHandler.getRecommendedWifi(request);
Universe universe;
try {
universe = universeFactory.create(request.getUniverse());
} catch (IllegalArgumentException e) {
return immediateFailedFuture(e);
}
return getRecommendedWifiHandler.getRecommendedWifi(request, universe);
}

@Override
public ListenableFuture<GetHostDefaultDeviceConfigResponse> getHostDefaultDeviceConfig(
GetHostDefaultDeviceConfigRequest request) {
return getHostDefaultDeviceConfigHandler.getHostDefaultDeviceConfig(request);
Universe universe;
try {
universe = universeFactory.create(request.getUniverse());
} catch (IllegalArgumentException e) {
return immediateFailedFuture(e);
}
return getHostDefaultDeviceConfigHandler.getHostDefaultDeviceConfig(request, universe);
}

@Override
public ListenableFuture<GetHostConfigResponse> getHostConfig(GetHostConfigRequest request) {
return getHostConfigHandler.getHostConfig(request);
Universe universe;
try {
universe = universeFactory.create(request.getUniverse());
} catch (IllegalArgumentException e) {
return immediateFailedFuture(e);
}
return getHostConfigHandler.getHostConfig(request, universe);
}

@Override
public ListenableFuture<CheckHostWritePermissionResponse> checkHostWritePermission(
CheckHostWritePermissionRequest request, Optional<String> username) {
return checkHostWritePermissionHandler.checkHostWritePermission(request, username);
Universe universe;
try {
universe = universeFactory.create(request.getUniverse());
} catch (IllegalArgumentException e) {
return immediateFailedFuture(e);
}
return checkHostWritePermissionHandler.checkHostWritePermission(request, universe, username);
}

@Override
public ListenableFuture<UpdateHostConfigResponse> updateHostConfig(
UpdateHostConfigRequest request, Optional<String> username) {
return updateHostConfigHandler.updateHostConfig(request, username);
Universe universe;
try {
universe = universeFactory.create(request.getUniverse());
} catch (IllegalArgumentException e) {
return immediateFailedFuture(e);
}
return updateHostConfigHandler.updateHostConfig(request, universe, username);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ java_library(
name = "get_device_config_handler",
srcs = ["GetDeviceConfigHandler.java"],
deps = [
"//src/devtools/mobileharness/fe/v6/service/proto/common:common_resources_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/config:config_resources_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/config:config_service_java_proto",
"//src/java/com/google/devtools/mobileharness/fe/v6/service/config/util:config_converter",
Expand All @@ -40,6 +41,7 @@ java_library(
srcs = ["CheckDeviceWritePermissionHandler.java"],
deps = [
"//src/devtools/mobileharness/api/deviceconfig/proto:device_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/common:common_resources_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/config:config_service_java_proto",
"//src/java/com/google/devtools/mobileharness/fe/v6/service/shared",
"//src/java/com/google/devtools/mobileharness/fe/v6/service/shared/auth",
Expand All @@ -54,6 +56,7 @@ java_library(
deps = [
"//src/devtools/mobileharness/api/deviceconfig/proto:basic_java_proto",
"//src/devtools/mobileharness/api/deviceconfig/proto:device_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/common:common_resources_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/config:config_service_java_proto",
"//src/java/com/google/devtools/mobileharness/fe/v6/service/config/util:config_converter",
"//src/java/com/google/devtools/mobileharness/fe/v6/service/config/util:config_service_capability",
Expand All @@ -71,6 +74,7 @@ java_library(
name = "get_recommended_wifi_handler",
srcs = ["GetRecommendedWifiHandler.java"],
deps = [
"//src/devtools/mobileharness/fe/v6/service/proto/common:common_resources_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/config:config_service_java_proto",
"//src/java/com/google/devtools/mobileharness/shared/util/logging:google_logger",
"@maven//:com_google_guava_guava",
Expand All @@ -83,6 +87,7 @@ java_library(
srcs = ["GetHostDefaultDeviceConfigHandler.java"],
deps = [
"//src/devtools/mobileharness/api/deviceconfig/proto:lab_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/common:common_resources_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/config:config_resources_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/config:config_service_java_proto",
"//src/java/com/google/devtools/mobileharness/fe/v6/service/config/util:config_converter",
Expand All @@ -99,6 +104,7 @@ java_library(
srcs = ["GetHostConfigHandler.java"],
deps = [
"//src/devtools/mobileharness/api/deviceconfig/proto:lab_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/common:common_resources_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/config:config_resources_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/config:config_service_java_proto",
"//src/java/com/google/devtools/mobileharness/fe/v6/service/config/util:config_converter",
Expand All @@ -115,6 +121,7 @@ java_library(
srcs = ["CheckHostWritePermissionHandler.java"],
deps = [
"//src/devtools/mobileharness/api/deviceconfig/proto:lab_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/common:common_resources_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/config:config_service_java_proto",
"//src/java/com/google/devtools/mobileharness/fe/v6/service/config/util:config_converter",
"//src/java/com/google/devtools/mobileharness/fe/v6/service/shared/auth",
Expand All @@ -131,6 +138,7 @@ java_library(
"//src/devtools/mobileharness/api/deviceconfig/proto:basic_java_proto",
"//src/devtools/mobileharness/api/deviceconfig/proto:lab_java_proto",
"//src/devtools/mobileharness/api/model/proto:lab_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/common:common_resources_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/config:config_resources_java_proto",
"//src/devtools/mobileharness/fe/v6/service/proto/config:config_service_java_proto",
"//src/java/com/google/devtools/mobileharness/fe/v6/service/config/util:config_converter",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.devtools.mobileharness.api.deviceconfig.proto.Device.DeviceConfig;
import com.google.devtools.mobileharness.fe.v6.service.proto.common.Universe;
import com.google.devtools.mobileharness.fe.v6.service.proto.config.CheckDeviceWritePermissionRequest;
import com.google.devtools.mobileharness.fe.v6.service.proto.config.CheckDeviceWritePermissionResponse;
import com.google.devtools.mobileharness.fe.v6.service.shared.DeviceDataLoader;
Expand Down Expand Up @@ -52,14 +53,13 @@ public final class CheckDeviceWritePermissionHandler {
}

public ListenableFuture<CheckDeviceWritePermissionResponse> checkDeviceWritePermission(
CheckDeviceWritePermissionRequest request, Optional<String> username) {
CheckDeviceWritePermissionRequest request, Universe universe, Optional<String> username) {
if (username.isEmpty()) {
return immediateFuture(
CheckDeviceWritePermissionResponse.newBuilder().setHasPermission(false).build());
}
String user = username.get();
String deviceId = request.getId();
String universe = request.getUniverse();

return Futures.transformAsync(
deviceDataLoader.loadDeviceData(deviceId, universe),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.devtools.mobileharness.api.deviceconfig.proto.Lab.LabConfig;
import com.google.devtools.mobileharness.fe.v6.service.config.util.ConfigConverter;
import com.google.devtools.mobileharness.fe.v6.service.proto.common.Universe;
import com.google.devtools.mobileharness.fe.v6.service.proto.config.CheckHostWritePermissionRequest;
import com.google.devtools.mobileharness.fe.v6.service.proto.config.CheckHostWritePermissionResponse;
import com.google.devtools.mobileharness.fe.v6.service.shared.auth.GroupMembershipProvider;
Expand Down Expand Up @@ -51,14 +52,13 @@ public final class CheckHostWritePermissionHandler {
}

public ListenableFuture<CheckHostWritePermissionResponse> checkHostWritePermission(
CheckHostWritePermissionRequest request, Optional<String> username) {
CheckHostWritePermissionRequest request, Universe universe, Optional<String> username) {
if (username.isEmpty()) {
return immediateFuture(
CheckHostWritePermissionResponse.newBuilder().setHasPermission(false).build());
}
String user = username.get();
String hostName = request.getHostName();
String universe = request.getUniverse();

return Futures.transformAsync(
configurationProvider.getLabConfig(hostName, universe),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import com.google.devtools.mobileharness.fe.v6.service.config.util.ConfigConverter;
import com.google.devtools.mobileharness.fe.v6.service.config.util.ConfigServiceCapability;
import com.google.devtools.mobileharness.fe.v6.service.config.util.ConfigServiceCapabilityFactory;
import com.google.devtools.mobileharness.fe.v6.service.proto.common.Universe;
import com.google.devtools.mobileharness.fe.v6.service.proto.config.DeviceConfig;
import com.google.devtools.mobileharness.fe.v6.service.proto.config.DeviceConfigUiStatus;
import com.google.devtools.mobileharness.fe.v6.service.proto.config.GetDeviceConfigRequest;
Expand Down Expand Up @@ -53,18 +54,19 @@ public final class GetDeviceConfigHandler {
this.executor = executor;
}

public ListenableFuture<GetDeviceConfigResponse> getDeviceConfig(GetDeviceConfigRequest request) {
public ListenableFuture<GetDeviceConfigResponse> getDeviceConfig(
GetDeviceConfigRequest request, Universe universe) {
logger.atInfo().log("Getting device config for %s", request.getId());
ConfigServiceCapability configServiceCapability =
configServiceCapabilityFactory.create(request.getUniverse());
configServiceCapabilityFactory.create(universe);
try {
configServiceCapability.checkConfigServiceAvailability();
} catch (UnsupportedOperationException e) {
return immediateFailedFuture(e);
}

ListenableFuture<DeviceData> deviceDataFuture =
deviceDataLoader.loadDeviceData(request.getId(), request.getUniverse());
deviceDataLoader.loadDeviceData(request.getId(), universe);

return Futures.transform(
deviceDataFuture,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import com.google.devtools.mobileharness.fe.v6.service.config.util.ConfigConverter;
import com.google.devtools.mobileharness.fe.v6.service.config.util.ConfigServiceCapability;
import com.google.devtools.mobileharness.fe.v6.service.config.util.ConfigServiceCapabilityFactory;
import com.google.devtools.mobileharness.fe.v6.service.proto.common.Universe;
import com.google.devtools.mobileharness.fe.v6.service.proto.config.GetHostConfigRequest;
import com.google.devtools.mobileharness.fe.v6.service.proto.config.GetHostConfigResponse;
import com.google.devtools.mobileharness.fe.v6.service.proto.config.HostConfig;
Expand Down Expand Up @@ -53,18 +54,19 @@ public final class GetHostConfigHandler {
this.executor = executor;
}

public ListenableFuture<GetHostConfigResponse> getHostConfig(GetHostConfigRequest request) {
public ListenableFuture<GetHostConfigResponse> getHostConfig(
GetHostConfigRequest request, Universe universe) {
logger.atInfo().log("Getting host config for %s", request.getHostName());
ConfigServiceCapability configServiceCapability =
configServiceCapabilityFactory.create(request.getUniverse());
configServiceCapabilityFactory.create(universe);
try {
configServiceCapability.checkConfigServiceAvailability();
} catch (UnsupportedOperationException e) {
return immediateFailedFuture(e);
}

return Futures.transform(
configurationProvider.getLabConfig(request.getHostName(), request.getUniverse()),
configurationProvider.getLabConfig(request.getHostName(), universe),
labConfigOpt -> {
if (labConfigOpt.isEmpty()) {
return GetHostConfigResponse.getDefaultInstance();
Expand Down
Loading
Loading