Search in sources :

Example 1 with AvailableTopologyRepository

use of alien4cloud.repository.model.AvailableTopologyRepository in project alien4cloud by alien4cloud.

the class EditorRepositoryController method getAvailableRepositories.

/**
 * Get the available repositories regarding archive repositories and A4C repositories.
 */
@ApiOperation(value = "Get the available repositories regarding archive repositories and A4C repositories", notes = "Application role required [ APPLICATION_MANAGER | APPLICATION_DEVOPS ]")
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public RestResponse<AvailableTopologyRepositories> getAvailableRepositories(@ApiParam(value = "The topology id.", required = true) @NotBlank @PathVariable final String topologyId) {
    try {
        editionContextManager.init(topologyId);
        Topology topology = EditionContextManager.getTopology();
        List<AvailableTopologyRepository> archiveRepositories = Lists.newArrayList();
        List<AvailableTopologyRepository> alienRepositories = Lists.newArrayList();
        List<String> repositoryTypes = Lists.newArrayList();
        AvailableTopologyRepositories result = new AvailableTopologyRepositories(archiveRepositories, alienRepositories, repositoryTypes);
        Set<String> repositoriesName = Sets.newHashSet();
        Set<String> repositoriesUrl = Sets.newHashSet();
        for (NodeTemplate node : topology.getNodeTemplates().values()) {
            if (node.getArtifacts() != null && CollectionUtils.isNotEmpty(node.getArtifacts().values())) {
                for (DeploymentArtifact artifact : node.getArtifacts().values()) {
                    if (artifact.getRepositoryURL() != null && !repositoriesName.contains(artifact.getRepositoryName())) {
                        AvailableTopologyRepository atr = new AvailableTopologyRepository(artifact.getRepositoryName(), artifact.getArtifactRepository(), artifact.getRepositoryURL());
                        archiveRepositories.add(atr);
                        repositoriesName.add(artifact.getRepositoryName());
                        repositoriesUrl.add(artifact.getRepositoryURL());
                    }
                }
            }
        }
        FilteredSearchRequest searchRequest = new FilteredSearchRequest();
        searchRequest.setFrom(0);
        searchRequest.setSize(Integer.MAX_VALUE);
        FacetedSearchResult<Repository> searchResult = repositoryService.search(searchRequest);
        for (Repository repository : searchResult.getData()) {
            String url = repositoryService.getRepositoryUrl(repository);
            if (!repositoriesUrl.contains(url)) {
                // only return this repository if it's url doesn't not match existing archive repository url
                AvailableTopologyRepository atr = new AvailableTopologyRepository(repository.getName(), repository.getRepositoryType(), url);
                alienRepositories.add(atr);
            }
        }
        List<RepositoryPluginComponent> plugins = repositoryService.listPluginComponents();
        for (RepositoryPluginComponent repositoryPluginComponent : plugins) {
            repositoryTypes.add(repositoryPluginComponent.getRepositoryType());
        }
        return RestResponseBuilder.<AvailableTopologyRepositories>builder().data(result).build();
    } finally {
        ToscaContext.destroy();
    }
}
Also used : RepositoryPluginComponent(alien4cloud.repository.model.RepositoryPluginComponent) AvailableTopologyRepositories(alien4cloud.repository.model.AvailableTopologyRepositories) Topology(org.alien4cloud.tosca.model.templates.Topology) FilteredSearchRequest(alien4cloud.rest.model.FilteredSearchRequest) Repository(alien4cloud.model.repository.Repository) AvailableTopologyRepository(alien4cloud.repository.model.AvailableTopologyRepository) NodeTemplate(org.alien4cloud.tosca.model.templates.NodeTemplate) DeploymentArtifact(org.alien4cloud.tosca.model.definitions.DeploymentArtifact) AvailableTopologyRepository(alien4cloud.repository.model.AvailableTopologyRepository) ApiOperation(io.swagger.annotations.ApiOperation) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Aggregations

Repository (alien4cloud.model.repository.Repository)1 AvailableTopologyRepositories (alien4cloud.repository.model.AvailableTopologyRepositories)1 AvailableTopologyRepository (alien4cloud.repository.model.AvailableTopologyRepository)1 RepositoryPluginComponent (alien4cloud.repository.model.RepositoryPluginComponent)1 FilteredSearchRequest (alien4cloud.rest.model.FilteredSearchRequest)1 ApiOperation (io.swagger.annotations.ApiOperation)1 DeploymentArtifact (org.alien4cloud.tosca.model.definitions.DeploymentArtifact)1 NodeTemplate (org.alien4cloud.tosca.model.templates.NodeTemplate)1 Topology (org.alien4cloud.tosca.model.templates.Topology)1 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)1