Hi All,
Can I please know how P2 ProvisioningAgent updates the configuration files
after a feature installation?
At the moment in my new multi-profile target enviorment with a shared
p2-data area, after a feature installation only the P2-Profile is updated
with the newly installed features.
I also see that the new feature and plugins are properly extracted to
${install.area}/features and {install.area}/plugins directories but the
relevant configuraton files
(configuration/org.eclipse.equinox.simpleconfigurator/bundles.info and
configuration/org.eclipse.update/platform.xml) are not updated with the new
features and pluging entries.
Are these files located by the P2-Agent relative to the URI given when we
create the provisioningAgent? (provisioningAgent =
provisioningAgentProvider.createAgent(agentURI);)
What could be the possible reasons for the provisioning agent properly
updating the Profile and not the configuration files after a feature
installation?
Thanks,
Dileepa
How does the ProvisioningAgent update these files during a feature
installation?
On Sun, Feb 17, 2013 at 2:09 AM, Dileepa Jayakody <[email protected]> wrote:
> 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
>
--
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