Commit f80a560d authored by Gianluca Filippone's avatar Gianluca Filippone
Browse files

Adjusted Enactment Engine base url

parent 7f972ec8
...@@ -624,7 +624,7 @@ we are happy to inform you that the password request was execute successfully fo ...@@ -624,7 +624,7 @@ we are happy to inform you that the password request was execute successfully fo
<APlainAttr id="956a8440-1df7-4ed6-b156-04173ca47528" owner_id="ef028fc9-23bb-491b-828f-c923bb791bf5" <APlainAttr id="956a8440-1df7-4ed6-b156-04173ca47528" owner_id="ef028fc9-23bb-491b-828f-c923bb791bf5"
schema_id="enactmentEngineBaseURL"/> schema_id="enactmentEngineBaseURL"/>
<APlainAttrValue id="15f64e99-20cc-42ec-a77a-3396dea4248f" attribute_id="956a8440-1df7-4ed6-b156-04173ca47528" <APlainAttrValue id="15f64e99-20cc-42ec-a77a-3396dea4248f" attribute_id="956a8440-1df7-4ed6-b156-04173ca47528"
stringValue="http://localhost:9080/choremocks/rest/v1/choreography"/> stringValue="http://localhost:9080/choremocks/rest/v1"/>
<APlainAttr id="9ecee738-f994-4acd-8ee7-38f9946acdc0" owner_id="ef028fc9-23bb-491b-828f-c923bb791bf5" <APlainAttr id="9ecee738-f994-4acd-8ee7-38f9946acdc0" owner_id="ef028fc9-23bb-491b-828f-c923bb791bf5"
schema_id="enactmentEngineUsername"/> schema_id="enactmentEngineUsername"/>
<APlainAttrValue id="42337c7c-7ff5-4fe6-b37c-7c7ff57fe646" attribute_id="9ecee738-f994-4acd-8ee7-38f9946acdc0" <APlainAttrValue id="42337c7c-7ff5-4fe6-b37c-7c7ff57fe646" attribute_id="9ecee738-f994-4acd-8ee7-38f9946acdc0"
...@@ -59,7 +59,7 @@ public class ChoreographyEEResourcesPanel extends Panel { ...@@ -59,7 +59,7 @@ public class ChoreographyEEResourcesPanel extends Panel {
this.choreography = restClient.getChoreography(choreographyId); this.choreography = restClient.getChoreography(choreographyId);
this.enactmentEngine = restClient.getChoreographyEE(choreography.getId()); this.enactmentEngine = restClient.getChoreographyEE(choreography.getId());
EnactmentEngineStatusTO ee = restClient.getChoreographyEEStatus(choreographyId); EnactmentEngineStatusTO ee = restClient.getChoreographyEEStatus(enactmentEngine.getKey(), choreographyId);
double ramPercentage = (ee.getRamUsage() / Float.valueOf(ee.getRamTotal())) * 100; double ramPercentage = (ee.getRamUsage() / Float.valueOf(ee.getRamTotal())) * 100;
double storagePercentage = (ee.getStorageUsage() / Float.valueOf(ee.getStorageTotal())) * 100; double storagePercentage = (ee.getStorageUsage() / Float.valueOf(ee.getStorageTotal())) * 100;
......
...@@ -128,8 +128,10 @@ public class ChoreographyRestClient extends BaseRestClient { ...@@ -128,8 +128,10 @@ public class ChoreographyRestClient extends BaseRestClient {
return getService(ChoreographyService.class).getEnactmentEngine(choreographyId); return getService(ChoreographyService.class).getEnactmentEngine(choreographyId);
} }
public EnactmentEngineStatusTO getChoreographyEEStatus(final String choreographyId) { public EnactmentEngineStatusTO getChoreographyEEStatus(
return getService(MonitorInterfaceService.class).getChoreographyEEStatus(choreographyId); final String enactmentEngineKey,
final String choreographyId) {
return getService(MonitorInterfaceService.class).getChoreographyEEStatus(enactmentEngineKey, choreographyId);
} }
public List<VirtualMachineInfoTO> getChoreographyVmList( public List<VirtualMachineInfoTO> getChoreographyVmList(
......
...@@ -109,6 +109,8 @@ public class ChoreographyLogic extends AbstractLogic<AbstractBaseBean> { ...@@ -109,6 +109,8 @@ public class ChoreographyLogic extends AbstractLogic<AbstractBaseBean> {
private static final String SECURITY_FILTER_ENDPOINT_SCHEMA = "SecurityFilterEndpoint"; private static final String SECURITY_FILTER_ENDPOINT_SCHEMA = "SecurityFilterEndpoint";
private static final String CHOREOGRAPHY_URL_PATH = "/choreography";
private static String SECRET_KEY; private static String SECRET_KEY;
static { static {
...@@ -187,7 +189,8 @@ public class ChoreographyLogic extends AbstractLogic<AbstractBaseBean> { ...@@ -187,7 +189,8 @@ public class ChoreographyLogic extends AbstractLogic<AbstractBaseBean> {
List<Object> providers = new ArrayList<>(); List<Object> providers = new ArrayList<>();
providers.add(new JacksonJaxbJsonProvider()); providers.add(new JacksonJaxbJsonProvider());
return WebClient.create( return WebClient.create(
StringUtils.removeEndIgnoreCase(baseURL, "/") + endpoint, providers, username, password, null). StringUtils.removeEndIgnoreCase(baseURL, "/") + CHOREOGRAPHY_URL_PATH + endpoint,
providers, username, password, null).
accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_XML_TYPE); accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_XML_TYPE);
} }
......
...@@ -34,11 +34,16 @@ import eu.chorevolution.idm.common.types.EventType; ...@@ -34,11 +34,16 @@ import eu.chorevolution.idm.common.types.EventType;
import eu.chorevolution.idm.common.types.InstanceStatusType; import eu.chorevolution.idm.common.types.InstanceStatusType;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.Map;
import javax.ws.rs.WebApplicationException; import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.cxf.jaxrs.client.WebClient; import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.syncope.common.lib.to.AnyObjectTO;
import org.apache.syncope.common.lib.to.AttrTO;
import org.apache.syncope.common.lib.to.PlainSchemaTO;
import org.apache.syncope.common.lib.types.SchemaType;
import org.apache.syncope.core.persistence.api.dao.ChoreographyDAO; import org.apache.syncope.core.persistence.api.dao.ChoreographyDAO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -46,8 +51,10 @@ import org.apache.syncope.core.persistence.api.dao.EventDAO; ...@@ -46,8 +51,10 @@ import org.apache.syncope.core.persistence.api.dao.EventDAO;
import org.apache.syncope.core.persistence.api.entity.Event; import org.apache.syncope.core.persistence.api.entity.Event;
import org.apache.syncope.core.persistence.api.entity.ChoreographyInstance; import org.apache.syncope.core.persistence.api.entity.ChoreographyInstance;
import org.apache.syncope.core.persistence.api.dao.ChoreographyInstanceDAO; import org.apache.syncope.core.persistence.api.dao.ChoreographyInstanceDAO;
import org.apache.syncope.core.persistence.api.dao.NotFoundException;
import org.apache.syncope.core.persistence.api.entity.group.GPlainAttr; import org.apache.syncope.core.persistence.api.entity.group.GPlainAttr;
import org.apache.syncope.core.persistence.api.entity.group.Group; import org.apache.syncope.core.persistence.api.entity.group.Group;
import org.apache.syncope.core.spring.security.Encryptor;
@Component @Component
public class MonitorLogic extends AbstractTransactionalLogic<AbstractBaseBean> { public class MonitorLogic extends AbstractTransactionalLogic<AbstractBaseBean> {
...@@ -61,11 +68,21 @@ public class MonitorLogic extends AbstractTransactionalLogic<AbstractBaseBean> { ...@@ -61,11 +68,21 @@ public class MonitorLogic extends AbstractTransactionalLogic<AbstractBaseBean> {
@Autowired @Autowired
private EventDAO eventDAO; private EventDAO eventDAO;
private static final String MONITOR_BASE_URL = "http://localhost:9080/choremocks/rest/v1/monitoring"; private static final String ENACTMENT_ENGINE_TYPE = "ENACTMENT ENGINE";
private static final String MONITOR_USERNAME = "admin"; private static final String ENACTMENT_ENGINE_BASE_URL = "enactmentEngineBaseURL";
private static final String MONITOR_PASSWORD = "admin"; private static final String ENACTMENT_ENGINE_USERNAME = "enactmentEngineUsername";
private static final String ENACTMENT_ENGINE_PASSWORD = "enactmentEnginePassword";
private static final String MONITOR_URL_PATH = "/monitoring";
@Autowired
private AnyObjectLogic anyObjectLogic;
@Autowired
private SchemaLogic schemaLogic;
@Override @Override
protected AbstractBaseBean resolveReference(final Method method, final Object... args) protected AbstractBaseBean resolveReference(final Method method, final Object... args)
...@@ -74,12 +91,53 @@ public class MonitorLogic extends AbstractTransactionalLogic<AbstractBaseBean> { ...@@ -74,12 +91,53 @@ public class MonitorLogic extends AbstractTransactionalLogic<AbstractBaseBean> {
throw new UnresolvedReferenceException(); throw new UnresolvedReferenceException();
} }
private WebClient getMonitorWebClient(final String endpoint) throws Exception { private WebClient getMonitorWebClient(final String enactmentEngineKey, final String endpoint) throws Exception {
AnyObjectTO enactmentEngine = anyObjectLogic.read(enactmentEngineKey);
if (!ENACTMENT_ENGINE_TYPE.equals(enactmentEngine.getType())) {
throw new NotFoundException("Enactment Engine instance with key " + enactmentEngineKey);
}
return getMonitorWebClient(enactmentEngine, endpoint);
}
private WebClient getMonitorWebClient(final AnyObjectTO enactmentEngine, final String endpoint) throws Exception {
Map<String, AttrTO> plainAttrs = enactmentEngine.getPlainAttrMap();
String baseURL = null;
if (plainAttrs.containsKey(ENACTMENT_ENGINE_BASE_URL)) {
List<String> values = plainAttrs.get(ENACTMENT_ENGINE_BASE_URL).getValues();
if (!values.isEmpty()) {
baseURL = values.get(0);
}
}
if (baseURL == null) {
throw new IllegalArgumentException(
"Could not find " + ENACTMENT_ENGINE_BASE_URL + " for " + enactmentEngine.getKey());
}
String username = null;
if (plainAttrs.containsKey(ENACTMENT_ENGINE_USERNAME)) {
List<String> values = plainAttrs.get(ENACTMENT_ENGINE_USERNAME).getValues();
if (!values.isEmpty()) {
username = values.get(0);
}
}
String password = null;
if (plainAttrs.containsKey(ENACTMENT_ENGINE_PASSWORD)) {
List<String> values = plainAttrs.get(ENACTMENT_ENGINE_PASSWORD).getValues();
if (!values.isEmpty()) {
PlainSchemaTO enactmentEnginePasswordSchema =
schemaLogic.read(SchemaType.PLAIN, ENACTMENT_ENGINE_PASSWORD);
password = Encryptor.getInstance(enactmentEnginePasswordSchema.getSecretKey()).
decode(values.get(0), enactmentEnginePasswordSchema.getCipherAlgorithm());
}
}
List<Object> providers = new ArrayList<>(); List<Object> providers = new ArrayList<>();
providers.add(new JacksonJaxbJsonProvider()); providers.add(new JacksonJaxbJsonProvider());
return WebClient.create( return WebClient.create(
StringUtils.removeEndIgnoreCase(MONITOR_BASE_URL, "/") + endpoint, StringUtils.removeEndIgnoreCase(baseURL, "/") + MONITOR_URL_PATH + endpoint,
providers, MONITOR_USERNAME, MONITOR_PASSWORD, null). providers, username, password, null).
accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_XML_TYPE); accept(MediaType.APPLICATION_JSON_TYPE).type(MediaType.APPLICATION_XML_TYPE);
} }
...@@ -742,7 +800,7 @@ public class MonitorLogic extends AbstractTransactionalLogic<AbstractBaseBean> { ...@@ -742,7 +800,7 @@ public class MonitorLogic extends AbstractTransactionalLogic<AbstractBaseBean> {
public EnactmentEngineStatusTO getEnactmentEngineStatus(final String enactmentEngineKey) { public EnactmentEngineStatusTO getEnactmentEngineStatus(final String enactmentEngineKey) {
try { try {
WebClient webClient = getMonitorWebClient("/ee"); WebClient webClient = getMonitorWebClient(enactmentEngineKey, "/ee");
Response response = webClient.get(); Response response = webClient.get();
if (response.getStatus() == Response.Status.OK.getStatusCode() && response.hasEntity()) { if (response.getStatus() == Response.Status.OK.getStatusCode() && response.hasEntity()) {
...@@ -760,7 +818,7 @@ public class MonitorLogic extends AbstractTransactionalLogic<AbstractBaseBean> { ...@@ -760,7 +818,7 @@ public class MonitorLogic extends AbstractTransactionalLogic<AbstractBaseBean> {
List<VirtualMachineInfoTO> list = new ArrayList<>(); List<VirtualMachineInfoTO> list = new ArrayList<>();
try { try {
WebClient webClient = getMonitorWebClient("/ee/vm"); WebClient webClient = getMonitorWebClient(enactmentEngineKey, "/ee/vm");
Response response = webClient.get(); Response response = webClient.get();
if (response.getStatus() == Response.Status.OK.getStatusCode() && response.hasEntity()) { if (response.getStatus() == Response.Status.OK.getStatusCode() && response.hasEntity()) {
...@@ -779,9 +837,11 @@ public class MonitorLogic extends AbstractTransactionalLogic<AbstractBaseBean> { ...@@ -779,9 +837,11 @@ public class MonitorLogic extends AbstractTransactionalLogic<AbstractBaseBean> {
return list; return list;
} }
public EnactmentEngineStatusTO getChoreographyEEStatus(final String choreographyId) { public EnactmentEngineStatusTO getChoreographyEEStatus(
final String enactmentEngineKey,
final String choreographyId) {
try { try {
WebClient webClient = getMonitorWebClient("/chor/" + choreographyId); WebClient webClient = getMonitorWebClient(enactmentEngineKey, "/chor/" + choreographyId);
Response response = webClient.get(); Response response = webClient.get();
if (response.getStatus() == Response.Status.OK.getStatusCode() && response.hasEntity()) { if (response.getStatus() == Response.Status.OK.getStatusCode() && response.hasEntity()) {
...@@ -802,7 +862,7 @@ public class MonitorLogic extends AbstractTransactionalLogic<AbstractBaseBean> { ...@@ -802,7 +862,7 @@ public class MonitorLogic extends AbstractTransactionalLogic<AbstractBaseBean> {
List<VirtualMachineInfoTO> list = new ArrayList<>(); List<VirtualMachineInfoTO> list = new ArrayList<>();
try { try {
WebClient webClient = getMonitorWebClient("/chor/" + choreographyId + "/vm"); WebClient webClient = getMonitorWebClient(enactmentEngineKey, "/chor/" + choreographyId + "/vm");
Response response = webClient.get(); Response response = webClient.get();
if (response.getStatus() == Response.Status.OK.getStatusCode() && response.hasEntity()) { if (response.getStatus() == Response.Status.OK.getStatusCode() && response.hasEntity()) {
......
...@@ -224,12 +224,15 @@ public interface MonitorInterfaceService extends JAXRSService { ...@@ -224,12 +224,15 @@ public interface MonitorInterfaceService extends JAXRSService {
/** /**
* Returns the enactment engine associated to the choreography * Returns the enactment engine associated to the choreography
* *
* @param enactmentEngineKey enactment engine key
* @param choreographyId choreography id * @param choreographyId choreography id
* @return status of enactment engine for the choreography * @return status of enactment engine for the choreography
*/ */
@GET @GET
@Path("{choreographyId}/eeStatus") @Path("{enactmentEngineKey}/{choreographyId}/eeStatus")
EnactmentEngineStatusTO getChoreographyEEStatus(@NotNull @PathParam("choreographyId") String choreographyId); EnactmentEngineStatusTO getChoreographyEEStatus(
@NotNull @PathParam("enactmentEngineKey") String enactmentEngineKey,
@NotNull @PathParam("choreographyId") String choreographyId);
/** /**
* Returns the enactment engine associated to the choreography * Returns the enactment engine associated to the choreography
......
...@@ -126,8 +126,10 @@ public class MonitorInterfaceServiceImpl extends AbstractServiceImpl implements ...@@ -126,8 +126,10 @@ public class MonitorInterfaceServiceImpl extends AbstractServiceImpl implements
} }
@Override @Override
public EnactmentEngineStatusTO getChoreographyEEStatus(final String choreographyId) { public EnactmentEngineStatusTO getChoreographyEEStatus(
return logic.getChoreographyEEStatus(choreographyId); final String enactmentEngineKey,
final String choreographyId) {
return logic.getChoreographyEEStatus(enactmentEngineKey, choreographyId);
} }
@Override @Override
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment