@Override public String getResourceName() { return getName(); }
Website loginWebsite = new Website("infra_login"); FinalStateManagedResource loginWebsiteFinalState = new FinalStateManagedResource(); loginWebsiteFinalState.setManagedResource(loginWebsite); context.addManagedResources(loginWebsiteFinalState); loginWebsite.setApplicationEndpoint(DockerContainerEndpoints.HTTP_TCP); loginWebsite.getDomainNames().add(infraConfig.getLoginDomainName()); loginWebsite.setHttps(loginIsHttps); Website uiWebsite = new Website("infra_ui"); FinalStateManagedResource uiWebsiteFinalState = new FinalStateManagedResource(); uiWebsiteFinalState.setManagedResource(uiWebsite); context.addManagedResources(uiWebsiteFinalState); uiWebsite.setApplicationEndpoint(DockerContainerEndpoints.HTTP_TCP); uiWebsite.getDomainNames().add(infraConfig.getUiDomainName()); uiWebsite.setHttps(uiIsHttps);
private FinalStateManagedResource createWebsite(String protocol, FinalStateManagedResourcesUpdateEventHandlerContext<UrlRedirection> context, IPResourceService resourceService, String domainName, List<Machine> machines) { Website website = new Website(protocol + " Redirection of " + domainName); FinalStateManagedResource websiteFinalResource = new FinalStateManagedResource(); websiteFinalResource.setManagedResource(website); context.addManagedResources(websiteFinalResource); website.getDomainNames().add(domainName); website.setHttps("HTTPS".equals(protocol)); websiteFinalResource.addManagedLinksToType(LinkTypeConstants.POINTS_TO, LinkTypeConstants.INSTALLED_ON, LinkTypeConstants.USES); machines.forEach(machine -> { // Machine websiteFinalResource.addLinkTo(LinkTypeConstants.INSTALLED_ON, machine); // Applications String applicationName = "infra_url_redirection_" + protocol.toLowerCase() + "-" + machine.getName().replaceAll("\\.", "_"); logger.info("Getting application {}", applicationName); Optional<Application> application = resourceService.resourceFind(resourceService.createResourceQuery(Application.class) // .propertyEquals(Application.PROPERTY_NAME, applicationName) // ); if (!application.isPresent()) { logger.info("Application {} does not exist for now. Skipping", applicationName); return; } websiteFinalResource.addLinkTo(LinkTypeConstants.POINTS_TO, application.get()); }); return websiteFinalResource; }
Website website = new Website("d1.example.com"); website.getDomainNames().add("d1.example.com"); changes.resourceAdd(website); getInternalServicesContext().getInternalChangeService().changesExecute(changes); website.getDomainNames().clear(); website.setName("d2.example.com"); website.getDomainNames().add("d2.example.com"); changes.resourceUpdate(website); getInternalServicesContext().getInternalChangeService().changesExecute(changes); website.setHttps(true); changes.linkAdd(website, LinkTypeConstants.USES, wc1); changes.resourceUpdate(website.getInternalId(), website); getInternalServicesContext().getInternalChangeService().changesExecute(changes); changes.linkDelete(website, LinkTypeConstants.USES, wc1); website.setHttps(false); changes.resourceUpdate(website.getInternalId(), website); getInternalServicesContext().getInternalChangeService().changesExecute(changes); website.setHttps(true); changes.linkAdd(website, LinkTypeConstants.USES, wc1); changes.resourceUpdate(website.getInternalId(), website); getInternalServicesContext().getInternalChangeService().changesExecute(changes); website.getDomainNames().clear(); website.setName("d3.example.com");
for (Machine remoteMachine : applicationMachines.getB()) { int localPort = nextLocalPort.getAndIncrement(); endpoints.add(new HaProxyConfigEndpoint("127.0.0.1", localPort).setSsl(DockerContainerEndpoints.HTTPS_TCP.equals(website.getApplicationEndpoint()))); applicationDefinition.addPortRedirect(localPort, remoteMachine.getName(), remoteApplicationName, website.getApplicationEndpoint()); website.getDomainNames().forEach(hostname -> { HaProxyConfigPortHttpService config = new HaProxyConfigPortHttpService(); for (HaProxyConfigEndpoint endpoint : endpoints) { for (String installedLocallyApplicationName : installedLocallyApplicationNames) { int localPort = nextLocalPort.getAndIncrement(); endpoints.add(new HaProxyConfigEndpoint("127.0.0.1", localPort).setSsl(DockerContainerEndpoints.HTTPS_TCP.equals(website.getApplicationEndpoint()))); applicationDefinition.addPortRedirect(localPort, IPApplicationDefinitionPortRedirect.LOCAL_MACHINE, installedLocallyApplicationName, website.getApplicationEndpoint()); configHttp.addService(website.getDomainNames(), endpoints.toArray(new HaProxyConfigEndpoint[endpoints.size()]));
if (website.isHttps()) { certContent.append("\n"); for (String domainName : website.getDomainNames()) { logger.debug("[{}] Installing certificate for {}", machineName, domainName); assetsBundle.addAssetContent("/certs/" + domainName + ".pem", certContent.toString());
@Override protected void commonHandlerExecute(CommonServicesContext services, ChangesContext changes, CommonMethodUpdateEventHandlerContext<Website> context) { context.getManagedResourceTypes().add(DnsPointer.class); context.getManagedResourceTypes().add(WebsiteCertificate.class); IPResourceService resourceService = services.getResourceService(); Website resource = context.getResource(); // Create and manage : DnsPointer (attach Machines from the Application) List<Machine> installOnMachines = resourceService.linkFindAllByFromResourceAndLinkTypeAndToResourceClass(resource, LinkTypeConstants.INSTALLED_ON, Machine.class); for (String domainName : resource.getDomainNames()) { DnsPointer dnsPointer = new DnsPointer(domainName); dnsPointer = retrieveOrCreateResource(resourceService, changes, dnsPointer, DnsPointer.class); updateLinksOnResource(services, changes, dnsPointer, LinkTypeConstants.POINTS_TO, Machine.class, installOnMachines.stream().collect(Collectors.toList())); context.getManagedResources().add(dnsPointer); } }
Website loginWebsite = new Website("infra_login"); FinalStateManagedResource loginWebsiteFinalState = new FinalStateManagedResource(); loginWebsiteFinalState.setManagedResource(loginWebsite); context.addManagedResources(loginWebsiteFinalState); loginWebsite.setApplicationEndpoint(DockerContainerEndpoints.HTTP_TCP); loginWebsite.getDomainNames().add(infraConfig.getLoginDomainName()); loginWebsite.setHttps(loginIsHttps); Website uiWebsite = new Website("infra_ui"); FinalStateManagedResource uiWebsiteFinalState = new FinalStateManagedResource(); uiWebsiteFinalState.setManagedResource(uiWebsite); context.addManagedResources(uiWebsiteFinalState); uiWebsite.setApplicationEndpoint(DockerContainerEndpoints.HTTP_TCP); uiWebsite.getDomainNames().add(infraConfig.getUiDomainName()); uiWebsite.setHttps(uiIsHttps);
int localPort = nextLocalPort.getAndIncrement(); endpointHostPorts.add(new Tuple2<>("127.0.0.1", localPort)); applicationDefinition.addPortRedirect(localPort, remoteMachine.getName(), remoteApplicationName, website.getApplicationEndpoint()); website.getDomainNames().forEach(hostname -> { HaProxyConfigPortHttpService config = new HaProxyConfigPortHttpService(); for (Tuple2<String, Integer> endpointHostPort : endpointHostPorts) { int localPort = nextLocalPort.getAndIncrement(); endpointHostPorts.add(new Tuple2<>("127.0.0.1", localPort)); applicationDefinition.addPortRedirect(localPort, IPApplicationDefinitionPortRedirect.LOCAL_MACHINE, installedLocallyApplicationName, website.getApplicationEndpoint()); configHttp.addService(website.getDomainNames(), endpointHostPorts.toArray(new Tuple2[endpointHostPorts.size()]));
if (website.isHttps()) { certContent.append("\n"); for (String domainName : website.getDomainNames()) { logger.debug("[{}] Installing certificate for {}", machineName, domainName); assetsBundle.addAssetContent("/certs/" + domainName + ".pem", certContent.toString());
@Override protected void commonHandlerExecute(CommonServicesContext services, ChangesContext changes, CommonMethodUpdateEventHandlerContext<Website> context) { context.getManagedResourceTypes().add(DnsPointer.class); context.getManagedResourceTypes().add(WebsiteCertificate.class); IPResourceService resourceService = services.getResourceService(); Website resource = context.getResource(); // Create and manage : DnsPointer (attach Machines from the Application) List<Machine> installOnMachines = resourceService.linkFindAllByFromResourceAndLinkTypeAndToResourceClass(resource, LinkTypeConstants.INSTALLED_ON, Machine.class); for (String domainName : resource.getDomainNames()) { DnsPointer dnsPointer = new DnsPointer(domainName); dnsPointer = retrieveOrCreateResource(resourceService, changes, dnsPointer, DnsPointer.class); updateLinksOnResource(services, changes, dnsPointer, LinkTypeConstants.POINTS_TO, Machine.class, installOnMachines.stream().collect(Collectors.toList())); context.getManagedResources().add(dnsPointer); } }
@Override public String getResourceName() { return getName(); }