Shell reports

Pelix/iPOPO comes with a bundle, pelix.shell.report, which provides commands to generate reports describing the current framework and its host. This main purpose of this feature is to debug a faulty framework by grabbing all available information. It can also be used to have a quick overview of the operating system, either to check the installation environment or to identify the host machine.

Setup

This feature requires an active Pelix Shell (pelix.shell.core) and a UI. See Pelix Shell for more information on this subject. The iPOPO service is not required for this feature to work.

It can therefore be started programmatically using the following snippet:

# Start the framework, with the required bundles and the report bundle
framework = create_framework(
    ["pelix.shell.core", "pelix.shell.report"])

# ... or install & start it using the BundleContext
bundle_context.install_bundle("pelix.shell.report").start()

It can only be installed from a Shell UI using the command start pelix.shell.report.

Usage

The bundle provides the following commands in the report namespace:

Command

Description

clear

Clears the last report

levels

Lists the available levels of reporting

make [<levels ...>]

Prepares a report with the indicated levels (all levels if none set)

show [<levels ...>]

Shows the latest report. Prepares it if levels have been indicated

write <filename>

Write the latest report as a JSON file

Report levels

The reports are made of multiple “level information” sections. They describe the current state of the application and its environment.

Here are some of the available levels.

Framework information

Level

Description

pelix_basic

Framework properties and version

pelix_bundles

Bundles ID, name, version, state and location

pelix_services

Services ID, bundle and properties

ipopo_factories

Description of iPOPO factories (with their bundle)

ipopo_instances

Details of iPOPO instances

Process information

Level

Description

process

Details about the current process (PID, user, working directory, …)

threads

Lists the current process threads and their stacktrace

Python information

Level

Description

python

Python interpreter details (version, compiler, path, …)

python_modules

Lists all Python modules imported by the application

python_path

Lists the content of the Python Path

Host information

Level

Description

os

Details about the OS (version, architecture, CPUs, …) and the host name

os_env

Lists the environment variables and their value

network

Lists the IPs (v4 and v6) of the host, its name and FQDN.

Group levels

Some levels are groups of lower levels. They are subject to change, therefore the following table is given as an indication. Always refer to the report.levels shell command to check available ones.

Level

Description

pelix

Combines pelix_infos, pelix_bundles and pelix_services

ipopo

Combines ipopo_factories and ipopo_instances

app

Combines os, os_env, process, python and python_path

debug

Combines app (except os_env), pelix, ipopo and python_modules

standard

Like debug, but without pelix_services nor ipopo_instances

full

Combines debug, os_env, network and threads

Those groups were defined according to the most common combinations of levels used during iPOPO development and live setup.