Skip to main content

easy-manage 🐟

This python package has been created to facilitate remote server management. It is focused on out-of-band management through IPMI and Redefish standards, however, it is possible to perform in-band management with it.

The reason of creation of such package is need to unify server management regardless of standard or protocol we use below. Easy-manage delivers unified management interface.

Easy-manage is able to connet either Network Interface Card assigned to BMC or whole system. You can give multiple IP addresses to ControllerFactory and it will try to connect to all of them. Example config:

from easy_manage.tools import Protocol
from easy_manage import Credentials

bmc_credentials = Credentials('username', 'password')
system_credentials = Credentials('username2', 'password2')

config = {
    Protocol.REDFISH: {
        'address': bmc_ip_address,
        'credentials': bmc_credentials
    },
    Protocol.IPMI: {
        'address': bmc_ip_address,
        'credentials': bmc_credentials
    },
    Protocol.BASH: {
        'address': system_ip_address,
        'credentials': system_credentials
    },
}

Above configuration will enable user to connect to device with all three accessible protocols. To create abstract controller over theses interfaces, we need to use ControllerFactory

controller = ControllerFactory.get_controller(config)

Now it is ready to use.

# See all available system methods
print(ControllerFactory.get_methods(controller.system))

# See all available chassis methods
print(ControllerFactory.get_methods(controller.chassis))

# Test simple abstract methods
print(controller.chassis.get_power_state())
print(controller.system.get_led_state())
controller.system.power_on()

Connector depending on its configuration is able to aggregate up to three components:

  • System
  • Chassis
  • Shell

You can get bulk data from every component using pre-defined methods redings(), static_data() and raw_data() on controller components.

from pprint import pprint

pprint(controller.shell.readings())
pprint(controller.system.static_data())
pprint(controller.chassis.raw_data())

What is important, you can invoke methods through any connected component interface by referencing it explicitly. Above calls could be transformed to:

from pprint import pprint

pprint(controller.components['shell']['bash'].readings())
pprint(controller.components['system']['redfish'].static_data())
pprint(controller.components['chassis']['redfish'].raw_data())

# PowerShell is not supported yet
#pprint(controller.components['shell']['power_shell'].readings())
pprint(controller.components['system']['ipmi'].static_data())
pprint(controller.components['system']['ipmi'].static_data())

See more examples in demo/demo.py

Package has been designed to provide command line tool but it has not been binded with implemented functionalities yet.

Please note that this package came into existence as a part of bachelor's thesis and has not been commercially used and thus may be buggy.

Metadata

Release files for easy-manage 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for easy-manage 0.0.1
File Size Uploaded
easy_manage-0.0.1.tar.gz 41.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for easy-manage 0.0.1
File Interpreter ABI Platform
easy_manage-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 118.0 kB

Release files / easy_manage-0.0.1.tar.gz

Download URL easy_manage-0.0.1.tar.gz
Size 41.0 kB
Tags Source
SHA-256 checksum
How to use checksums
e8e01c2f04bbff5ab23ba53c4916e0a42f23f07c90d5e7e179e45a4a2a1bdccd
BLAKE2b-256 checksum
How to use checksums
fc2c2d1690d596e7919b7a4da76cc1afcf6f2350e32164efc38b944b6047d070
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.5

Release files / easy_manage-0.0.1-py3-none-any.whl

Download URL easy_manage-0.0.1-py3-none-any.whl
Size 77.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
814ce405cf108a564ba638a7d89b44a551b8e7304eef22fbea267ba00daae852
BLAKE2b-256 checksum
How to use checksums
06ed688645c41d898c140c4b7463abe1a11914727a2a6489cc66efd9c9045aee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.5

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page