42
1 Managing your Runtime with p2 Pascal Rapicault IBM Rational TM , p2 lead

Managing Your Runtime With P2

Embed Size (px)

Citation preview

Page 1: Managing Your Runtime With P2

1

Managing your Runtime with p2

Pascal Rapicault

IBM RationalTM, p2 lead

Page 2: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 2

• A provisioning solution for OSGi™ systems– Managing non-running instance (only on Equinox for now)– Start level, framework extension– Bundle pooling

• An extensible provisioning platform– Powerful dependency resolver based on SAT4J– “Transactional” state change– Extensible set of actions

p2 is about installing!

Page 3: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license

Why should you care?

• Deploying and servicing is too often left as an afterthought, unfortunately it is your only connection with your user base.

• p2 offers a foundation to your provisioning problems– On a device– On a legacy Java server– On OSGi Server side application– On the cloud– …

Page 4: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 4

• OSGi proves the power of componentization

• Componentization naturally spreads

• More components → more management

• Management is hard

• It’s all about the Contract– Defining– Instantiating– Executing– Maintaining

OSGi is good for you!

Page 5: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 5

How does p2 help for OSGi provisioning?

• Manages the contract– Dependencies– Code– Settings (VM args, start level, etc)– Integrations– Non-OSGi parts (e.g. native launcher)

• Extensible

• GUI and Headless

One consistent model from installation to servicing

Page 6: Managing Your Runtime With P2

© 2009 IBM Corp. and EclipseSource; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 6

From install to service

Concepts and Architecture

Configurability

Tooling

Page 7: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license

Unzipping is not installing

Page 8: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license

Initial deployment

- Installer- p2 basic installer (~5/6M)

- Deployable using JavaWebStart- EPP wizard [1,2]

- “Shopping cart” approach to software selection.- Home brewed p2-based installer

- Complete application (e.g. a zip file)- The application results from a provisioning operation done at build

time. [3]

[1] - EPP wizard - http://wiki.eclipse.org/EPP/Wizard

[2] - EPP Wizard talk - http://www.eclipsecon.org/2009/sessions?id=426

[3] – Director application doc - http://wiki.eclipse.org/Equinox_p2_director_application

Page 9: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license

EPP Wizard

The user picks its software and a custom p2 installer is built.

Page 10: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license

Initial deployment

- Installer- p2 basic installer (~5/6M)

- Deployable using JavaWebStart- EPP wizard [1,2]

- “Shopping cart” approach to software selection.- Home brewed p2-based installer

- Complete application (e.g. a zip file)- The application results from a provisioning operation done at build

time. [3]

[1] – EPP wizard - http://wiki.eclipse.org/EPP/Wizard

[2] – EPP Wizard talk - http://www.eclipsecon.org/2009/sessions?id=426

[3] – Director application doc - http://wiki.eclipse.org/Equinox_p2_director_application

Page 11: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license

Updating, extending, …

- Two usage mode- External mode, the p2 plug-ins are external to the application

(e.g an installer)- Co-hosted mode, the p2 plug-ins are in your application (e.g.

the Eclipse SDK). This mode still allows the application to be externally managed.

- User interface- The p2.ui.* bundles, offering reusable dialogs- Agent running in the background checking for updates- Command line using the director application

Page 12: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license

The controlled mode

• In comparison to the Eclipse SDK UI:• Notice that the entry to choose a site is not available.• The preference page to add repo is also removed.

Page 13: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license

Check for update on startup

Details on UI customization available at: http://wiki.eclipse.org/Equinox/p2/Adding_Self-Update_to_an_RCP_Application

Page 14: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license

Serviceability, the profile registry

• The profile registry reflects from a metadata standpoint– What the user is currently running– What the user has been running

<install>/p2/org.eclipse.equinox.p2.engine/<….profile>/

A profile can be used to recreate the user’s installation on another machine.

Page 15: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 15

From install to service

Concepts and Architecture

Configurability

Tooling

Page 16: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 16

One construct to rule them all

Decouple decision making from the actual content

Everything is an IUEverything is installable

It is also referred to as “metadata”

IU(id, ver)

Page 17: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 17

Anatomy of an IU

Provided

CapabilitiesRequired

Capabilities

Properties

Artifact reference

Actions

IU(id, ver)

Page 18: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 18

Anatomy of an IU, requirements / capabilities

• Capabilities and requirements are the mechanism by which an IU express what it provides and what needs.

• A capability is composed of a:– Namespace (string), name (string) and version

• A requirement is composed of a:– Namespace, name and version range

• Namespace, name and version are open ended.

• The requirements and capabilities expressed by IUs can be arbitrary and don’t have to all be in the same namespace.– Resources – RPMs, .exes, docs, …– Virtual – if you can define a capability, I can depend on it

Page 19: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 19

Separation of concerns

• Installable Unit– Exists independently of the repository

• Metadata Repository– Store only Installable Units. – API, no specified serialization format

• Artifact Repository– Store only Artifacts– API, no specified serialization or layout format

Metadata Artifacts

Page 20: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 20

Artifacts

• Bytes/content to be installed

• Any form– JARs (e.g., bundles, features, …)– Binary executables– RPM, MSI, …

• Multiple form– JAR, pack200– Binary diff

• Defined, maintained, loaded and used separately from the metadata

Page 21: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 21

p2 Architecture

Metadata Artifacts

Runtimes

Profiles

OS

Eclipse

Engine

Eclipse

Classic

Eclipse

for C++

Other

Planner Repositories

Touchpoints

Page 22: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 22

Terminology

• p2 / Agent – The provisioning infrastructure on client machines

• Installable Unit (IU) – Metadata that describes things that can be installed/configured

• Artifact – The actual content being installed/configured(e.g., bundle JARs)

• Repository– A store of metadata or artifacts

• Profile – The target of install/management operations

• Planner– The decision-making entity in the provisioning system

• Engine– The mechanism for executing provisioning requests

• Touchpoint – The part of the engine responsible for integrating the provisioning

system to a particular runtime or management system

Page 23: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 23

p2 in Action

TransportsHttp/Https

File systemVolume

Repositoriesp2

Update Site

Engine

OSGiNative/OS

Planner

ProfilesRuntimes

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

Page 24: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license

Touchpoint / actions

The decoupling between p2 and the actual runtime being modified.

• An action is a piece of code in charge of changing the system (e.g installing a bundle, setting a start level, etc.). An action can be context free or context bound. See ProvisioningAction

– Example of context free: chmod, unzip– Example of context bound: installBundle, setStartLevel,…

• A touchpoint provides the context in which an action is executed– For example the eclipse touchpoint provides its actions values such as the eclipse

install folder, the bundle pool and is also used to cache some common data structure (e.g. the state of the fwk being modified)

• The extension point for touchpoint and actions is defined in the engine.

Page 25: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 25

From install to service

Concepts and Architecture

Configurability

Tooling

Page 26: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license

Configurability

• p2 architecture allows for some of the key components to not all be in the same process.

• Three known possible configurations, exemplified for OSGi– Milli– Micro– Nano

Page 27: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 27

Internal management - milli

TransportsHttp/Https

File systemVolume

Repositoriesp2

Update Site

Engine

OSGiNative/OS

Planner

Page 28: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 28

External management - nano

Managed applicationAgent

Engine

OSGiNative/OS

Planner

Repositoriesp2

Update Site

TransportsHttp/Https

File systemVolume

OSGi fwk

The agent writes out file to control the application.The “provisioning” presence in the managed application is small.

Page 29: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 29

External management - micro

Planner

OSGi fwk

Engine

OSGiNative/OS

Repositoriesp2

Update Site

TransportsHttp/Https

File systemVolume

Repositoriesp2

Update Site

The decision making on what to install is done on the agent andcommunicated to the managed application (no remoting provided in the open source). The agent could also carry a copy of the profile registry.Demo - http://eclipsesource.com/blogs/2009/05/05/remote-provisioning-with-p2/

Managed applicationAgent

Page 30: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 30

From install to service

Concepts and Architecture

Configurability

Tooling

Page 31: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 31

Build, when the metadata comes to be

Metadata matters

• The p2.publisher is responsible for metadata / artifact generation– Produces p2 metadata from bundles, Eclipse features and products– Can be used in any build system

• PDE Build is the richest (from source to repo)• Maven / tycho integration

• Not all metadata can be inferred– Actions to be executed on a given phase– Some tweaking is necessary– Author metadata advice

Page 32: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 32

Repository management

Everybody creates repos, they need to be managed

• Problems– You want to promote one build over another one

• Composite repositories– You build more than you want to make available

• Slicing– You want to replicate builds from one repository to another

• Mirroring applications

• Repository validation– Repository validation that everything is installable– For every IU, each artifact is available– IU comparison tools, to ensure that the metadata is not changed– Artifact comparison tool to ensure that one artifact has not changed [1]

– Repository diff’ing tool

[1] - Talk on versioning and provisioning - http://www.eclipsecon.org/2009/sessions?id=585

Page 33: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 33

From install to service

Concepts and Architecture

Configurability

Tooling

Page 34: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 34

What is p2?

• A provisioning solution for OSGi™ systems

• An extensible provisioning platform

• A complete offering from Build time to Runtime

• A community and an ecosystem

Page 35: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license

p2 in wild

• Installer for products (EPP Wizard, WindRiver, Motorola, IBM Rational, etc.)

• Server managed deployment solution and distros (Genuitec, EclipseSource, Cloudsmith)

• Remote management of device (EclipseSource)

• Buckminster (Cloudsmith)

• Cloud provisioning (EclipseSource)

• Repository management (Sonatype)

Page 36: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 36

References

• p2 landing page http://wiki.eclipse.org/Equinox_p2

• All p2 articles http://wiki.eclipse.org/Category:Equinox_p2

• Getting the code http://wiki.eclipse.org/Equinox_p2_Getting_Started_for_Developers

• Contacting us– Equinox newsgroup– Mailing list: [email protected]

Page 37: Managing Your Runtime With P2

© 2009 IBM Corp. and EclipseSource; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 37

Appendix

Page 38: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 38

Profile

A profile is the complete description in terms of IU of what is installed

• A profile contains– Properties defining the “environment” such as os, ws, arch,

install location, bundle pool location– The list of IUs– Properties associated with IUs

Class: Org.eclipse.equinox.internal.provisional.p2.engine.IProfile

Page 39: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 39

Planning a profile change

Because of inter IU dependencies, modification against a profile should be planned

• ProfileChangeRequest– Capture the changes you want to make to the profile (e.g. Install, Uninstall).– The request is processed by the Planner– An update is a removal and an addition

• Planner– The entity responsible for the evaluation of the change request, computing the

transitive closure and checking the dependencies– If a solution exists it will find it

• ProvisioningPlan– The planner returns a provisioning plan. The planning succeed pass or fail. Upon

failure explanations are provided. Upon success the plan returns a set of operands to go from the initial state of the profile to the desired state.

Page 40: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 40

Engine

The mechanism by which the profile is actually changed

• The engine ensures consistency of the modification by performing a “transaction”.

• Runs over a set of operands (usually resulting from a planning operation) and executes a given set of phases on them. No profile consistency validation is done

Engine.perform(Operand[] ops, PhaseSet phases, IProgressMonitor pm)

• For each phase, the engine interprets from the touchpoint data of the IU, the action specific to the phase. The engine looks up the action to execute.

• Currently 8 phases are defined, and the typical set of phases (and their order) is defined in DefaultPhaseSet. The design allows for new phases could be added.

• The engine emit events on the IProvisoningEventBus to describe what is happening. Events on the bus are post events and can not be vetoed.

Page 41: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 41

Installable Unit Fragments

• An installable unit fragment is an entity that attaches to an installable unit.

• Much like OSGi fragments, IU fragments are used to complement an existing installable unit and appear as one with the IU they attached to.

• They are typically used to deliver action to an installable unit (e.g. start level) because IUs should stay as context agnostic as possible

• IU fragments can be attached to several IU at the same time. See for example the tooling.osgi.bundle.default IU that applies to all bundles.

• Note that IU fragments are not how OSGi fragments are delivered. OSGi fragments are delivered as regular IU with requirements on their host.

Page 42: Managing Your Runtime With P2

© 2009 IBM Corp; All right reserved. Made available under Creative Commons Att. Nc Nd 2.5 license 42

Installable Unit Patches

• An installable unit patch has the ability to “modify” the requirements of any other installable unit.

• Deal with three concerns:– The IUs to which the patch apply

– The lifecycle of patch

– The changes applied

Note: In 3.5 the feature patch editor only exposes some of those capabilities.