public static ServiceName applicationEnvironmentProperties(String appId) { return application(appId).append("env-props"); }
public InternalApplicationExtension extend(String extensionId, String resourceId, ObjectNode configuration, boolean boottime) throws Exception { ServiceTarget target = this.target.subTarget(); StabilityMonitor monitor = new StabilityMonitor(); target.addMonitor(monitor); ServiceName resourceServiceName = Services.applicationExtension(this.id, resourceId); ApplicationExtensionService appExt = new ApplicationExtensionService(extensionId, resourceId, configuration, boottime); ServiceController<InternalApplicationExtension> controller = target.addService(resourceServiceName, appExt) .addDependency(Services.extension(extensionId), Extension.class, appExt.extensionInjector()) .addDependency(Services.application(this.id), InternalApplication.class, appExt.applicationInjector()) .addDependency(Services.SERVICE_REGISTRY, ServiceRegistry.class, appExt.serviceRegistryInjector()) .install(); monitor.awaitStability(); InternalApplicationExtension intAppExt = controller.awaitValue(); if (intAppExt.exception() != null) { intAppExt.remove(); log.error(intAppExt.exception()); throw intAppExt.exception(); } target.removeMonitor(monitor); return intAppExt; }
if (!this.app.versioned() && null != context.getController().getServiceContainer().getService(Services.extension("git"))) { GitResourceInstallService gitInstaller = new GitResourceInstallService(); target.addService(Services.application(this.app.id()).append("git-install"), gitInstaller) .addDependency(configManagerName) .addInjectionValue(gitInstaller.applicationInjector(), this) ServiceBuilder<Void> resourceStartup = target.addService(Services.application(this.id).append("resources"), resources) .addInjectionValue(resources.applicationInjector(), this); resourceStartup.addDependency(Services.application(this.app.id()).append("git-install"));
public static ServiceName applicationConfigurationFile(String appId) { return application(appId).append("config-files"); }
public void removeApplication(String id) { ServiceController<InternalApplication> controller = this.applications.remove(id); ApplicationRemovalService removalService = new ApplicationRemovalService(controller); this.target.addService(Services.application(id).append("remove"), removalService) .addDependency(Services.VERTX, Vertx.class, removalService.vertxInjector()) .install(); }
@Override public void extend(SystemExtensionContext context) throws Exception { ServiceTarget target = context.target(); ZeroResourcesService appResources = new ZeroResourcesService(); target.addService(ZeroServices.BOOTSTRAP.append("resources"), appResources) .addDependency(Services.application(APPLICATION_ID), InternalApplication.class, appResources.applicationInjector()) .install(); // DO NOT mountPrivate, since this isn't exposed as a valid extension. }
protected void createGitCommitService(StartContext context, Set<ServiceName> dependencies) { if (this.gitCommit != null) { ServiceTarget target = context.getChildTarget(); ApplicationGitInstallCommitService gitService = new ApplicationGitInstallCommitService(this.gitCommit, this.installDir); ServiceBuilder<Void> builder = target.addService(Services.application(this.applicationInjector.getValue().id()).append("git-commit"), gitService) .addDependency(Services.application(this.applicationInjector.getValue().id())); if (dependencies != null && dependencies.size() > 0) { dependencies.forEach(each -> builder.addDependency(each)); } builder.install(); } }
public InternalApplication createApplication(String id, String name, File directory, Consumer<File> gitCommit) throws InterruptedException { ApplicationService app = new ApplicationService(id, name, directory, gitCommit); ServiceController<InternalApplication> controller = this.target.addService(Services.application(id), app) .addDependency(Services.APPLICATIONS_DIR, File.class, app.applicationsDirectoryInjector()) .addDependency(Services.SECURITY_DIRECT_ACCESS_CLIENT, DirectAccessClient.class, app.directAccessClientInjector()) .addDependency(Services.SECURITY_CLIENT, SecurityClient.class, app.securityClientInjector()) .install(); this.applications.put(id, controller); return controller.awaitValue(); }