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

Reply via email to