use of io.fabric8.agent.download.DownloadManager in project fabric8 by jboss-fuse.
the class AgentUtils method downloadLocations.
public static Map<String, File> downloadLocations(DownloadManager manager, Collection<String> uris, final boolean storeInDefaultKarafRepository) throws MultiException, InterruptedException, MalformedURLException {
final Map<String, File> files = new HashMap<>();
final Downloader downloader = manager.createDownloader();
final File targetLocation = storeInDefaultKarafRepository ? getDefaultKarafRepository() : null;
for (String uri : uris) {
downloader.download(uri, new DownloadCallback() {
@Override
public void downloaded(StreamProvider provider) throws Exception {
String uri = provider.getUrl();
File file = provider.getFile();
synchronized (files) {
files.put(uri, file);
if (storeInDefaultKarafRepository) {
storeInDefaultKarafRepository(targetLocation, file, uri);
}
}
}
});
}
downloader.await();
return files;
}
use of io.fabric8.agent.download.DownloadManager in project fabric8 by jboss-fuse.
the class ProfileWatcherImpl method findProfileArifacts.
// For each profile and version return the map of bundle locations to parsers
private Map<ProfileVersionKey, Map<String, Parser>> findProfileArifacts() throws Exception {
Map<ProfileVersionKey, Map<String, Parser>> profileArtifacts = new HashMap<ProfileVersionKey, Map<String, Parser>>();
ProfileService profileService = fabricService.get().adapt(ProfileService.class);
DownloadManager downloadManager = DownloadManagers.createDownloadManager(fabricService.get(), executorService);
Container[] containers = fabricService.get().getContainers();
for (Container container : containers) {
Profile[] profiles = container.getProfiles();
boolean javaOrProcessContainer = ChildContainers.isJavaOrProcessContainer(fabricService.get(), container);
// TODO allow filter on a profile here?
for (Profile profile : profiles) {
Profile overlay = profileService.getOverlayProfile(profile);
ProfileVersionKey key = new ProfileVersionKey(profile);
// if (!profileArtifacts.containsKey(key)) {
Map<String, Parser> artifacts = null;
if (javaOrProcessContainer) {
List<Profile> singletonList = Collections.singletonList(profile);
artifacts = JavaContainers.getJavaContainerArtifacts(fabricService.get(), singletonList, executorService);
} else {
artifacts = AgentUtils.getProfileArtifacts(fabricService.get(), downloadManager, overlay);
}
if (artifacts != null) {
if (LOG.isDebugEnabled()) {
LOG.debug("Profile " + profile.getId() + " maps to artefacts: " + artifacts.keySet());
}
profileArtifacts.put(key, artifacts);
}
// }
}
}
return profileArtifacts;
}
use of io.fabric8.agent.download.DownloadManager in project fabric8 by jboss-fuse.
the class DownloadManagers method createDownloadManager.
/**
* Creates a DownloadManager
*/
public static DownloadManager createDownloadManager(FabricService fabricService, Profile profile, ScheduledExecutorService executorService) {
Map<String, String> configuration = profile.getConfiguration(Constants.AGENT_PID);
if (configuration == null) {
configuration = new HashMap<>();
}
Dictionary<String, String> properties = mapToDictionary(configuration);
Mirror mirror = AgentUtils.getMavenProxy(fabricService);
MavenResolver resolver = MavenResolvers.createMavenResolver(mirror, properties, "org.ops4j.pax.url.mvn");
return createDownloadManager(resolver, executorService);
}
use of io.fabric8.agent.download.DownloadManager in project fabric8 by jboss-fuse.
the class DownloadManagers method createDownloadManager.
/**
* Creates a download manager using the current container's maven configuration
*/
public static DownloadManager createDownloadManager(FabricService fabricService, ScheduledExecutorService executorService) {
Profile overlayProfile = fabricService.getCurrentContainer().getOverlayProfile();
Profile effectiveProfile = Profiles.getEffectiveProfile(fabricService, overlayProfile);
return createDownloadManager(fabricService, effectiveProfile, executorService);
}
use of io.fabric8.agent.download.DownloadManager in project fabric8 by jboss-fuse.
the class ProfileMetadata method findMetadataForProfile.
protected void findMetadataForProfile(String versionId, String profileId, MetadataHandler handler) throws Exception {
FabricService service = fabricService.get();
Objects.notNull(service, "FabricService");
ProfileService profileService = service.adapt(ProfileService.class);
Objects.notNull(profileService, "ProfileService");
DownloadManager downloadManager = DownloadManagers.createDownloadManager(service, executorService);
Objects.notNull(downloadManager, "DownloadManager");
Profile immediateProfile = profileService.getProfile(versionId, profileId);
Objects.notNull(immediateProfile, "Profile for versionId: " + versionId + ", profileId: " + profileId);
Profile profile = profileService.getOverlayProfile(immediateProfile);
Set<String> pids = new HashSet<>();
Map<String, File> fileMap = AgentUtils.downloadProfileArtifacts(service, downloadManager, profile);
Set<Map.Entry<String, File>> entries = fileMap.entrySet();
for (Map.Entry<String, File> entry : entries) {
String uri = entry.getKey();
File file = entry.getValue();
if (!file.exists() || !file.isFile()) {
LOG.warn("File " + file + " is not an existing file for " + uri + ". Ignoring");
continue;
}
addMetaTypeInformation(handler, uri, file);
pids.add(uri);
}
// lets check if the MetaType folder exists
if (metaTypeFolder != null && metaTypeFolder.exists() && metaTypeFolder.isDirectory()) {
Set<String> configurationFileNames = profile.getConfigurationFileNames();
for (String configName : configurationFileNames) {
if (configName.endsWith(PROPERTIES_SUFFIX) && configName.indexOf('/') < 0) {
String pid = configName.substring(0, configName.length() - PROPERTIES_SUFFIX.length());
addMetaTypeInformation(pids, handler, pid);
String factoryPid = getFactoryPid(pid);
addMetaTypeInformation(pids, handler, factoryPid);
}
}
}
}
Aggregations