Class DefaultCloudServiceManager

java.lang.Object
eu.cloudnetservice.node.impl.service.defaults.DefaultCloudServiceManager
All Implemented Interfaces:
eu.cloudnetservice.driver.provider.CloudServiceProvider, InternalCloudServiceManager, eu.cloudnetservice.node.service.CloudServiceManager

@Singleton @Provides({InternalCloudServiceManager.class,eu.cloudnetservice.node.service.CloudServiceManager.class,eu.cloudnetservice.driver.provider.CloudServiceProvider.class}) public class DefaultCloudServiceManager extends Object implements InternalCloudServiceManager
  • Field Details

    • TEMP_SERVICE_DIR

      protected static final Path TEMP_SERVICE_DIR
    • PERSISTENT_SERVICE_DIR

      protected static final Path PERSISTENT_SERVICE_DIR
    • NO_OP_PREPARER

      protected static final eu.cloudnetservice.node.service.ServiceConfigurationPreparer NO_OP_PREPARER
    • LOGGER

      private static final org.slf4j.Logger LOGGER
    • CD_UUID

      private static final ClassDesc CD_UUID
    • CD_SPECIFIC_PROVIDER

      private static final ClassDesc CD_SPECIFIC_PROVIDER
    • MTD_SERVICE_PROVIDER

      private static final MethodTypeDesc MTD_SERVICE_PROVIDER
    • sender

      protected final eu.cloudnetservice.driver.network.rpc.RPCSender sender
    • defaultJvmOptions

      protected final Collection<String> defaultJvmOptions
    • nodeServerProvider

      protected final eu.cloudnetservice.node.cluster.NodeServerProvider nodeServerProvider
    • cloudServiceFactory

      protected final eu.cloudnetservice.driver.provider.CloudServiceFactory cloudServiceFactory
    • specificProviderAllocator

      protected final eu.cloudnetservice.driver.network.rpc.factory.RPCImplementationBuilder.InstanceAllocator<? extends eu.cloudnetservice.driver.provider.SpecificCloudServiceProvider> specificProviderAllocator
    • knownServices

      protected final Map<UUID, eu.cloudnetservice.driver.provider.SpecificCloudServiceProvider> knownServices
    • localUnacceptedServices

      protected final com.github.benmanes.caffeine.cache.Cache<UUID, InternalCloudService> localUnacceptedServices
    • cloudServiceFactories

      protected final Map<String, eu.cloudnetservice.node.service.LocalCloudServiceFactory> cloudServiceFactories
    • preparers

      protected final Map<eu.cloudnetservice.driver.service.ServiceEnvironmentType, eu.cloudnetservice.node.service.ServiceConfigurationPreparer> preparers
  • Constructor Details

  • Method Details

    • registerDefaultServiceFactory

      @Inject private void registerDefaultServiceFactory()
    • serviceProvider

      @NonNull public @NonNull eu.cloudnetservice.driver.provider.SpecificCloudServiceProvider serviceProvider(@NonNull @NonNull UUID serviceUniqueId)
      Specified by:
      serviceProvider in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • serviceProviderByName

      @NonNull public @NonNull eu.cloudnetservice.driver.provider.SpecificCloudServiceProvider serviceProviderByName(@NonNull @NonNull String serviceName)
      Specified by:
      serviceProviderByName in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • services

      @NonNull public @UnmodifiableView @NonNull Collection<eu.cloudnetservice.driver.service.ServiceInfoSnapshot> services()
      Specified by:
      services in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • runningServices

      @NonNull public @UnmodifiableView @NonNull Collection<eu.cloudnetservice.driver.service.ServiceInfoSnapshot> runningServices()
      Specified by:
      runningServices in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • servicesByTask

      @NonNull public @UnmodifiableView @NonNull Collection<eu.cloudnetservice.driver.service.ServiceInfoSnapshot> servicesByTask(@NonNull @NonNull String taskName)
      Specified by:
      servicesByTask in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • servicesByEnvironment

      @NonNull public @UnmodifiableView @NonNull Collection<eu.cloudnetservice.driver.service.ServiceInfoSnapshot> servicesByEnvironment(@NonNull @NonNull String environment)
      Specified by:
      servicesByEnvironment in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • servicesByGroup

      @NonNull public @UnmodifiableView @NonNull Collection<eu.cloudnetservice.driver.service.ServiceInfoSnapshot> servicesByGroup(@NonNull @NonNull String group)
      Specified by:
      servicesByGroup in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • serviceCount

      public int serviceCount()
      Specified by:
      serviceCount in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • serviceCountByGroup

      public int serviceCountByGroup(@NonNull @NonNull String group)
      Specified by:
      serviceCountByGroup in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • serviceCountByTask

      public int serviceCountByTask(@NonNull @NonNull String taskName)
      Specified by:
      serviceCountByTask in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • serviceByName

      @Nullable public @Nullable eu.cloudnetservice.driver.service.ServiceInfoSnapshot serviceByName(@NonNull @NonNull String name)
      Specified by:
      serviceByName in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • service

      @Nullable public @Nullable eu.cloudnetservice.driver.service.ServiceInfoSnapshot service(@NonNull @NonNull UUID uniqueId)
      Specified by:
      service in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • servicesAsync

      @NonNull public @NonNull CompletableFuture<Collection<eu.cloudnetservice.driver.service.ServiceInfoSnapshot>> servicesAsync()
      Specified by:
      servicesAsync in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • runningServicesAsync

      @NonNull public @NonNull CompletableFuture<Collection<eu.cloudnetservice.driver.service.ServiceInfoSnapshot>> runningServicesAsync()
      Specified by:
      runningServicesAsync in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • servicesByTaskAsync

      @NonNull public @NonNull CompletableFuture<Collection<eu.cloudnetservice.driver.service.ServiceInfoSnapshot>> servicesByTaskAsync(@NonNull @NonNull String taskName)
      Specified by:
      servicesByTaskAsync in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • servicesByEnvironmentAsync

      @NonNull public @NonNull CompletableFuture<Collection<eu.cloudnetservice.driver.service.ServiceInfoSnapshot>> servicesByEnvironmentAsync(@NonNull @NonNull String environment)
      Specified by:
      servicesByEnvironmentAsync in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • servicesByGroupAsync

      @NonNull public @NonNull CompletableFuture<Collection<eu.cloudnetservice.driver.service.ServiceInfoSnapshot>> servicesByGroupAsync(@NonNull @NonNull String group)
      Specified by:
      servicesByGroupAsync in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • serviceCountAsync

      @NonNull public @NonNull CompletableFuture<Integer> serviceCountAsync()
      Specified by:
      serviceCountAsync in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • serviceCountByGroupAsync

      @NonNull public @NonNull CompletableFuture<Integer> serviceCountByGroupAsync(@NonNull @NonNull String group)
      Specified by:
      serviceCountByGroupAsync in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • serviceCountByTaskAsync

      @NonNull public @NonNull CompletableFuture<Integer> serviceCountByTaskAsync(@NonNull @NonNull String taskName)
      Specified by:
      serviceCountByTaskAsync in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • serviceByNameAsync

      @NonNull public @NonNull CompletableFuture<eu.cloudnetservice.driver.service.ServiceInfoSnapshot> serviceByNameAsync(@NonNull @NonNull String name)
      Specified by:
      serviceByNameAsync in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • serviceAsync

      @NonNull public @NonNull CompletableFuture<eu.cloudnetservice.driver.service.ServiceInfoSnapshot> serviceAsync(@NonNull @NonNull UUID uniqueId)
      Specified by:
      serviceAsync in interface eu.cloudnetservice.driver.provider.CloudServiceProvider
    • cloudServiceFactories

      @NonNull public @UnmodifiableView @NonNull Map<String, eu.cloudnetservice.node.service.LocalCloudServiceFactory> cloudServiceFactories()
      Specified by:
      cloudServiceFactories in interface eu.cloudnetservice.node.service.CloudServiceManager
    • cloudServiceFactory

      @Nullable public @Nullable eu.cloudnetservice.node.service.LocalCloudServiceFactory cloudServiceFactory(@NonNull @NonNull String runtime)
      Specified by:
      cloudServiceFactory in interface eu.cloudnetservice.node.service.CloudServiceManager
    • addCloudServiceFactory

      public void addCloudServiceFactory(@NonNull @NonNull String runtime, @NonNull @NonNull eu.cloudnetservice.node.service.LocalCloudServiceFactory factory)
      Specified by:
      addCloudServiceFactory in interface eu.cloudnetservice.node.service.CloudServiceManager
    • addCloudServiceFactory

      public void addCloudServiceFactory(@NonNull @NonNull String runtime, @NonNull @NonNull Class<? extends eu.cloudnetservice.node.service.LocalCloudServiceFactory> factory)
      Specified by:
      addCloudServiceFactory in interface eu.cloudnetservice.node.service.CloudServiceManager
    • removeCloudServiceFactory

      public void removeCloudServiceFactory(@NonNull @NonNull String runtime)
      Specified by:
      removeCloudServiceFactory in interface eu.cloudnetservice.node.service.CloudServiceManager
    • servicePreparers

      @NonNull public @NonNull Collection<eu.cloudnetservice.node.service.ServiceConfigurationPreparer> servicePreparers()
      Specified by:
      servicePreparers in interface eu.cloudnetservice.node.service.CloudServiceManager
    • servicePreparer

      @NonNull public @NonNull eu.cloudnetservice.node.service.ServiceConfigurationPreparer servicePreparer(@NonNull @NonNull eu.cloudnetservice.driver.service.ServiceEnvironmentType type)
      Specified by:
      servicePreparer in interface eu.cloudnetservice.node.service.CloudServiceManager
    • addServicePreparer

      public void addServicePreparer(@NonNull @NonNull eu.cloudnetservice.driver.service.ServiceEnvironmentType type, @NonNull @NonNull Class<? extends eu.cloudnetservice.node.service.ServiceConfigurationPreparer> preparer)
      Specified by:
      addServicePreparer in interface eu.cloudnetservice.node.service.CloudServiceManager
    • addServicePreparer

      public void addServicePreparer(@NonNull @NonNull eu.cloudnetservice.driver.service.ServiceEnvironmentType type, @NonNull @NonNull eu.cloudnetservice.node.service.ServiceConfigurationPreparer preparer)
      Specified by:
      addServicePreparer in interface eu.cloudnetservice.node.service.CloudServiceManager
    • removeServicePreparer

      public void removeServicePreparer(@NonNull @NonNull eu.cloudnetservice.driver.service.ServiceEnvironmentType type)
      Specified by:
      removeServicePreparer in interface eu.cloudnetservice.node.service.CloudServiceManager
    • tempDirectory

      @NonNull public @NonNull Path tempDirectory()
      Specified by:
      tempDirectory in interface eu.cloudnetservice.node.service.CloudServiceManager
    • persistentServicesDirectory

      @NonNull public @NonNull Path persistentServicesDirectory()
      Specified by:
      persistentServicesDirectory in interface eu.cloudnetservice.node.service.CloudServiceManager
    • startAllCloudServices

      public void startAllCloudServices()
      Specified by:
      startAllCloudServices in interface eu.cloudnetservice.node.service.CloudServiceManager
    • stopAllCloudServices

      public void stopAllCloudServices()
      Specified by:
      stopAllCloudServices in interface eu.cloudnetservice.node.service.CloudServiceManager
    • deleteAllCloudServices

      public void deleteAllCloudServices()
      Specified by:
      deleteAllCloudServices in interface eu.cloudnetservice.node.service.CloudServiceManager
    • localCloudServices

      @NonNull public @NonNull @UnmodifiableView Collection<eu.cloudnetservice.node.service.CloudService> localCloudServices()
      Specified by:
      localCloudServices in interface eu.cloudnetservice.node.service.CloudServiceManager
    • localCloudService

      @Nullable public @Nullable eu.cloudnetservice.node.service.CloudService localCloudService(@NonNull @NonNull String name)
      Specified by:
      localCloudService in interface eu.cloudnetservice.node.service.CloudServiceManager
    • localCloudService

      @Nullable public @Nullable eu.cloudnetservice.node.service.CloudService localCloudService(@NonNull @NonNull UUID uniqueId)
      Specified by:
      localCloudService in interface eu.cloudnetservice.node.service.CloudServiceManager
    • localCloudService

      @Nullable public @Nullable eu.cloudnetservice.node.service.CloudService localCloudService(@NonNull @NonNull eu.cloudnetservice.driver.service.ServiceInfoSnapshot snapshot)
      Specified by:
      localCloudService in interface eu.cloudnetservice.node.service.CloudServiceManager
    • defaultJvmOptions

      @NonNull public @NonNull @Unmodifiable Collection<String> defaultJvmOptions()
      Specified by:
      defaultJvmOptions in interface eu.cloudnetservice.node.service.CloudServiceManager
    • currentUsedHeapMemory

      public int currentUsedHeapMemory()
      Specified by:
      currentUsedHeapMemory in interface eu.cloudnetservice.node.service.CloudServiceManager
    • currentReservedMemory

      public int currentReservedMemory()
      Specified by:
      currentReservedMemory in interface eu.cloudnetservice.node.service.CloudServiceManager
    • selectNodeForService

      @Nullable public @Nullable eu.cloudnetservice.node.cluster.NodeServer selectNodeForService(@NonNull @NonNull eu.cloudnetservice.driver.service.ServiceConfiguration configuration)
      Specified by:
      selectNodeForService in interface eu.cloudnetservice.node.service.CloudServiceManager
    • registerLocalService

      public void registerLocalService(@NonNull @NonNull InternalCloudService service)
      Specified by:
      registerLocalService in interface InternalCloudServiceManager
    • unregisterLocalService

      public void unregisterLocalService(@NonNull @NonNull eu.cloudnetservice.node.service.CloudService service)
      Specified by:
      unregisterLocalService in interface InternalCloudServiceManager
    • registerUnacceptedService

      public void registerUnacceptedService(@NonNull @NonNull InternalCloudService service)
      Specified by:
      registerUnacceptedService in interface InternalCloudServiceManager
    • takeUnacceptedService

      @Nullable public @Nullable InternalCloudService takeUnacceptedService(@NonNull @NonNull UUID serviceUniqueId)
      Specified by:
      takeUnacceptedService in interface InternalCloudServiceManager
    • forceRemoveRegisteredService

      public void forceRemoveRegisteredService(@NonNull @NonNull UUID uniqueId)
      Specified by:
      forceRemoveRegisteredService in interface InternalCloudServiceManager
    • registerService

      @Nullable public @Nullable eu.cloudnetservice.driver.provider.SpecificCloudServiceProvider registerService(@NonNull @NonNull eu.cloudnetservice.driver.service.ServiceInfoSnapshot snapshot, @NonNull @NonNull eu.cloudnetservice.driver.network.NetworkChannel source)
      Specified by:
      registerService in interface InternalCloudServiceManager
    • handleServiceUpdate

      public void handleServiceUpdate(@NonNull @NonNull eu.cloudnetservice.driver.service.ServiceInfoSnapshot snapshot, @Nullable @Nullable eu.cloudnetservice.driver.network.NetworkChannel source)
      Specified by:
      handleServiceUpdate in interface InternalCloudServiceManager
    • createLocalCloudService

      @NonNull public @NonNull InternalCloudService createLocalCloudService(@NonNull @NonNull eu.cloudnetservice.driver.service.ServiceConfiguration configuration)
      Specified by:
      createLocalCloudService in interface InternalCloudServiceManager
    • selectOrCreateService

      @NonNull public @NonNull eu.cloudnetservice.driver.provider.SpecificCloudServiceProvider selectOrCreateService(@NonNull @NonNull eu.cloudnetservice.driver.service.ServiceTask task)
      Specified by:
      selectOrCreateService in interface InternalCloudServiceManager
    • calculateReservedMemoryPercentage

      protected int calculateReservedMemoryPercentage(@NonNull @NonNull eu.cloudnetservice.node.cluster.NodeServer server)