From 961676484f3c795a62d5725fd3778e24cecc2385 Mon Sep 17 00:00:00 2001 From: lucio Date: Wed, 8 Jun 2022 17:42:32 +0200 Subject: [PATCH] removing gcore resource dependencies from smartgears --- pom.xml | 24 +++---- .../application/ApplicationContext.java | 4 -- .../DefaultApplicationContext.java | 8 --- .../resource/FrontPageResource.java | 8 +-- .../extensions/resource/MetricsResource.java | 6 -- .../extensions/resource/ProfileResource.java | 4 +- .../application/lifecycle/ProfileBuilder.java | 71 ------------------- .../application/lifecycle/ProfileManager.java | 2 - .../lifecycle/ServicePublisher.java | 61 ---------------- .../application/request/RequestValidator.java | 6 +- .../smartgears/publishing/Publisher.java | 15 ++++ 11 files changed, 32 insertions(+), 177 deletions(-) delete mode 100644 src/main/java/org/gcube/smartgears/handlers/application/lifecycle/ProfileBuilder.java delete mode 100644 src/main/java/org/gcube/smartgears/handlers/application/lifecycle/ServicePublisher.java create mode 100644 src/main/java/org/gcube/smartgears/publishing/Publisher.java diff --git a/pom.xml b/pom.xml index b17f221..cca1843 100644 --- a/pom.xml +++ b/pom.xml @@ -60,7 +60,7 @@ org.gcube.common common-security - + org.gcube.data.publishing document-store-lib @@ -76,16 +76,6 @@ slf4j-api - - org.gcube.resources - registry-publisher - - - - org.gcube.resources - common-gcore-resources - - org.ini4j ini4j @@ -100,13 +90,17 @@ org.gcube.core - common-scope + common-events + [1.0.0,2.0.0-SNAPSHOT) - org.gcube.core - common-events - [1.0.0,2.0.0-SNAPSHOT) + org.gcube.common.security + gcube-secrets + + + javax.ws.rs + javax.ws.rs-api diff --git a/src/main/java/org/gcube/smartgears/context/application/ApplicationContext.java b/src/main/java/org/gcube/smartgears/context/application/ApplicationContext.java index a7a8f06..d213e29 100644 --- a/src/main/java/org/gcube/smartgears/context/application/ApplicationContext.java +++ b/src/main/java/org/gcube/smartgears/context/application/ApplicationContext.java @@ -3,7 +3,6 @@ package org.gcube.smartgears.context.application; import javax.servlet.ServletContext; import org.gcube.common.events.Hub; -import org.gcube.common.resources.gcore.GCoreEndpoint; import org.gcube.smartgears.configuration.application.ApplicationConfiguration; import org.gcube.smartgears.context.Properties; import org.gcube.smartgears.context.container.ContainerContext; @@ -34,9 +33,6 @@ public interface ApplicationContext { * @return the configuration */ ApplicationConfiguration configuration(); - - - GCoreEndpoint profile(); /** * Returns the lifecycle of the application. diff --git a/src/main/java/org/gcube/smartgears/context/application/DefaultApplicationContext.java b/src/main/java/org/gcube/smartgears/context/application/DefaultApplicationContext.java index 9536401..2592ca9 100644 --- a/src/main/java/org/gcube/smartgears/context/application/DefaultApplicationContext.java +++ b/src/main/java/org/gcube/smartgears/context/application/DefaultApplicationContext.java @@ -1,11 +1,8 @@ package org.gcube.smartgears.context.application; -import static org.gcube.smartgears.Constants.profile_property; - import javax.servlet.ServletContext; import org.gcube.common.events.Hub; -import org.gcube.common.resources.gcore.GCoreEndpoint; import org.gcube.smartgears.configuration.application.ApplicationConfiguration; import org.gcube.smartgears.context.Properties; import org.gcube.smartgears.context.container.ContainerContext; @@ -65,11 +62,6 @@ public class DefaultApplicationContext implements ApplicationContext { return container; } - @Override - public GCoreEndpoint profile() { - return properties().lookup(profile_property).value(GCoreEndpoint.class); - } - @Override public String name() { //little shortcut for ease of logging return configuration.name(); diff --git a/src/main/java/org/gcube/smartgears/extensions/resource/FrontPageResource.java b/src/main/java/org/gcube/smartgears/extensions/resource/FrontPageResource.java index d3e175a..2e3101c 100644 --- a/src/main/java/org/gcube/smartgears/extensions/resource/FrontPageResource.java +++ b/src/main/java/org/gcube/smartgears/extensions/resource/FrontPageResource.java @@ -11,7 +11,6 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -23,7 +22,7 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.gcube.common.scope.impl.ScopeBean; +import org.gcube.common.security.ContextBean; import org.gcube.smartgears.extensions.ApiResource; import org.gcube.smartgears.extensions.ApiSignature; import org.slf4j.Logger; @@ -94,12 +93,11 @@ public class FrontPageResource extends ApiResource { String infrastructure = context().container().configuration().infrastructure(); StringBuilder voValue = new StringBuilder(); - Collection scopes = context().profile().scopes().asCollection(); Set vos = new HashSet(); //pre-process - for (String scope : scopes) { - ScopeBean bean = new ScopeBean(scope); + for (String scope : context().container().configuration().authorizationProvider().getContexts()) { + ContextBean bean = new ContextBean(scope); switch (bean.type()) { case INFRASTRUCTURE: infrastructure = bean.name(); diff --git a/src/main/java/org/gcube/smartgears/extensions/resource/MetricsResource.java b/src/main/java/org/gcube/smartgears/extensions/resource/MetricsResource.java index d2aa7f3..51cb27d 100644 --- a/src/main/java/org/gcube/smartgears/extensions/resource/MetricsResource.java +++ b/src/main/java/org/gcube/smartgears/extensions/resource/MetricsResource.java @@ -13,12 +13,6 @@ import org.gcube.smartgears.extensions.ApiResource; import org.gcube.smartgears.extensions.ApiSignature; import io.micrometer.core.instrument.Metrics; -import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics; -import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics; -import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics; -import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics; -import io.micrometer.core.instrument.binder.system.ProcessorMetrics; -import io.micrometer.prometheus.PrometheusConfig; import io.micrometer.prometheus.PrometheusMeterRegistry; public class MetricsResource extends ApiResource { diff --git a/src/main/java/org/gcube/smartgears/extensions/resource/ProfileResource.java b/src/main/java/org/gcube/smartgears/extensions/resource/ProfileResource.java index 58b6182..0ac19c8 100644 --- a/src/main/java/org/gcube/smartgears/extensions/resource/ProfileResource.java +++ b/src/main/java/org/gcube/smartgears/extensions/resource/ProfileResource.java @@ -9,7 +9,6 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.gcube.common.resources.gcore.Resources; import org.gcube.smartgears.extensions.ApiResource; import org.gcube.smartgears.extensions.ApiSignature; @@ -35,7 +34,8 @@ public class ProfileResource extends ApiResource { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - Resources.marshal(context().profile(),resp.getWriter()); + //Resources.marshal(context().profile(),resp.getWriter()); + //TODO: return something to show } } diff --git a/src/main/java/org/gcube/smartgears/handlers/application/lifecycle/ProfileBuilder.java b/src/main/java/org/gcube/smartgears/handlers/application/lifecycle/ProfileBuilder.java deleted file mode 100644 index 4c57d0a..0000000 --- a/src/main/java/org/gcube/smartgears/handlers/application/lifecycle/ProfileBuilder.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.gcube.smartgears.handlers.application.lifecycle; - -import java.net.URI; -import java.util.Arrays; -import java.util.Calendar; -import java.util.List; - -import javax.servlet.ServletRegistration; - -import org.gcube.common.resources.gcore.GCoreEndpoint; -import org.gcube.smartgears.configuration.application.ApplicationConfiguration; -import org.gcube.smartgears.configuration.container.ContainerConfiguration; -import org.gcube.smartgears.context.application.ApplicationContext; - -public class ProfileBuilder { - - private static List servletExcludes = Arrays.asList("default","jsp"); - - // private static final Logger log = LoggerFactory.getLogger(ProfileBuilder.class); - - private ApplicationContext context; - - public ProfileBuilder(ApplicationContext context) { - this.context = context; - } - - public void fill(GCoreEndpoint endpoint) { - - - ApplicationConfiguration configuration = context.configuration(); - ContainerConfiguration container = context.container().configuration(); - - - endpoint.profile() - .description(configuration.description()) - .serviceName(configuration.name()) - .serviceClass(configuration.serviceClass()) - .version(configuration.version()) - .serviceId(configuration.name() + configuration.serviceClass() + configuration.version()) - .ghnId(context.container().profile().id()); - - endpoint.profile().newDeploymentData() - .activationTime(Calendar.getInstance()) - .status((context.lifecycle().state().remoteForm())); - - endpoint.profile().endpoints().clear(); - - String baseAddress; - if (configuration.proxied()){ - String protocol = configuration.proxyAddress().getProtocol(); - String port = configuration.proxyAddress().getPort()!=null?":"+configuration.proxyAddress().getPort():""; - - baseAddress=String.format("%s://%s%s%s", protocol , configuration.proxyAddress().getHostname(), port,context.application().getContextPath()); - } else { - String protocol = container.protocol(); - int port = container.port(); - - baseAddress=String.format("%s://%s:%d%s", protocol , container.hostname(), port,context.application().getContextPath()); - } - - for (ServletRegistration servlet : context.application().getServletRegistrations().values()) - if (!servletExcludes.contains(servlet.getName())) - for (String mapping : servlet.getMappings()) { - String address = baseAddress+(mapping.endsWith("*")?mapping.substring(0,mapping.length()-2):mapping); - endpoint.profile().endpoints().add().nameAndAddress(servlet.getName(),URI.create(address)); - } - - - } - -} diff --git a/src/main/java/org/gcube/smartgears/handlers/application/lifecycle/ProfileManager.java b/src/main/java/org/gcube/smartgears/handlers/application/lifecycle/ProfileManager.java index 2418054..dcff68e 100644 --- a/src/main/java/org/gcube/smartgears/handlers/application/lifecycle/ProfileManager.java +++ b/src/main/java/org/gcube/smartgears/handlers/application/lifecycle/ProfileManager.java @@ -109,8 +109,6 @@ public class ProfileManager extends ApplicationLifecycleHandler { @Observes({ activation, stop, failure }) void onChanged(ApplicationLifecycle lc) { - GCoreEndpoint profile = context.profile(); - profile.profile().deploymentData().status(lc.state().remoteForm()); log.debug("moving app {} to {}",context.name(), lc.state().remoteForm()); diff --git a/src/main/java/org/gcube/smartgears/handlers/application/lifecycle/ServicePublisher.java b/src/main/java/org/gcube/smartgears/handlers/application/lifecycle/ServicePublisher.java deleted file mode 100644 index 1aad5e3..0000000 --- a/src/main/java/org/gcube/smartgears/handlers/application/lifecycle/ServicePublisher.java +++ /dev/null @@ -1,61 +0,0 @@ -package org.gcube.smartgears.handlers.application.lifecycle; - -import java.util.List; -import java.util.Set; - -import org.gcube.common.resources.gcore.GCoreEndpoint; -import org.gcube.common.resources.gcore.HostingNode; -import org.gcube.smartgears.configuration.Mode; -import org.gcube.smartgears.context.application.ApplicationContext; -import org.gcube.smartgears.handlers.AbstractProfilePublisher; -import org.gcube.smartgears.handlers.ProfileEvents; - -/** - * Publishes the current resource profile of the application. - *

- *Distinguishes publication in new scopes ({@link #addTo(List)} from publication updates in existing scopes ({@link #update()}. - * - * - * @author Fabio Simeoni - * - */ -public class ServicePublisher extends AbstractProfilePublisher { - - private final ApplicationContext context; - - public ServicePublisher(ApplicationContext context) { - super(); - this.context = context; - } - - - protected void sharePublished(HostingNode profile) { - context.events().fire(profile,ProfileEvents.published); - } - - - @Override - protected GCoreEndpoint getProfile() { - return context.profile(); - } - - - @Override - protected boolean isRoot() { - return context.container().configuration().mode()!=Mode.root; - } - - - @Override - protected void sharePublished(GCoreEndpoint profile) { - context.events().fire(profile,ProfileEvents.published); - } - - - @Override - protected Set getAllowedContexts() { - return context.container().configuration().authorizationProvider().getContexts(); - } -} - - diff --git a/src/main/java/org/gcube/smartgears/handlers/application/request/RequestValidator.java b/src/main/java/org/gcube/smartgears/handlers/application/request/RequestValidator.java index 3766cdd..09bd236 100644 --- a/src/main/java/org/gcube/smartgears/handlers/application/request/RequestValidator.java +++ b/src/main/java/org/gcube/smartgears/handlers/application/request/RequestValidator.java @@ -7,8 +7,8 @@ import static org.gcube.smartgears.handlers.application.request.RequestError.inv import javax.xml.bind.annotation.XmlRootElement; -import org.gcube.common.scope.impl.ScopeBean; -import org.gcube.common.scope.impl.ScopeBean.Type; +import org.gcube.common.security.ContextBean; +import org.gcube.common.security.ContextBean.Type; import org.gcube.common.security.providers.SecretManagerProvider; import org.gcube.common.security.secrets.AccessTokenSecret; import org.gcube.common.security.secrets.GCubeSecret; @@ -89,7 +89,7 @@ public class RequestValidator extends RequestHandler { invalid_request_error.fire("call is unscoped"); } - ScopeBean bean = new ScopeBean(context); + ContextBean bean = new ContextBean(context); ContainerConfiguration conf = appContext.container().configuration(); if (!conf.allowedContexts().contains(context) && diff --git a/src/main/java/org/gcube/smartgears/publishing/Publisher.java b/src/main/java/org/gcube/smartgears/publishing/Publisher.java new file mode 100644 index 0000000..6d30126 --- /dev/null +++ b/src/main/java/org/gcube/smartgears/publishing/Publisher.java @@ -0,0 +1,15 @@ +package org.gcube.smartgears.publishing; + +import org.gcube.smartgears.configuration.application.ApplicationConfiguration; +import org.gcube.smartgears.configuration.container.ContainerConfiguration; + +public interface Publisher { + + boolean publishContainer(ContainerConfiguration container, String ... contexts); + + boolean publishApplication(ApplicationConfiguration application, String ... contexts); + + boolean unpublishContainer(ContainerConfiguration container, String ... contexts); + + boolean unpublishApplication(ApplicationConfiguration application, String ... contexts); +}