discovery the p2 api (updated to indigo)
DESCRIPTION
This presentation goes over the main concepts of the p2 API and describe some of the changes / simplifications introduced in Indigo.TRANSCRIPT
![Page 1: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/1.jpg)
Discovering the p2 API
Pascal Rapicault
Sonatype, p2 Lead
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 1
![Page 2: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/2.jpg)
Who are the p2 committers?
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 2
![Page 3: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/3.jpg)
History
• 3.4 / 3.5 provisional API
• 3.6 / Helios - first official release of the API
• 3.7 / Indigo - full backward compatibility
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 3
![Page 4: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/4.jpg)
What’s new in 3.7?
• API– New features to ease p2 consumption– Simplification for RCP use case– Simpler Headless API for simple cases
• SPI– Pluggable transport
• Code– Memory consumption improvements– Inter-process locking of local repositories– …
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 4
![Page 5: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/5.jpg)
3 levels of API
• Graphical User Interface
• Headless Operations
• Core APIs + SPIs
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 5
![Page 6: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/6.jpg)
Graphical User Interface
• GUI is SWT-based and designed to be reused in RCP / Eclipse applications.
• Ease of reuse:– Feature org.eclipse.equinox.p2.rcp.feature
• The p2.ui.sdk bundle provides SDK like UI for reuse in RCP.
– Compose from the p2.ui bundle• Add extensions to hook where you want
org.eclipse.equinox.p2.ui
org.eclipse.equinox.p2.ui.sdk
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 6
![Page 7: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/7.jpg)
Graphical User Interface
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 7
![Page 8: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/8.jpg)
Reusing individual UI elements
• Most the pages / wizards can be reused
– Installed dialog
– Repository management
– License manager
– Install/Update/Uninstall wizard
org.eclipse.equinox.p2.ui
o.e.e.p2.ui.InstalledSoftwarePage
o.e.e.p2.ui.RepositoryManipulationPage
o.e.e.p2.ui.AcceptLicensesWizardPage
o.e.e.p2.ui.ProvisioningUtil#open*Wizard
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 8
![Page 9: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/9.jpg)
Tweaking the existing UI
• The Policy class
– Show / hide repository selection
– Drill down
– Show categories
– Content of the restart dialog
– …
org.eclipse.equinox.p2.ui
org.eclipse.equinox.p2.ui.Policy
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 9
![Page 10: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/10.jpg)
Tweaking the existing UI
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 10
![Page 11: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/11.jpg)
Extension / discovery UI
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 11
- Simpler for the end user- Nice icons
*Not API*
org.eclipse.equinox.p2.discovery
o.e.e.i.p2.disc….RepositoryDiscoveryStrategy
![Page 12: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/12.jpg)
More on UI reuse
• See examples on the p2 wiki
– http://wiki.eclipse.org/Equinox/p2/Examples
• Talk on the p2 UI
– http://www.eclipsecon.org/2010/sessions/?page=sessions&id=1205
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 12
![Page 13: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/13.jpg)
3 levels of API
• Graphical User Interface
• Headless Operations
• Core APIs + SPIs
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 13
![Page 14: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/14.jpg)
Minimal headless p2
• A “relatively” minimal headless p2 is available:
– org.eclipse.equinox.p2.core.feature
– Provide enough to install / update / uninstall
• A smaller subset can be created, but it is too specific (e.g. w/o ECF, w/o http client, w/o operations, etc.)
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 14
![Page 15: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/15.jpg)
Headless operations
• High level operations to install / update / uninstall
• Focused on the Eclipse / OSGi use cases
• Encapsulates:– Dependency resolution
– Download
– Modification of the system
– Restart
org.eclipse.equinox.p2.operations
org.eclipse.equinox.p2.operations
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 15
![Page 16: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/16.jpg)
Headless operations example
InstallOperation op = OperationHelper.create***Operation(iusToInstall, repoList, new
NullProgressMonitor());
if (op.resolveModal(newNullProgressMonitor()).isOK())
op.getProvisioningJob(newNullProgressMonitor()).schedule();
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 16
New in 3.7. This API only works for the running instance (which is the case most of the time).To modify another instance, you need to use the InstallOperation directly.
![Page 17: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/17.jpg)
3 levels of API
• Graphical User Interface
• Headless Operations
• Core APIs + SPIs
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 17
![Page 18: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/18.jpg)
Core concepts
profile registry/profile
repository
installable unit/metadata
agent
planner
engine
query/queryable
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 18
![Page 19: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/19.jpg)
TransportsHttp/Https
File system
Volume
Repositoriesp2
Update Site
Engine
Eclipse/OSGi
Native/OS
Planner/Director
Profile registryRuntimes
Provisioning operation requested
Metadata fetched and constraints analyzed
IU install, uninstall, update operations
Artifact availability and mirroring
Mirroring
Data transfer
IUs configured into runtimes
Profile updated
Metadata repo Artifact repo
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 19
Core concepts
![Page 20: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/20.jpg)
How do I get an IU?
• IUs can be obtained from
– Querying the metadata repository
– Querying the profile
– Querying …
– Programmatically createdorg.eclipse.equinox.p2.metadata
org.eclipse.equinox.p2.metadata.MetadataFactory
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 20
![Page 21: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/21.jpg)
Queries / QueryableHow do I query?
• What is queryable?– Almost everything is queryable (repository, repository
manager, profile, …)
• How do I create a query?– QueryUtil.create*
– Domain specific queries (e.g. in eclipse.touchpoint)
– p2 QL, p2-specific query language• http://wiki.eclipse.org/Query_Language_for_p2
org.eclipse.equinox.p2.query.IQueryable
org.eclipse.equinox.p2.query.QueryUtil
org.eclipse.equinox.p2.metadata
org.eclipse.equinox.p2.ql© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 21
![Page 22: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/22.jpg)
The repository managerHow do I get a repository?
• Artifact / metadata repository manager• Addition / removal of repositories• Enable / disable repositories• Load
• Artifact / metadata repository• Add• Remove• Query
org.eclipse.equinox.p2.repository
org.eclipse.equinox.p2.repository.IMetadataRepositoryorg.eclipse.equinox.p2.repository.IArtifactRepository
o.e.e.p2.repository.IMetadataRepositoryManagero.e.e.p2.repository.IArtifactRepositoryManager
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 22
![Page 23: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/23.jpg)
Provisioning agentHow do I get a repository manager or p2 components?
• The agent groups related services together– It is the starting point of everything.– It is the executable version of the p2 area (e.g the p2 folder in the
eclipse install)
– Several agents can run at once in one VM. Groups the services together. Allows to change some services (see implementations of IAgentServiceFactory)
– If you are only dealing with the running instance:• Obtain the IProvisioningAgent service from the OSGi registry• Create it using the IProvisioningContext#createAgent(null)
org.eclipse.equinox.p2.core
org.eclipse.equinox.p2.core.IProvisioningAgent
org.eclipse.equinox.p2.core.IProvisioningAgentProvider
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 23
![Page 24: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/24.jpg)
Profile / profile registryHow do I know what is installed?
• A profile is the complete description in terms of IUs of what is installed.
• The profile registry knows about all the profiles in a given p2 area
org.eclipse.equinox.p2.engine
org.eclipse.equinox.p2.engine.IProfile
org.eclipse.equinox.p2.engine
org.eclipse.equinox.p2.engine.IProfileRegistry
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 24
![Page 25: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/25.jpg)
What is not API?
• Repository serialized format
• Layout of files on disk under the p2 folder
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 25
![Page 26: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/26.jpg)
Summary
• 3 levels of API tailored for different needs
Simple things should be simple
Complex things should be possible
This API is for YOU! Tell us what you think.
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 26
![Page 27: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/27.jpg)
Thank you
mailto:[email protected]
http://wiki.eclipse.org/Equinox/p2
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 27
![Page 28: Discovery the p2 API (updated to Indigo)](https://reader034.vdocuments.us/reader034/viewer/2022042816/55946d1e1a28ab8a2b8b47f1/html5/thumbnails/28.jpg)
p2 related talks
• p2 savior or Achilles heel (Tues 4pm)– http://www.eclipsecon.org/2011/sessions?id=2313
• Raising p2 to the cloud (Wed 1:30pm)– http://www.eclipsecon.org/2011/sessions?id=2102
• Updates in the micro space (Thr 2:30pm)– http://www.eclipsecon.org/2011/sessions?id=2196
• Fireside chat on p2 (Wed 8:30pm)– http://www.eclipsecon.org/2011/sessions?id=2473
© Sonatype, inc. All right reserved. Made available under Creative Commons Att. Nc Nd 2.5.license 28