@Override protected String getMessage() { return format("Merging Yum metadata in repository '%s'", groupRepository.getId()); }
@Override public void markDirty() { try { lock.writeLock().lock(); yumRepository = null; log.debug("Marked {} as dirty.", repository.getId()); } finally { lock.writeLock().unlock(); } }
public List<String> getGroupsOfRepository( final String repositoryId ) { final ArrayList<String> result = new ArrayList<String>(); try { final Repository repository = getRepository( repositoryId ); for ( GroupRepository group : getGroupsOfRepository( repository ) ) { result.add( group.getId() ); } } catch ( NoSuchRepositoryException e ) { // ignore, just return empty collection } return result; }
private List<UpdateSiteProxyRepository> updateSites(GroupRepository group) { List<UpdateSiteProxyRepository> us = Lists.newArrayList(); for (Repository repo : group.getMemberRepositories()) { if (repo.getRepositoryKind().isFacetAvailable(UpdateSiteProxyRepository.class)) { us.add(repo.adaptToFacet(UpdateSiteProxyRepository.class)); } } if (us.isEmpty()) { getLogger().warn( "Group '" + group.getId() + "' has no UpdateSite repositories members. " + ROLE_HINT + " will be silent skipped!"); } return us; }
log.debug("Merging repository group '{}' out of {}", groupRepository.getId(), memberReposBaseDirs); commandLineExecutor.exec(buildCommand(repoBaseDir, memberReposBaseDirs)); MetadataProcessor.processMergedMetadata(groupRepository, memberReposBaseDirs); log.debug("Group repository '{}' merged", groupRepository.getId()); log.debug( "Copying Yum metadata from {} to group repository {}", memberReposBaseDirs.get(0), groupRepository.getId() ); copyDirectory(new File(memberReposBaseDirs.get(0), PATH_OF_REPODATA), groupRepodata); return new YumRepositoryImpl(repoBaseDir, groupRepository.getId(), null);
@AllowConcurrentEvents @Subscribe public void on(final RepositoryGroupMembersChangedEvent event) { if (yumRegistryProvider.get().isRegistered(event.getGroupRepository().getId()) && (anyOfRepositoriesHasYumRepository(event.getAddedRepositoryIds()) || anyOfRepositoriesHasYumRepository(event.getRemovedRepositoryIds()) || anyOfRepositoriesHasYumRepository(event.getReorderedRepositoryIds()))) { Yum yum = yumRegistryProvider.get().get(event.getGroupRepository().getId()); if (yum instanceof YumGroup) { ((YumGroup) yum).markDirty(); } } }
protected NotFoundReasoning buildNotFoundReasoning( final Repository repository, final Throwable t ) { final NotFoundReasoning reasoning = new NotFoundReasoning(); reasoning.setReasonMessage( t.getMessage() ); reasoning.setThrowableType( t.getClass().getName() ); if ( repository != null ) { reasoning.setRepositoryId( repository.getId() ); } if ( t instanceof GroupItemNotFoundException ) { final GroupItemNotFoundException ginf = (GroupItemNotFoundException) t; reasoning.setRepositoryId( ginf.getRepository().getId() ); for ( Map.Entry<Repository, Throwable> r : ginf.getMemberReasons().entrySet() ) { reasoning.addNotFoundReasoning( buildNotFoundReasoning( r.getKey(), r.getValue() ) ); } } return reasoning; }
private void regenerateMetadataForGroups() { if (StringUtils.isBlank(getVersion())) { try { final Repository repository = repositoryRegistry.getRepository(getRepositoryId()); for (GroupRepository groupRepository : repositoryRegistry.getGroupsOfRepository(repository)) { Yum yum = yumRegistry.get(groupRepository.getId()); if (yum != null && yum instanceof YumGroup) { ((YumGroup) yum).markDirty(); } } } catch (NoSuchRepositoryException e) { logger.warn( "Repository '{}' does not exist anymore. Backing out from triggering group merge for it.", getRepositoryId() ); } } }
final String requestPath = request.getRequestPath(); if (Action.read.equals(action) && requestPath.endsWith(PATH_OF_REPOMD_XML) && groupRepository != null) { Yum yum = yumRegistry.get(groupRepository.getId()); if (yum != null && yum instanceof YumGroup) { for (Repository member : groupRepository.getMemberRepositories()) { if (member.getRepositoryKind().isFacetAvailable(ProxyRepository.class)) { try { log.debug("Fetching {}:{} member of {}", member.getId(), PATH_OF_REPOMD_XML, groupRepository.getId()); member.retrieveItem(new ResourceStoreRequest(PATH_OF_REPOMD_XML)); log.debug( "Could not retrieve {} from {}, member of yum enabled group {}. Ignoring.", PATH_OF_REPOMD_XML, member.getId(), groupRepository.getId(), e );
log.trace("Looking up latest Yum metadata in {} member of {}", memberRepository.getId(), groupRepository.getId()); StorageItem repomdItem = null; try {
protected void createOrUpdateRepositoryGroup(RepositoryGroupResource model, boolean create) throws ResourceException { try { if (create) { createRepositoryGroup(model); } else { updateRepositoryGroup(model); } } catch (NoSuchRepositoryException e) { //Both update and create catch and wrap a NoSuchRepositoryException when a member does not exist. Update however //will throw the exception without wrapping if the group itself does not exist. When the group does not exist //then there is nothing to rollback so we log, wrap and throw the exception here. throw logAndWrapNoSuchGroupRepositoryException(model, e); } catch (Exception e) { GroupRepository group = getGroupRepository(model); //Rollback any in memory changes for any failure while updating / creating the group. if (group instanceof AbstractGroupRepository && ((AbstractGroupRepository) group).rollbackChanges()) { getLogger().warn("Changes to group {} rolled back because an exception was encountered", group.getId()); } throw e; } }
private void reindexRepositoryGroup( GroupRepository groupRepo, boolean fullReindex ) throws IOException, NoSuchRepositoryException { if ( groupRepo.isIndexable() ) { if ( fullReindex ) { resetGroupIndex( groupRepo.getId(), true ); } List<Repository> group = groupRepo.getMemberRepositories(); for ( Repository repository : group ) { if ( repository.getRepositoryKind().isFacetAvailable( GroupRepository.class ) ) { reindexRepositoryGroup( repository.adaptToFacet( GroupRepository.class ), fullReindex ); mergeRepositoryGroupIndexWithMember( repository ); } else { reindexRepository( repository, fullReindex ); } } publishRepositoryGroupIndex( groupRepo.getId() ); } }
List<GroupRepository> groups = repositoryRegistryProvider.get().getGroupsOfRepository(repository); for (GroupRepository group : groups) { Yum yum = yumRegistryProvider.get().get(group.getId()); if (yum != null && yum instanceof YumGroup) { ((YumGroup) yum).markDirty();
resource.addGroup(group.getId());
resource.setId(group.getId());
resource.addGroup( group.getId() );
resource.setId( group.getId() );