diff --git a/src/main/java/org/gcube/smartgears/connector/resourceregistry/FacetBasedPublisher.java b/src/main/java/org/gcube/smartgears/connector/resourceregistry/FacetBasedPublisher.java index c40bd21..589c295 100644 --- a/src/main/java/org/gcube/smartgears/connector/resourceregistry/FacetBasedPublisher.java +++ b/src/main/java/org/gcube/smartgears/connector/resourceregistry/FacetBasedPublisher.java @@ -9,6 +9,7 @@ import org.gcube.common.security.AuthorizedTasks; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.resourcemanagement.model.reference.entities.resources.EService; import org.gcube.resourcemanagement.model.reference.entities.resources.HostingNode; +import org.gcube.smartgears.configuration.AuthorizationProviderConfiguration; import org.gcube.smartgears.connector.resourceregistry.resourcemanager.EServiceManager; import org.gcube.smartgears.connector.resourceregistry.resourcemanager.HostingNodeManager; import org.gcube.smartgears.context.Property; @@ -17,6 +18,7 @@ import org.gcube.smartgears.context.container.ContainerContext; import org.gcube.smartgears.publishing.Publisher; import org.gcube.smartgears.publishing.SmartgearsProfilePublisher; import org.gcube.smartgears.security.AuthorizationProvider; +import org.gcube.smartgears.security.AuthorizationProviderFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,10 +27,21 @@ public class FacetBasedPublisher implements Publisher { private static Logger logger = LoggerFactory.getLogger(FacetBasedPublisher.class); - + + public static AuthorizationProvider getAuthorizationProvider(ApplicationContext applicationContext) { + return FacetBasedPublisher.getAuthorizationProvider(applicationContext.container()); + } + + public static AuthorizationProvider getAuthorizationProvider(ContainerContext containerContext) { + AuthorizationProviderConfiguration authorizationProviderConfiguration = containerContext.configuration().authorizationConfiguration(); + AuthorizationProviderFactory authorizationProviderFactory = authorizationProviderConfiguration.getAuthProviderFactory(); + AuthorizationProvider authorizationProvider = authorizationProviderFactory.connect(authorizationProviderConfiguration.getCredentials()); + return authorizationProvider; + } + @Override public boolean create(ContainerContext containerContext, Set contexts) { - AuthorizationProvider authorizationProvider = containerContext.configuration().authorizationProvider(); + AuthorizationProvider authorizationProvider = FacetBasedPublisher.getAuthorizationProvider(containerContext); SortedSet contextToIterate = new TreeSet<>(contexts); final String context = contextToIterate.first(); try { @@ -58,7 +71,7 @@ public class FacetBasedPublisher implements Publisher { @Override public boolean create(ApplicationContext applicationContext, Set contexts) { - AuthorizationProvider authorizationProvider = applicationContext.container().configuration().authorizationProvider(); + AuthorizationProvider authorizationProvider = FacetBasedPublisher.getAuthorizationProvider(applicationContext); SortedSet contextToIterate = new TreeSet<>(contexts); final String context = contextToIterate.first(); @@ -90,7 +103,7 @@ public class FacetBasedPublisher implements Publisher { @Override public boolean remove(ContainerContext containerContext, Set contexts) { HostingNodeManager hostingNodeManager = (HostingNodeManager) containerContext.properties().lookup(Constants.HOSTING_NODE_MANAGER_PROPERTY).value(); - AuthorizationProvider authorizationProvider = containerContext.configuration().authorizationProvider(); + AuthorizationProvider authorizationProvider = FacetBasedPublisher.getAuthorizationProvider(containerContext); for(String context : contexts) { try { AuthorizedTasks.executeSafely( () -> { @@ -111,7 +124,7 @@ public class FacetBasedPublisher implements Publisher { @Override public boolean remove(ApplicationContext applicationContext, Set contexts) { EServiceManager eServiceManager = (EServiceManager) applicationContext.properties().lookup(Constants.ESERVICE_MANAGER_PROPERTY).value(); - AuthorizationProvider authorizationProvider = applicationContext.container().configuration().authorizationProvider(); + AuthorizationProvider authorizationProvider = FacetBasedPublisher.getAuthorizationProvider(applicationContext); for(String context : contexts) { try { AuthorizedTasks.executeSafely( () -> { @@ -132,7 +145,7 @@ public class FacetBasedPublisher implements Publisher { @Override public boolean update(ContainerContext containerContext) { HostingNodeManager hostingNodeManager = (HostingNodeManager) containerContext.properties().lookup(Constants.HOSTING_NODE_MANAGER_PROPERTY).value(); - AuthorizationProvider authorizationProvider = containerContext.configuration().authorizationProvider(); + AuthorizationProvider authorizationProvider = FacetBasedPublisher.getAuthorizationProvider(containerContext); SortedSet contextToIterate = new TreeSet<>(authorizationProvider.getContexts()); final String context = contextToIterate.first(); try { @@ -152,7 +165,7 @@ public class FacetBasedPublisher implements Publisher { @Override public boolean update(ApplicationContext applicationContext) { EServiceManager eServiceManager = (EServiceManager) applicationContext.properties().lookup(Constants.ESERVICE_MANAGER_PROPERTY).value(); - AuthorizationProvider authorizationProvider = applicationContext.container().configuration().authorizationProvider(); + AuthorizationProvider authorizationProvider = FacetBasedPublisher.getAuthorizationProvider(applicationContext); SortedSet contextToIterate = new TreeSet<>(authorizationProvider.getContexts()); final String context = contextToIterate.first(); try { diff --git a/src/main/java/org/gcube/smartgears/connector/resourceregistry/resourcemanager/EServiceManager.java b/src/main/java/org/gcube/smartgears/connector/resourceregistry/resourcemanager/EServiceManager.java index c2ef5e7..3a3b2ff 100644 --- a/src/main/java/org/gcube/smartgears/connector/resourceregistry/resourcemanager/EServiceManager.java +++ b/src/main/java/org/gcube/smartgears/connector/resourceregistry/resourcemanager/EServiceManager.java @@ -50,10 +50,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.HostingNo import org.gcube.resourcemanagement.model.reference.properties.ValueSchema; import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy; import org.gcube.resourcemanagement.model.reference.relations.isrelatedto.Activates; +import org.gcube.smartgears.configuration.ProxyAddress; import org.gcube.smartgears.configuration.application.ApplicationConfiguration; import org.gcube.smartgears.configuration.container.ContainerConfiguration; import org.gcube.smartgears.connector.resourceregistry.Constants; import org.gcube.smartgears.connector.resourceregistry.ContextUtility; +import org.gcube.smartgears.connector.resourceregistry.FacetBasedPublisher; import org.gcube.smartgears.context.application.ApplicationContext; import org.gcube.smartgears.security.AuthorizationProvider; import org.slf4j.Logger; @@ -85,7 +87,7 @@ public class EServiceManager { UUID contextUUID = ContextUtility.getContextUUID(context); /* Trying to get a context which is not the current to properly invoke the addToContext without forcing the operation using addResourceToCurrentContext */ - AuthorizationProvider authorizationProvider = applicationContext.container().configuration().authorizationProvider(); + AuthorizationProvider authorizationProvider = FacetBasedPublisher.getAuthorizationProvider(applicationContext); Set contexts = authorizationProvider.getContexts(); boolean anotherContextSet = false; for (String c : contexts) { @@ -117,7 +119,7 @@ public class EServiceManager { UUID contextUUID = ContextUtility.getContextUUID(context); /* Trying to get a context which is not the current to properly invoke the addToContext without forcing the operation using addResourceToCurrentContext */ - AuthorizationProvider authorizationProvider = applicationContext.container().configuration().authorizationProvider(); + AuthorizationProvider authorizationProvider = FacetBasedPublisher.getAuthorizationProvider(applicationContext); Set contexts = authorizationProvider.getContexts(); boolean anotherContextSet = false; for (String c : contexts) { @@ -181,12 +183,14 @@ public class EServiceManager { private String getBaseAddress() { ApplicationConfiguration configuration = applicationContext.configuration(); ContainerConfiguration container = applicationContext.container().configuration(); + String baseAddress; if (configuration.proxable()) { - String protocol = configuration.proxyAddress().getProtocol(); - String port = configuration.proxyAddress().getPort() != null ? ":" + configuration.proxyAddress().getPort() : ""; + ProxyAddress proxyAddress = container.proxy(); + String protocol = proxyAddress.getProtocol(); + String port = proxyAddress.getPort() != null ? ":" + proxyAddress.getPort() : ""; - baseAddress = String.format("%s://%s%s%s", protocol, configuration.proxyAddress().getHostname(), port, + baseAddress = String.format("%s://%s%s%s", protocol, proxyAddress.getHostname(), port, applicationContext.application().getContextPath()); } else { String protocol = container.protocol(); @@ -232,7 +236,7 @@ public class EServiceManager { SoftwareFacet softwareFacet = new SoftwareFacetImpl(); softwareFacet.setDescription(applicationConfiguration.description()); - softwareFacet.setGroup(applicationConfiguration.serviceClass()); + softwareFacet.setGroup(applicationConfiguration.group()); softwareFacet.setName(applicationConfiguration.name()); softwareFacet.setVersion(applicationConfiguration.version()); diff --git a/src/main/java/org/gcube/smartgears/connector/resourceregistry/resourcemanager/HostingNodeManager.java b/src/main/java/org/gcube/smartgears/connector/resourceregistry/resourcemanager/HostingNodeManager.java index 8e06e67..0601196 100644 --- a/src/main/java/org/gcube/smartgears/connector/resourceregistry/resourcemanager/HostingNodeManager.java +++ b/src/main/java/org/gcube/smartgears/connector/resourceregistry/resourcemanager/HostingNodeManager.java @@ -74,10 +74,12 @@ import org.gcube.resourcemanagement.model.reference.entities.resources.HostingNo import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasPersistentMemory; import org.gcube.resourcemanagement.model.reference.relations.consistsof.HasVolatileMemory; import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy; +import org.gcube.smartgears.configuration.PersistenceConfiguration; +import org.gcube.smartgears.configuration.SmartgearsConfiguration; import org.gcube.smartgears.configuration.container.ContainerConfiguration; import org.gcube.smartgears.configuration.container.Site; -import org.gcube.smartgears.configuration.library.SmartGearsConfiguration; import org.gcube.smartgears.connector.resourceregistry.ContextUtility; +import org.gcube.smartgears.connector.resourceregistry.FacetBasedPublisher; import org.gcube.smartgears.context.container.ContainerContext; import org.gcube.smartgears.provider.ProviderFactory; import org.gcube.smartgears.security.AuthorizationProvider; @@ -117,7 +119,7 @@ public class HostingNodeManager { UUID contextUUID = ContextUtility.getContextUUID(context); /* Trying to get a context which is not the current to properly invoke the addToContext without forcing the operation using addResourceToCurrentContext */ - AuthorizationProvider authorizationProvider = containerContext.configuration().authorizationProvider(); + AuthorizationProvider authorizationProvider = FacetBasedPublisher.getAuthorizationProvider(containerContext); Set contexts = authorizationProvider.getContexts(); boolean anotherContextSet = false; for (String c : contexts) { @@ -319,11 +321,11 @@ public class HostingNodeManager { hostingNode.addFacet(osSoftwareFacet); - SmartGearsConfiguration config = ProviderFactory.provider().smartgearsConfiguration(); + SmartgearsConfiguration config = ProviderFactory.provider().smartgearsConfiguration(); SoftwareFacet smartgearsSoftwareFacet = new SoftwareFacetImpl(); smartgearsSoftwareFacet.setGroup("gCube"); smartgearsSoftwareFacet.setName("SmartGears"); - smartgearsSoftwareFacet.setVersion(config.version()); + smartgearsSoftwareFacet.setVersion(config.getVersion()); hostingNode.addFacet(smartgearsSoftwareFacet); SoftwareFacet smartgearsDistributionSoftwareFacet = new SoftwareFacetImpl(); @@ -433,15 +435,16 @@ public class HostingNodeManager { long free = 0; long total = 0; try { + PersistenceConfiguration persistenceConfiguration = containerContext.configuration().persistenceConfiguration(); FileStore fileStore = Files - .getFileStore(Paths.get(containerContext.configuration().persistence().getLocation())); + .getFileStore(Paths.get(persistenceConfiguration.getImplementationClass().newInstance().getLocation())); free = fileStore.getUsableSpace() / 1048576; // 1048576 = 1024*1024 // user to convert // bytes in MByte total = fileStore.getTotalSpace() / 1048576; // 1048576 = 1024*1024 // user to convert // bytes in MByte - } catch (IOException ioe) { + } catch (Exception ioe) { logger.warn("Unable to detect disk space information", ioe); memoryFacet.setAdditionalProperty(MESSAGE, "Unable to detect disk space information."); }