blob: 78b708866aec16be4541cbbc9b5e6c200571aa5c [file] [log] [blame]
package org.apache.airavata.compute.resource.monitoring.job;
import org.apache.airavata.common.utils.ThriftClientPool;
import org.apache.airavata.metascheduler.core.engine.ComputeResourceSelectionPolicy;
import org.apache.airavata.metascheduler.core.utils.Utils;
import org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference;
import org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile;
import org.apache.airavata.model.appcatalog.userresourceprofile.UserComputeResourcePreference;
import org.apache.airavata.model.appcatalog.userresourceprofile.UserResourceProfile;
import org.apache.airavata.registry.api.RegistryService;
import org.apache.airavata.registry.api.RegistryService.Client;
public abstract class ComputeResourceMonitor {
protected ThriftClientPool<RegistryService.Client> registryClientPool;
public ComputeResourceMonitor() {
this.registryClientPool = Utils.getRegistryServiceClientPool();
}
private boolean isValid(String str) {
return str != null && !str.trim().isEmpty();
}
public UserResourceProfile getUserResourceProfile(String username, String gatewayId) throws Exception {
RegistryService.Client client = this.registryClientPool.getResource();
try {
if (client.isUserResourceProfileExists(username, gatewayId)) {
return client.getUserResourceProfile(username, gatewayId);
}
return null;
} finally {
this.registryClientPool.returnResource(client);
}
}
private UserComputeResourcePreference getUserComputeResourcePreference(String gatewayId, String username,
String computeResourceId) throws Exception {
RegistryService.Client client = this.registryClientPool.getResource();
try {
if (client.isUserComputeResourcePreferenceExists(username, gatewayId, computeResourceId)){
return client.getUserComputeResourcePreference(username, gatewayId, computeResourceId);
}
return null;
} finally {
this.registryClientPool.returnResource(client);
}
}
public String getComputeResourceCredentialToken(String gatewayId,
String username, String computeResourceId, boolean isUseUserCRPref,
boolean isSetGroupResourceProfileId, String groupResourceProfileId) throws Exception {
if (isUseUserCRPref) {
if (getUserComputeResourcePreference(gatewayId, username, computeResourceId) != null &&
isValid(getUserComputeResourcePreference(gatewayId, username, computeResourceId).getResourceSpecificCredentialStoreToken())) {
return getUserComputeResourcePreference(gatewayId, username, computeResourceId).getResourceSpecificCredentialStoreToken();
} else {
return getUserResourceProfile(username, gatewayId).getCredentialStoreToken();
}
} else if (isSetGroupResourceProfileId &&
getGroupComputeResourcePreference(computeResourceId, groupResourceProfileId) != null &&
isValid(getGroupComputeResourcePreference(computeResourceId, groupResourceProfileId).getResourceSpecificCredentialStoreToken())) {
return getGroupComputeResourcePreference(computeResourceId, groupResourceProfileId).getResourceSpecificCredentialStoreToken();
} else {
return getGroupResourceProfile(groupResourceProfileId).getDefaultCredentialStoreToken();
}
}
public GroupComputeResourcePreference getGroupComputeResourcePreference(String computeResourcId, String groupResourceProfileId) throws Exception {
RegistryService.Client client = this.registryClientPool.getResource();
try {
if (client.isGroupComputeResourcePreferenceExists(computeResourcId,
groupResourceProfileId)) {
return client.getGroupComputeResourcePreference(
computeResourcId,
groupResourceProfileId);
}
return null;
} finally {
this.registryClientPool.returnResource(client);
}
}
public GroupResourceProfile getGroupResourceProfile(String groupResourceProfileId) throws Exception {
RegistryService.Client client = this.registryClientPool.getResource();
try {
if (client.isGroupResourceProfileExists(groupResourceProfileId)) {
return client.getGroupResourceProfile(groupResourceProfileId);
}
return null;
} finally {
this.registryClientPool.returnResource(client);
}
}
public String getComputeResourceLoginUserName(String gatewayId,
String username, String computeResourceId, boolean isUseUserCRPref,
boolean isSetGroupResourceProfileId, String groupResourceProfileId,
String overrideLoginUsername) throws Exception {
if (isUseUserCRPref &&
getUserComputeResourcePreference(gatewayId, username, computeResourceId) != null &&
isValid(getUserComputeResourcePreference(gatewayId, username, computeResourceId).getLoginUserName())) {
return getUserComputeResourcePreference(gatewayId, username, computeResourceId).getLoginUserName();
} else if (isValid(overrideLoginUsername)) {
return overrideLoginUsername;
} else if (isSetGroupResourceProfileId &&
getGroupComputeResourcePreference(computeResourceId, groupResourceProfileId) != null &&
isValid(getGroupComputeResourcePreference(computeResourceId, groupResourceProfileId).getLoginUserName())) {
return getGroupComputeResourcePreference(computeResourceId, groupResourceProfileId).getLoginUserName();
}
throw new RuntimeException("Can't find login username for compute resource");
}
}