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 setups.