Hi All,
We use a P2 ProvisioningAgent to perform provisioning operations in our
runtime. Our initial product distribution structure was similar to a
generic Eclipse installation with (dropins, plugins, features,
configuration and p2 directories).
Now we are looking at shipping multiple-profile installations in a single
distribution using a shared p2 data area along with different configuration
directories for each Profile, see the new layout at [1]. So now default the
configuration directory is changed to have separate configuration directory
per Profile.
AFAIU during the provisioning action, the P2 Agent updates the relevant
Profile and also adds the newly installed bundles to the
configuration/org.eclipse.equinox.simpleconfigurator/bundles.info *
*But with the new directory layout to support multiple-profile
installations, after performing a provisioning action, only the Profile is
updated with the newly installed IUs. The bundles.info in the relavant
configuration directory is not updated.
Is there a way to provide the osgi.configuration.area argument to the P2
Agent so that it can find the bundles.info file to update after a
provisioning action?
I have also added the code-segment here on how we are performing P2
provisioning actions using P2 API [2].
Any help/pointers on this is a life-saver!
Thanks,
Dileepa
[1] new layout;
*repository/components/*
|--ProfileA
| /configuration
| |--config.ini
| |--org.eclipse.equinox.
simpleconfigurator/bundles.info
|
|--ProfileB
| /configuration
| |--config.ini
| |--org.eclipse.equinox.simpleconfigurator/bundles.info *
**repository/components**/p2 *{shared p2 data directory for created
profiles}
|--org.eclipse.equinox.p2.engine
| |--profileRegistry
| |---ProfileA.profile
| |---ProfileB.profile
[2] The Provisioning code segment;
String P2_AGENT_LOCATION = System.getProperty("carbon.home") +
File.separator + "repository" + File.separator +"components" +
File.separator + "p2";
URI agentURI = getAgentURI(P2_AGENT_LOCATION);
provisioningAgent =
provisioningAgentProvider.createAgent(agentURI);
IPlanner planner =
(IPlanner)provisioningAgent.getService(IPlanner.SERVICE_NAME);
setPlanner(planner);
IMetadataRepositoryManager metadataRepositoryManager =
(IMetadataRepositoryManager)provisioningAgent.getService(IMetadataRepositoryManager.SERVICE_NAME);
setMetadataRepositoryManager(metadataRepositoryManager);
IArtifactRepositoryManager artifactRepositoryManager =
(IArtifactRepositoryManager)provisioningAgent.getService(IArtifactRepositoryManager.SERVICE_NAME);
setArtifactRepositoryManager(artifactRepositoryManager);
IProfileRegistry profileRegistry =
(IProfileRegistry)provisioningAgent.getService(IProfileRegistry.SERVICE_NAME);
setProfileRegistry(profileRegistry);
IEngine engine =
(IEngine)provisioningAgent.getService(IEngine.SERVICE_NAME);
setP2Engine(engine);
setProvisioningContext(new
ProvisioningContext(provisioningAgent));
provisioningAgent.registerService(IProvisioningAgent.INSTALLER_AGENT,
provisioningAgentProvider.createAgent(null));
ProvisioningContext context =
ServiceHolder.getProvisioningContext();
IEngine engine = ServiceHolder.getP2Engine();
context.setMetadataRepositories(ServiceHolder.getMetadataRepositoryManager().getKnownRepositories(IRepositoryManager.REPOSITORIES_ALL));
context.setArtifactRepositories(ServiceHolder.getArtifactRepositoryManager().getKnownRepositories(IRepositoryManager.REPOSITORIES_ALL));
IStatus status =
PlanExecutionHelper.executePlan(provisioningPlan, engine, context, new
NullProgressMonitor());
--
Dileepa Jayakody,
Software Engineer, WSO2 Inc.
Lean . Enterprise . Middleware
Mobile : +94777-857616
_______________________________________________
p2-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/p2-dev