mirror of
https://github.com/google/nomulus.git
synced 2025-05-01 12:37:52 +02:00
for a given service and version at runtime. Note that this CL only supports the adjustment for a given service and version. I will add another functionality to let this command be able to detect all non-live versions automatically and apply the adjustment. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=221092001
79 lines
2.8 KiB
Java
79 lines
2.8 KiB
Java
// Copyright 2018 The Nomulus Authors. All Rights Reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package google.registry.util;
|
|
|
|
import static com.google.common.base.Preconditions.checkArgument;
|
|
import static google.registry.util.PreconditionsUtils.checkArgumentNotNull;
|
|
|
|
import com.google.appengine.api.modules.ModulesService;
|
|
import com.google.appengine.api.modules.ModulesServiceFactory;
|
|
import dagger.Binds;
|
|
import dagger.Module;
|
|
import dagger.Provides;
|
|
import javax.inject.Inject;
|
|
|
|
/** A wrapper for {@link ModulesService} that provides a saner API. */
|
|
public class AppEngineServiceUtilsImpl implements AppEngineServiceUtils {
|
|
|
|
private final ModulesService modulesService;
|
|
|
|
@Inject
|
|
public AppEngineServiceUtilsImpl(ModulesService modulesService) {
|
|
this.modulesService = modulesService;
|
|
}
|
|
|
|
@Override
|
|
public String getServiceHostname(String service) {
|
|
// This will be in the format "version.service.projectid.appspot.com"
|
|
String hostnameWithVersion = modulesService.getVersionHostname(service, null);
|
|
// Strip off the version and return just "service.projectid.appspot.com"
|
|
return hostnameWithVersion.replaceFirst("^[^.]+\\.", "");
|
|
}
|
|
|
|
@Override
|
|
public String getCurrentVersionHostname(String service) {
|
|
return modulesService.getVersionHostname(service, null);
|
|
}
|
|
|
|
@Override
|
|
public String getVersionHostname(String service, String version) {
|
|
checkArgumentNotNull(version, "Must specify the version");
|
|
return modulesService.getVersionHostname(service, version);
|
|
}
|
|
|
|
@Override
|
|
public void setNumInstances(String service, String version, long numInstances) {
|
|
checkArgumentNotNull(service, "Must specify the service");
|
|
checkArgumentNotNull(version, "Must specify the version");
|
|
checkArgument(numInstances > 0, "Number of instances must be greater than 0");
|
|
modulesService.setNumInstances(service, version, numInstances);
|
|
}
|
|
|
|
/** Dagger module for AppEngineServiceUtils. */
|
|
@Module
|
|
public abstract static class AppEngineServiceUtilsModule {
|
|
|
|
private static final ModulesService modulesService = ModulesServiceFactory.getModulesService();
|
|
|
|
@Provides
|
|
static ModulesService provideModulesService() {
|
|
return modulesService;
|
|
}
|
|
|
|
@Binds
|
|
abstract AppEngineServiceUtils provideAppEngineServiceUtils(
|
|
AppEngineServiceUtilsImpl appEngineServiceUtilsImpl);
|
|
}
|
|
}
|