Alignak-app Architecture

This Python module is a desktop application, with a system tray icon, for Alignak solution.

Application notify you when you have changes in your monitoring. You can trigger actions inside application, see status of monitored items, problems to solved and many other things.

Alignak-app have the following architecture:

Alignak-app will use a system of Installer who use environment variables to run:

  • ALIGNAKAPP_USR_DIR: contains settings of user (write rights)
  • ALIGNAKAPP_LOG_DIR: contains log files of App (write rights)
  • ALIGNAKAPP_APP_DIR: contains binaries of App (images, css, languages) (read rights)

The Login manage user login if needed.

Alignak-App

Main Class

App

App manages the creation of all objects and QObjects for the whole application:

  • Creation of AppProgressBar until the Data Manager is ready
  • Creation of AppQMainWindow
  • Creation of standard python objects (settings, css, localization)
class alignak_app.app.AlignakApp

Bases: PyQt5.QtCore.QObject

Class who build Alignak-app QObjects, initialize configurations, systray icon and Thread Manager.

static check_threads()

Launch periodically threads

static quit_launched_threads()

Exit the threads that were started when the application started

Parameters:launched_threads (list) – list of threads that have been launched
Returns:empty list if all the threads have been left or current list
Return type:list
start(username=None, password=None)

Start Alignak-app

class alignak_app.app.AppProgressBar

Bases: PyQt5.QtWidgets.QProgressBar

AppProgressBar in busy mode with text displayed at the center.

set_text(text)

Set text of QProgressBar

Parameters:text (str) – text of progress bar
text()

Overload: text(self) -> str

Returns:text of progress bar
Return type:str
class alignak_app.app.AppProgressQWidget(parent=None)

Bases: PyQt5.QtWidgets.QWidget

Class who create a small widget for App start progression

initialize()

Initialize the QWidget

Backend

The Backend package contains classes to manage alignak data

Backend

Backend manage connection and access to Alignak backend. It also fill DataManager.

class alignak_app.backend.backend.BackendClient

Bases: object

Class who collect informations with Backend-Client and returns data for Alignak-App.

get(endpoint, params=None, projection=None, all_items=False)

GET on alignak Backend REST API.

Parameters:
  • endpoint (str) – endpoint (API URL)
  • params (dict|None) – dict of parameters for the app_backend API
  • projection (list|None) – list of field to get, if None, get all
  • all_items (bool) – make GET on all items
Returns:

desired request of app_backend

Return type:

dict

get_backend_status_icon()

Return backend status icon name

Returns:daemon status icon name
Return type:str
login(username=None, password=None, check=False)

Connect to alignak backend

Parameters:
  • username (str) – name or token of user
  • password (str) – password of user. If token given, this parameter is useless
  • check (bool) – define if login is a check or a first login
Returns:

True if connected or False if not

Return type:

bool

patch(endpoint, data, headers)

PATCH on alignak Backend REST API

Parameters:
  • endpoint (str) – endpoint (API URL)
  • data (dict) – properties of item to update
  • headers (dict) – headers (example: Content-Type). ‘If-Match’ required
Returns:

dictionary containing patch response from the backend

Return type:

dict

post(endpoint, data, headers=None)

POST on alignak Backend REST API

Parameters:
  • endpoint (str) – endpoint (API URL)
  • data (dict) – properties of item to create | add
  • headers (dict|None) – headers (example: Content-Type)
Returns:

response (creation information)

Return type:

dict

query_daemons_data()

Launch request for “alignakdaemon” endpoint

query_history_data(hostname=None, host_id=None)

Launch request for “history” endpoint but only for hosts in “data_manager”

Parameters:
  • hostname (str) – name of host we want history
  • host_id (str) – id of host for history
query_hosts_data()

Launch request for “host” endpoint

query_livesynthesis_data()

Launch request for “livesynthesis” endpoint

query_notifications_data()

Launch request for “history” endpoint but only for notifications of current user

query_period_data()

Launch a request on timeperiod endpoint

query_realms_data()

Launch a request on realm endpoint

query_services_data()

Launch request for “service” endpoint

query_user_data()

Launch request for “user” endpoint

Data Manager

DataManager manage alignak data provided by Client.

class alignak_app.backend.datamanager.DataManager

Bases: object

Class who store alignak data

get_all_hostnames()

Collect and return all names of all hosts

Returns:all names of all hosts
Return type:list
get_events()

Get the last events

Returns:events formated for App to send
Return type:list
get_host_services(host_id)

Return services of wanted host

Parameters:host_id (str) – ‘_id’ of host
Returns:services of host
Return type:list
get_host_with_services(host_field)

Returns the desired host and all its services

Parameters:host_field (str) – field of wanted host: host_id | name
Returns:dict with host data and its associated services
Return type:dict
get_item(item_type, key, value=None)

Return the wanted item for item type who contain the value

Parameters:
  • item_type (str) – type of wanted item
  • key (str) – key contained in item
  • value (str) – value of the key if needed
Returns:

wanted item

Return type:

alignak_app.items.item.*

get_items_and_problems()

Return total of items and problems

Returns:dict of problem and total number for each item
Return type:dict
get_period_name(period)

Return the period name or alias

Parameters:period (str) – wanted period _id
Returns:the wanted realm alias or name if available
Return type:str
get_problems()

Return items who are in problem: hosts and services

Returns:dict of items in problem, and number for each type of item
Return type:dict
get_realm_name(realm)

Return the realm name or alias

Parameters:realm (str) – wanted realm _id
Returns:the wanted realm alias or name if available
Return type:str
get_synthesis_count()

Get on “synthesis” endpoint and return the states of hosts and services

Returns:states of hosts and services.
Return type:dict
is_ready()

Check if DataManager is filled and ready

Returns:if ready or current status
Return type:str
update_database(item_type, items_list)

Update an item type in database

Parameters:
  • item_type (str) – type of item to update
  • items_list (list | dict) – list of items for the wanted type
update_item_data(item_type, item_id, data)

Update a single item in database

Parameters:
  • item_type
  • item_id
  • data
Returns:

Items

The Items package contains classes who create items who are stored in DataManager.

Item

Item is parent class for all items objects:

class alignak_app.items.item.Item

Bases: object

Class who create an item

create(_id, data, name=None)

Create wanted item

Parameters:
  • _id (str) – id of the item. Often equal to id in alignak backend
  • data (dict | list) – data of the item
  • name (str) – name of the item if available
get_tooltip()

Return the tooltip message depending state and actions

Returns:toottip message
Return type:str
update_data(key, new_value)

Update data of the wanted key

Parameters:
  • key (str) – key to update
  • new_value – new value of the key
alignak_app.items.item.get_host_msg_and_event_type(host_and_services)

Return corresponding event icon to number of services who are in alert

Parameters:host_and_services (dict) – Host() item and its Service() items
Returns:event type and message
Return type:dict
alignak_app.items.item.get_icon_name(item_type, state, acknowledge, downtime, monitored)

Return icon for a host or a service item

Parameters:
  • item_type (str) – type of item: host | service
  • state (str) – state of item
  • acknowledge (bool) – if item is acknowledged or not
  • downtime (bool) – if item is downtimed
  • monitored (int) – define if host is monitored or not (0 is not monitored, 1 or 2 is monitored)
Returns:

icon name for icon

Return type:

str

alignak_app.items.item.get_icon_name_from_state(item_type, state)

Return icon name from state for host or service

Parameters:
  • item_type (str) – type of item: host or service
  • state (str) – state of item
Returns:

alignak_app.items.item.get_real_host_state_icon(services)

Return corresponding icon to number of services who are in alert

Parameters:services (list) – list of Service() items
Returns:icon corresponding to state
Return type:str

Daemon

Daemon manage creation of daemon item for backend alignakdaemon endpoint

class alignak_app.items.daemon.Daemon

Bases: alignak_app.items.item.Item

Class who create a daemon item

create(_id, data, name=None)

Create wanted item

Parameters:
  • _id (str) – id of the item. Often equal to id in alignak backend
  • data (dict | list) – data of the item
  • name (str) – name of the item if available
static get_daemons_names()

Returns all the names of daemons

Returns:all the names of daemons
Return type:list
static get_daemons_status_icon()

Return daemons status icon name

Returns:daemons status icon name
Return type:str
static get_request_model()

Return the request model for alignakdaemon requests

Returns:request model for alignakdaemon endpoint
Return type:dict
static get_states()

Return states of daemons or backend

Parameters:status (str) – status of item
Returns:the status string
Return type:str
get_tooltip()

Return the tooltip message depending state and actions

Returns:toottip message
Return type:str
update_data(key, new_value)

Update data of the wanted key

Parameters:
  • key (str) – key to update
  • new_value – new value of the key

Event

Event manage creation of event item (Notifications collected from history endpoint)

class alignak_app.items.event.Event

Bases: alignak_app.items.item.Item

Class who create an event item

create(_id, data, name=None)

Create wanted item

Parameters:
  • _id (str) – id of the item. Often equal to id in alignak backend
  • data (dict | list) – data of the item
  • name (str) – name of the item if available
static get_request_model()

Return the request model for notification requests

Returns:request model for history endpoint (only for notifications)
Return type:dict
get_tooltip()

Return the tooltip message depending state and actions

Returns:toottip message
Return type:str
update_data(key, new_value)

Update data of the wanted key

Parameters:
  • key (str) – key to update
  • new_value – new value of the key

History

History manage creation of history item for backend history endpoint

class alignak_app.items.history.History

Bases: alignak_app.items.item.Item

Class who create a history item

create(_id, data, name=None)

Create wanted item

Parameters:
  • _id (str) – id of the item. Often equal to id in alignak backend
  • data (dict | list) – data of the item
  • name (str) – name of the item if available
static get_history_icon_name_from_message(event_type)

Return icon name related to message or event type

Parameters:
  • message (str) – message of an history event
  • event_type (str) – type of history event
Returns:

icon name

Return type:

str

static get_request_model()

Return the request model for history requests

Returns:request model for history endpoint
Return type:dict
get_tooltip()

Return the tooltip message depending state and actions

Returns:toottip message
Return type:str
update_data(key, new_value)

Update data of the wanted key

Parameters:
  • key (str) – key to update
  • new_value – new value of the key

Host

Host manage creation of host item for backend host endpoint

class alignak_app.items.host.Host

Bases: alignak_app.items.item.Item

Class who create a host item

create(_id, data, name=None)

Create wanted item

Parameters:
  • _id (str) – id of the item. Often equal to id in alignak backend
  • data (dict | list) – data of the item
  • name (str) – name of the item if available
static get_available_icons()

Return list of available icons for a Host item

Returns:list of available icons for Host
Return type:list
get_display_name()

Return alias or name if available

Returns:name or alias
Return type:str
static get_request_model()

Return the request model for host requests

Returns:request model for host endpoint
Return type:dict
get_tooltip()

Return the tooltip message depending state and actions

Returns:toottip message
Return type:str
update_data(key, new_value)

Update data of the wanted key

Parameters:
  • key (str) – key to update
  • new_value – new value of the key

Live Synthesis

Live Synthesis manage creation of livesynthesis item for backend livesynthesis endpoint

class alignak_app.items.livesynthesis.LiveSynthesis

Bases: alignak_app.items.item.Item

Class who create livesynthesis item

create(_id, data, name=None)

Create wanted item

Parameters:
  • _id (str) – id of the item. Often equal to id in alignak backend
  • data (dict | list) – data of the item
  • name (str) – name of the item if available
static get_request_model()

Return the request model for livesynthesis requests

Returns:request model for livesynthesis endpoint
Return type:dict
static get_synthesis_count_model()

Return the synthesis count model

Returns:synthesis count model
Return type:dict
get_tooltip()

Return the tooltip message depending state and actions

Returns:toottip message
Return type:str
update_data(key, new_value)

Update data of the wanted key

Parameters:
  • key (str) – key to update
  • new_value – new value of the key

Period

Period manage creation of period item for backend timeperiod endpoint

class alignak_app.items.period.Period

Bases: alignak_app.items.item.Item

Class who create a period item

create(_id, data, name=None)

Create wanted item

Parameters:
  • _id (str) – id of the item. Often equal to id in alignak backend
  • data (dict | list) – data of the item
  • name (str) – name of the item if available
get_display_name()

Return alias or name if available

Returns:name or alias
Return type:str
static get_request_model()

Return the request model for timeperiod requests

Returns:request model for timeperiod endpoint
Return type:dict
get_tooltip()

Return the tooltip message depending state and actions

Returns:toottip message
Return type:str
update_data(key, new_value)

Update data of the wanted key

Parameters:
  • key (str) – key to update
  • new_value – new value of the key

Realm

Realm manage creation of realm item for backend realm endpoint

class alignak_app.items.realm.Realm

Bases: alignak_app.items.item.Item

Class who create a realm item

create(_id, data, name=None)

Create wanted item

Parameters:
  • _id (str) – id of the item. Often equal to id in alignak backend
  • data (dict | list) – data of the item
  • name (str) – name of the item if available
get_display_name()

Return alias or name if available

Returns:name or alias
Return type:str
static get_request_model()

Return the request model for realm requests

Returns:request model for realm endpoint
Return type:dict
get_tooltip()

Return the tooltip message depending state and actions

Returns:toottip message
Return type:str
update_data(key, new_value)

Update data of the wanted key

Parameters:
  • key (str) – key to update
  • new_value – new value of the key

Service

Service manage creation of service item for backend service endpoint

class alignak_app.items.service.Service

Bases: alignak_app.items.item.Item

Class who create a service item

create(_id, data, name=None)

Create wanted item

Parameters:
  • _id (str) – id of the item. Often equal to id in alignak backend
  • data (dict | list) – data of the item
  • name (str) – name of the item if available
static get_available_icons()

Return list of available icons for a Service item

Returns:list of available icons for Service
Return type:list
get_display_name()

Return alias or name if available

Returns:name or alias
Return type:str
static get_request_model()

Return the request model for service requests

Returns:request model for service endpoint
Return type:dict
static get_service_states_nb()

Return all service state in a dict with int() as zero

Returns:all service state with int() as zero
Return type:dict
get_tooltip()

Return the tooltip message depending state and actions

Returns:toottip message
Return type:str
update_data(key, new_value)

Update data of the wanted key

Parameters:
  • key (str) – key to update
  • new_value – new value of the key

User

User manage creation of user item

class alignak_app.items.user.User

Bases: alignak_app.items.item.Item

Class who create user item for backend user endpoint

create(_id, data, name=None)

Create wanted item

Parameters:
  • _id (str) – id of the item. Often equal to id in alignak backend
  • data (dict | list) – data of the item
  • name (str) – name of the item if available
static get_request_model()

Return the request model for user requests

Parameters:token (str) – token of user
Returns:request model for user endpoint
Return type:dict
get_role()

Get user role

Returns:role of user
Return type:str
get_tooltip()

Return the tooltip message depending state and actions

Returns:toottip message
Return type:str
update_data(key, new_value)

Update data of the wanted key

Parameters:
  • key (str) – key to update
  • new_value – new value of the key

Utils

The Utils package contains classes and functions configurations

Settings

Settings manage configurations of Alignak-app

  • settings.cfg: contains configurations of Alignak-app (stored in ALIGNAKAPP_USR_DIR)
  • images.ini: contains all images names (stored in ALIGNAKAPP_APP_DIR)
  • style.css: contains css of Alignak-app (stored in ALIGNAKAPP_APP_DIR)
class alignak_app.utils.config.Settings

Bases: object

Class who read and create configuration for Alignak-app

edit_setting_value(section, option, new_value)

Set an option in configuration file

Parameters:
  • section (str) – section to edit
  • option (str) – option to edit, corresponding to the wanted section
  • new_value (str) – new value to set in place of old
get_config(section, option, boolean=False)

Return global application configuration values

Parameters:
  • section (str) – wanted configuration section
  • option (str) – wanted configuration option
  • boolean (bool) – define if velue is boolean or not
Returns:

configuration value

Return type:

str | bool

get_image(name)

Return the path of wanted image

Parameters:name (str) – name of image
Returns:full path of image
Return type:str
init_config()

Initialize configurations

init_css()

Init the css file and fill app_css

alignak_app.utils.config.get_url_endpoint_from_icon_name(icon_name)

Return endpoint depending of “icon_name”

Parameters:icon_name (str) – naem of icon
alignak_app.utils.config.open_url(endpoint='login')

Open web browser on wanted endpoint

Parameters:endpoint (str) – endpoint of webui

Installer

Installer check and manage installation of Alignak-app

  • Check ALIGNAKAPP_APP_DIR, ALIGNAKAPP_USR_DIR and ALIGNAKAPP_LOG_DIR folders
  • Check required files for application and user
  • Install configuration and daemon files for user
class alignak_app.utils.installer.Installer

Bases: object

Class who create and check: folders, files and environment variables for Alignak-App

check_environment(mode='start')

Assign fields to environment variables if they don’t exist

check_install_files()

Check Alignak-app files

Returns:if all files are present
Return type:bool
check_install_folders()

Check Alignak-app folders

Returns:if all folders are present
Return type:bool
check_installation(mode='start')

Check Alignak-app installation

check_user_installation()

Check user installation files

init_environment()

Assign environment variables to fields if they exists

install()

Install Alignak-app user files on system

System

System manage interactions with folders and files for Alignak-app

alignak_app.utils.system.file_executable(filename)

Make filename executable

Parameters:filename (str) – file to make executable
alignak_app.utils.system.install_file(origin_dir, dest_dir, filename)

Install (copy) filename from an origin folder to a destination folder

Parameters:
  • origin_dir (str) – origin folder where file to copy is located
  • dest_dir (str) – destination folder where file will be copied
  • filename (str) – name of file to copy
alignak_app.utils.system.mkdir(folder)

Make wanted folder

Parameters:folder (str) – folder to create
Returns:if creation is success or not
Return type:bool
alignak_app.utils.system.read_config_file(cfg_parser, filename)

Read configuration file and assign it to configParser object

Parameters:
Returns:

corresponding filename if read is success

Return type:

str

alignak_app.utils.system.write_file(origin_dir, dest_dir, filename, formatted_var=None)

Write a file from an origiin to a destination, with formatted variables if needed

Parameters:
  • origin_dir (str) – origin folder where file is located
  • dest_dir (str) – destination folder where file will be located
  • filename (str) – name of file to write
  • formatted_var (tuple) – tuple of variable to format origin file
alignak_app.utils.system.write_rc_file(filename)

Write RC file to add autocompletion for Alignak-app

Parameters:filename (str) – name of file for autocompletion

Logs

Logs manage application logs directory and file who are created inside ALIGNAKAPP_LOG_DIR.

alignak_app.utils.logs.create_logger()

Create the logger for Alignak-App

Returns:the RootLogger of App
Return type:logging.RootLogger

Time

Time manage time and date for Alignak-app

alignak_app.utils.time.get_time_diff_since_last_timestamp(timestamp)

Return the diff between the last time stamp

Parameters:timestamp (float) – timestamp of the last check
Returns:time difference formatted
Return type:str

Locales

The Locales package contains classes to manage translation.

Locales

Locales manage localization of Alignak-app

alignak_app.locales.locales.init_localization()

Application localization

Returns:gettext translator method
Return type:method

QObjects

The QObjects package contains PyQt5 classes of Alignak-app

App Main

App Main manage creation of QMainWindow for:

class alignak_app.qobjects.app_main.AppQMainWindow(parent=None)

Bases: PyQt5.QtWidgets.QMainWindow

Class who create QMainWindow of Alignak-app

connect_dock_buttons()

Connect dock QWidget buttons to host and problems tab

initialize()

Initialize QMainWindow for App

mouseMoveEvent(event)

QWidget.mousePressEvent(QMouseEvent)

mousePressEvent(event)

QWidget.mousePressEvent(QMouseEvent)

open_host_widget()

Show HostQWidget

open_problems_widget()

Show ProblemsQWidget

Common

The Common package contains common QObjects for Alignak-app

Actions

Actions manage global QDialog’s for actions : Acknowledge and Downtime

class alignak_app.qobjects.common.actions.AckQDialog(parent=None)

Bases: PyQt5.QtWidgets.QDialog

Class who create Acknowledge QDialog for hosts/services

initialize(item_type, item_name, comment)

Initialize Acknowledge QDialog

Parameters:
  • item_type (str) – type of item to acknowledge : host | service
  • item_name (str) – name of the item to acknowledge
  • comment (str) – the default comment of action
mouseMoveEvent(event)

QWidget.mousePressEvent(QMouseEvent)

mousePressEvent(event)

QWidget.mousePressEvent(QMouseEvent)

class alignak_app.qobjects.common.actions.ActionsQWidget(parent=None)

Bases: PyQt5.QtWidgets.QWidget

Class who create Actions QWidget

add_acknowledge()

Create AckQDialog and manage acknowledge

add_downtime()

Create DownQDialog and manage downtime

initialize(item)

Initialize Actions QWidget

update_widget()

Update QWidget

class alignak_app.qobjects.common.actions.DownQDialog(parent=None)

Bases: PyQt5.QtWidgets.QDialog

Class who create Downtime QDialog for hosts/services

duration_to_seconds()

Return “duration” QTimeEdit value in seconds

Returns:“duration” in seconds
Return type:int
handle_accept()

Check if end_time timestamp is not lower than start_time

initialize(item_type, item_name, comment)

Initialize Downtime QDialog

Parameters:
  • item_type (str) – type of item to acknowledge : host | service
  • item_name (str) – name of the item to acknowledge
  • comment (str) – the default comment of action
mouseMoveEvent(event)

QWidget.mousePressEvent(QMouseEvent)

mousePressEvent(event)

QWidget.mousePressEvent(QMouseEvent)

Buttons

Buttons manage global QPushButtons

class alignak_app.qobjects.common.buttons.ToggleQWidgetButton(parent=None)

Bases: PyQt5.QtWidgets.QWidget

Class who create QWidget with “toggle” QPushButton inside.

get_btn_state()

Return “toggle_btn” state

Returns:QPushButton state
Return type:bool
initialize()

Initialize QWidget

update_btn_state(state)

Update QPushButton state, ObjectName and StyleSheet

Parameters:state (bool) – current state of QPushButton

Frames

Frames manage global QFrames for Alignak-app

class alignak_app.qobjects.common.frames.AppQFrame(parent=None)

Bases: PyQt5.QtWidgets.QFrame

Class who create a QFrame container for App QWidgets

add_widget(widget)

Add the child QWidget of AppQWidget

Parameters:widget (QWidget) – QWidget to add
close_widget()

Close QFrame and child widget

get_title_widget(title)

Return the title QWidget for App windows

Parameters:title (str) – title of frame
Returns:a title QWidget
Return type:QWidget
initialize(title)

Initialize the QFrame, with its “title”

Parameters:title (str) – title of frame
minimize()

Minimize QFrame

minimize_maximize()

Minimize / Maximize QFrame

mouseMoveEvent(event)

QWidget.mousePressEvent(QMouseEvent)

mousePressEvent(event)

QWidget.mousePressEvent(QMouseEvent)

show_widget()

Show and center QFrame and child widget

alignak_app.qobjects.common.frames.get_frame_separator(vertical=False)

Return a frame separator

Parameters:vertical (bool) – define if separator is vertical or horizontal
Returns:frame separator
Return type:QFrame

Labels

Labels manage global QLabels and QPixmaps

alignak_app.qobjects.common.labels.get_icon_item(item_type, problem_nb)

Return QPixmap with the corresponding image

Parameters:
  • item_type (str) – type of item: host, service or problem
  • problem_nb (int) – problem number
Returns:

QPixmap with corresponding image

Return type:

QPixmap

alignak_app.qobjects.common.labels.get_icon_pixmap(value, icons)

Return corresponding icon name in icons

Parameters:
  • value (bool) – value of attribute
  • icons (list) – pair of icons
Returns:

pixmap icon corresponding to value

Return type:

QPixmap

Widgets

Widgets manage global QWidgets

class alignak_app.qobjects.common.widgets.LogoQWidget

Bases: PyQt5.QtWidgets.QWidget

Class who manage creation of Logo QWidget

initialize(child_widget, title, exitapp)

Initialize QWidget

Parameters:
  • child_widget (QWidget) – widget child of LogoQWidget, needed for action button and layout
  • title (str) – title of widget
  • exitapp (bool) – define if close button close application or just child QWidget
minimize()

Minimize QWidget

minimize_maximize()

Minimize / Maximize QWidget

paintEvent(_)

Override to apply “background-color” property of QWidget

alignak_app.qobjects.common.widgets.center_widget(widget)

Center QWidget

Parameters:widget (QWidget) – widget to center
alignak_app.qobjects.common.widgets.get_logo_widget(child_widget, title, exitapp=False)

Return LogoQWidget with alignak logo

Parameters:
  • child_widget (QWidget) – widget child of LogoQWidget, needed for action button and layout
  • title (str) – title of widget
  • exitapp (bool) – define if close button close application or just child QWidget
Returns:

Logo QWidget with buttons and child QWidget

Return type:

QWidget

Dock (Rigt part)

The Dock package contains classes who manage Dock UI (Right part)

Password

Password manage Qdialog for user password

class alignak_app.qobjects.dock.password.PasswordQDialog(parent=None)

Bases: PyQt5.QtWidgets.QDialog

Class who create PasswordDialog QDialog

handle_confirm()

Handle accept_btn for password

initialize()

Initialize QDialog for PasswordDialog

Status

Status manage creation of QWidget and QDialog for Alignak status:

  • Alignak daemons status: status of each daemons
  • Alignak backend status: status of backend connection
class alignak_app.qobjects.dock.status.StatusQDialog(parent=None)

Bases: PyQt5.QtWidgets.QDialog

Class who create QWidget for Daemons status.

add_daemon_labels(daemon_item, line)

Add daemon QLabels to layout

Parameters:
  • daemon_item (alignak_app.items.item_daemon.Daemon) – daemon item
  • line (int) – current line of layout
add_daemon_titles_labels(line)

Add QLabels titles for daemons to layout

Parameters:line (int) – current line of layout
get_buttons_widget()

Return QWidget with buttons

Returns:widget with ok and refresh buttons
Return type:QWidget
initialize()

Initialize QDialog

set_daemons_labels(daemons)

Initialize the daemon QLabels for each daemons

Parameters:daemons (list) – list of daemon items
update_dialog()

Update StatusQDialog labels

class alignak_app.qobjects.dock.status.StatusQWidget

Bases: PyQt5.QtWidgets.QWidget

Class who display daemons and backend status

initialize()

Initialize QWidget

paintEvent(_)

Override to paint background

show_status_dialog()

Update and show StatusQDialog

update_status()

Update daemons and backend status

Token

Token manage creation of QDialog for user token

class alignak_app.qobjects.dock.token.TokenQDialog(parent=None)

Bases: PyQt5.QtWidgets.QDialog

Class who create Token QDialog

get_token_widget()

Return token QWidget

Returns:token QWidget
Return type:QWidget
initialize()

Initialize QDialog for PasswordDialog

User Notes

User Notes manage creation of QDialog for user notes

class alignak_app.qobjects.dock.user_notes.UserNotesQDialog(parent=None)

Bases: PyQt5.QtWidgets.QDialog

Class who create UserNotes QDialog

accept_notes()

Set QDialog notes to Rejected or Accepted (prevent to patch for nothing)

get_user_notes_widget()

Return notes QWidget

Parameters:notes (str) – notes of the user
Returns:notes QWidget
Return type:QWidget
initialize(notes)

Initialize QDialog for UserNotesQDialog

User Options

User Options manage creation options of QDialogs for user notifications options

class alignak_app.qobjects.dock.user_options.UserOptionsQDialog(parent=None)

Bases: PyQt5.QtWidgets.QDialog

Class who create options QDialog

get_notifications_widget(item_type, options)

Create QWidget with options and their icons

Parameters:
  • item_type (str) – define item type for options: host or service
  • options (list) – list of notification options
Returns:

QWidget with options and icons

Return type:

QWidget

static get_selected_options(options)

Return the options who are selected or not

Parameters:
  • item_type (str) – type of item we want options
  • options (list) – options for the wanted item type
Returns:

dict of options selected

Return type:

dict

initialize(item_type, options)

Initialize QDialog with App widget logo and options QWidget

Parameters:
  • item_type (str) – define item type for options: host or service
  • options (list) – list of notification options
alignak_app.qobjects.dock.user_options.show_options_dialog(item_type, notification_options)

Show the UserOptionsQDialog

Parameters:
  • item_type (str) – type of item we want options
  • notification_options (list) – options for the wanted item type

Buttons

Buttons manage creation of QWidgets with QPush butttons for:

  • Hosts Synthesys View
  • Problems view
  • User widget
  • Webui to reach Alignak-Webui
class alignak_app.qobjects.dock.buttons.ButtonsQWidget(parent=None)

Bases: PyQt5.QtWidgets.QWidget

Class who create buttons for Dock QWidget

initialize()

Initialize QWidget

open_user_widget()

Show UserQWidget

update_widget()

Update the QWidget buttons

Dock

Dock manage creation of QWidget for Dock (Right part)

class alignak_app.qobjects.dock.dock.DockQWidget(parent=None)

Bases: PyQt5.QtWidgets.QWidget

Class who create QWidgets for dock

initialize()

Initialize dock QWidget

send_spy_events()

Send event for one host spied

Events

Events manage creation QWidget for events

class alignak_app.qobjects.dock.events.EventItem

Bases: PyQt5.QtWidgets.QListWidgetItem

Class who create an event QListWidgetItem

close_item()

Hide items when timer is finished

static get_color_event()

Return corresponding color of event type

Parameters:event_type (str) – the type of event
Returns:the associated color with the event
Return type:str
initialize(event_type, msg, timer=False, spied_on=False, host=None)

Initialize QListWidgetItem

Parameters:
  • event_type (str) – the type of event: OK, DOWN, ACK, …
  • msg (str) – message of event
  • timer – timer to hide event at end of time
  • spied_on (bool) – make event spy able
  • host (str) – _id of host. Only necessary if “be_spied” is True
class alignak_app.qobjects.dock.events.EventsQWidget

Bases: PyQt5.QtWidgets.QWidget

Class who create QWidget for events

add_event(event_type, msg, timer=False, spied_on=False, host=None)

Add event to events list

Parameters:
  • event_type (str) – the type of event: OK, DOWN, ACK, …
  • msg (str) – message of event
  • timer – timer to hide event at end of time
  • spied_on (bool) – make event spy able
  • host (str) – data of host. Only necessary if “be_spied” is True
initialize()

Intialize QWidget

remove_event(item=None)

Remove item when user double click on an item

Parameters:item (EventItem) – item to remove, else remove the current row
remove_timer_event(event)

Remove EventItem with timer

Parameters:event (EventItem) – EventItem with timer
send_datamanager_events()

Add events stored in DataManager

alignak_app.qobjects.dock.events.get_events_widget()

Return EventsQWidget instance

Returns:EventsQWidget instance
Return type:EventsQWidget
alignak_app.qobjects.dock.events.init_event_widget()

Initialize the global EventsQWidget. Used for drag & drop and send events

alignak_app.qobjects.dock.events.send_event(event_type, msg, timer=False, spied_on=False, host=None)

Access function to simplify code in rest of application

Parameters:event_type – type of event, define color of EventItem()
  • green: [OK, UP]
  • blue: [UNKNOWN, INFO]
  • orange: [WARNING, UNREACHABLE, WARN]
  • red’: [DOWN, CRITICAL, ALERT]
  • yellow: [ACK]
  • yellow: [DOWNTIME]
  • yellow: [TODO]
Parameters:
  • msg (str) – message of event
  • timer – timer to hide event at end of time
  • spied_on (bool) – make event spy able
  • host (str) – _id of host. Only necessary if “spied_on” is True

Livestate

Livestate manage creation fo QWidget to resume number of:

  • Number of hosts monitored and in problem
  • Number of services monitored and in problem
  • Number of item monitored and in problems
class alignak_app.qobjects.dock.livestate.LivestateQWidget

Bases: PyQt5.QtWidgets.QWidget

Class who display items livestate: hosts, services and number of problems

get_item_type_widget(item_type, problem_nb, total_nb)

Create and return QWidget with backend data

Parameters:
  • item_type (str) – type of item: host, service, problem
  • problem_nb (int) – number of problems for item type
  • total_nb (int) – total number of item type
Returns:

widget with its data

Return type:

QWidget

initialize()

Initialize QWidget

paintEvent(_)

Override paintEvent to paint background

update_labels()

Update QLabels of QWidget

Spy

Spy manage creation of QWidget for host items who are spied

class alignak_app.qobjects.dock.spy.SpyQListWidget

Bases: PyQt5.QtWidgets.QListWidget

Class who create QListWidget for spied hosts

add_spy_host(host_id)

Add a host to spied list and create corresponding EventItem()

Parameters:host_id (str) – “_id” of host to spy
dragMoveEvent(event)
Override dragMoveEvent.
Only accept EventItem() objects who are “spied_on” and not already spied
Parameters:event – event triggered when something move
dropEvent(event)
Override dropEvent.
Get dropped item data, create a new one, and delete the one who is in EventsQWidget
Parameters:event – event triggered when something is dropped
class alignak_app.qobjects.dock.spy.SpyQWidget

Bases: PyQt5.QtWidgets.QWidget

Class who create QWidget for spied hosts

initialize()

Intialize QWidget

remove_event()

Remove item when user double click on an item

User

User manage creation of QWidget who display user profile who use Alignak-app

class alignak_app.qobjects.dock.user.UserQWidget(parent=None)

Bases: PyQt5.QtWidgets.QWidget

Class who create QWidget for User profile.

enable_notifications(notification_type, btn_state)

Enable notification for the wanted type: hosts or services

get_hosts_notif_widget()

Create and return notification QWidget for hosts

Returns:hosts notification QWidget
Return type:QWidget
get_informations_widget()

Create and return QWidget with user informations

Returns:main QWidget
Return type:QWidget
get_notes_scrollarea()

Return QScrollArea widget for user notes

Returns:user notes QScrollArea
Return type:QScrollArea
get_notifications_widget()

Create and return notification QWidget for hosts and services

Returns:notifications QWidget
Return type:QWidget
get_services_notif_widget()

Create and return notification QWidget for services

Returns:services notification QWidget
Return type:QWidget
initialize()

Initialize User QWidget

patch_data()

Hide and show QLabel for notes or PATCH password

static show_token_dialog()

Show TokenQDialog

update_widget()

Update UserQWidget

Login

The Login package contains classes who manage Alignak-app login

Login

Login manage creation of QDialog for user login

class alignak_app.qobjects.login.login.LoginQDialog(parent=None)

Bases: PyQt5.QtWidgets.QDialog

Class who create login QDialog.

accept_login()

Accept Login or not if backend is connected

create_widget()

Create widget login

static handle_server()

Handle for server button

mouseMoveEvent(event)

QWidget.mousePressEvent(QMouseEvent)

mousePressEvent(event)

QWidget.mousePressEvent(QMouseEvent)

showEvent(_)

QDialog.showEvent(QShowEvent)

Server

Server manage creation of QDialog for Alignak backend server settings

class alignak_app.qobjects.login.server.ServerQDialog(parent=None)

Bases: PyQt5.QtWidgets.QDialog

Class who create Server QDialog.

initialize_dialog()

Initialize Server QDialog

mouseMoveEvent(event)

QWidget.mousePressEvent(QMouseEvent)

mousePressEvent(event)

QWidget.mousePressEvent(QMouseEvent)

Panel (Left part)

The Panel package contains classes who create Panel UI

Panel

Panel manage creation of QWidget for Panel (Left part)

class alignak_app.qobjects.panel.panel.PanelQWidget(parent=None)

Bases: PyQt5.QtWidgets.QWidget

Class who manage Panel with Host and Services QWidgets

Add all hosts to QLineEdit and set QCompleter

Parameters:hostnames_list (list) – list of host names
display_host()

Display and update HostQWidget

dragEnterEvent(event)

Override dragEnterEvent.

Parameters:event – event triggered when something enter
dragMoveEvent(event)
Override dragMoveEvent.
Only accept EventItem() objects who are “spied_on” and not already spied
Parameters:event – event triggered when something move
dropEvent(event)
Override dropEvent.
Get dropped item data, create a new one, and delete the one who is in EventsQWidget
Parameters:event – event triggered when something is dropped
get_search_widget()

Create and return the search QWidget

Returns:search QWidget
Return type:QWidget
get_synthesis_widget()

Return synthesis QWidget()

Returns:synthesis QWidget()
Return type:QWidget
initialize(spy_widget)

Create the QWidget with its items and layout.

Parameters:spy_widget (alignak_app.pyqt.dock.widgets.spy.SpyQWidget) – SpyQWidget to allow HostQWidget add spied host
spy_host()

Spy host who is available in line_search QLineEdit

Dashboard

Dashboard manage the creation of QWidgets to display number of:

  • Each states of Hosts items
  • Each states of Services items
class alignak_app.qobjects.panel.dashboard.DashboardQWidget(parent=None)

Bases: PyQt5.QtWidgets.QWidget

Class who manage Host and Services resume QWidgets with number of:

  • Hosts: UP, UNREACHABLE, DOWN
  • Services: OK, WARNING, CRITICAL, UNKNWON, UNREACHABLE
  • Hosts and services: NOT_MONITORED, ACKNOWLEDGED, DOWNTIMED
get_host_resume_widget()

Return Host resume QWidget

get_services_resume_widget()

Return Services resume QWidget

initialize()

Initialize QWidget

open_item_type_url(item_type)

Retrieve sender to send right endpoint to open_url() function for item type

Parameters:item_type (str) – type of item: hosts | services
update_dashboard()

Update number of items in dashboard

History

History manage creation of QWidget to display history of a host

class alignak_app.qobjects.panel.history.HistoryQWidget(parent=None)

Bases: PyQt5.QtWidgets.QWidget

Class who create the History QWidget for host

static get_history_widget_model(hostname)

Create and return event QWidgets

Parameters:
  • history_event (dict) – event of history given by backend
  • hostname (str) – name of host
Returns:

history Qwidget model with data

Return type:

QWidget

initialize(hostname, host_history)

Initialize History QWidget

Parameters:
  • hostname (str) – name of the host
  • host_history (History) – history of host

Host

Host manage creation of QWidget to display host data

class alignak_app.qobjects.panel.host.HostQWidget(parent=None)

Bases: PyQt5.QtWidgets.QWidget

Class who create QWidget to display host data

get_actions_widget()

Return QWidget with actions buttons

Returns:widget with buttons
Return type:QWidget
get_host_icon_widget()

Return QWidget with overall icon state and host name

Returns:widget with host name and icon
Return type:QWidget
get_last_check_widget()

Return QWidget with last check data

Returns:widget with last check data
Return type:QWidget
get_notes_output_widget()

Return QWidget with output and notes data

Returns:widget with host output and notes
Return type:QWidget
get_variables_widget()

Return QWidget with host variables

Returns:widget with host variables
Return type:QWidget
initialize()

Initialize QWidget

patch_host_checks(check_type, state)

Patch the host check: ‘active_checks_enabled’ | ‘passive_checks_enabled’

Parameters:
  • check_type (str) – type of check: ‘active_checks_enabled’ | ‘passive_checks_enabled’
  • state (bool) – state of Toggle button
set_data(hostname)

Set data of host and service

Parameters:hostname (str) – name of host to display
show_history()

Create and show HistoryQWidget

update_host(hostname=None)

Update HostQWidget data and QLabels

Parameters:hostname (str) – name of host who is display

Number Services

Number Services manage creation of QWidget to display number of host services, for each state

class alignak_app.qobjects.panel.number_services.NumberServicesQWidget(parent=None)

Bases: PyQt5.QtWidgets.QWidget

Class who create QWidget number of services of a host

initialize()

Initialize QWidget

update_widget(services_items, host_name)

Update QWidget

Parameters:
  • services_items (list) – list of Service items
  • host_name (str) – name of host attached to services

Problems

Problems manage creation of QWidget to display problems found in Alignak backend:

  • Hosts: DOWN
  • Services: WARNING, CRITICAL, UNKNOWN
class alignak_app.qobjects.panel.problems.ProblemsQWidget(parent=None)

Bases: PyQt5.QtWidgets.QWidget

Class who create Problems QWidget

static get_icon_widget(state)

Return QWidget with corresponding icon to item state

Parameters:
  • item_type (str) – type of item: host | service
  • state (str) – state of item
Returns:

QWidget with corresponding icon

Return type:

QWidget

get_problems_widget_title()

Return QWidget title with number of problems and refresh QPushButton

Returns:QWidget with number of problems
Return type:QWidget
get_table_items_problem(item)

Return list of QWidgets and QTableWidgetItem

Parameters:item (alignak_app.core.models.host.Host | alignak_app.core.models.service.Service) – ItemModel instance with its data
Returns:list of QWidgets and QTableWidgetItem
Return type:list
initialize()

Initialize QWidget

update_problems_data()

Update data of QTableWidget and problems title

Service

Service manage creation of QWidget to display service data

class alignak_app.qobjects.panel.service.ServiceDataQWidget(parent=None)

Bases: PyQt5.QtWidgets.QWidget

Class who create QWidget with service data

get_actions_widget()

Return QWidget with actions buttons

Returns:widget with buttons
Return type:QWidget
get_last_check_widget()

Return QWidget with last check data

Returns:widget with last check data
Return type:QWidget
get_service_icon_widget()

Return QWidget with its icon and name

Returns:widget with icon and name
Return type:QWidget
initialize()

Initialize QWidget

periodic_refresh()

Refresh QWidget periodically

update_widget(service=None)

Update ServiceDataQWidget

Parameters:service (alignak_app.core.models.service.Service) – Service item with its data

Service Tree Item

Service Tree Item manage creation of QTreeWidgetItem(s) to store and display Service item data

class alignak_app.qobjects.panel.service_tree_item.ServiceTreeItem(parent=None)

Bases: PyQt5.QtWidgets.QTreeWidgetItem

Class who create QTreeWidgetItem with service data

initialize(service_item)

Initialize the QTreeWidgetItem

Parameters:service_item (alignak_app.core.models.service.Service) – service item with its data
update_item()

Update QIcon of service

Services

Services manage creation of QWidget to display the services

class alignak_app.qobjects.panel.services.ServicesQWidget(parent=None)

Bases: PyQt5.QtWidgets.QWidget

Class wo create services QWidget

initialize()

Initialize QWidget

set_data(hostname)

Set data of host and service

Parameters:hostname (str) – name of host to display
update_service_data()

Update ServiceDataqWidget

update_widget()

Update the service QWidget

Systray

The Systray package contains classes who create QSystemTrayIcon UI.

QActions Factory

QAction Factory manage creation of QActions for TrayIcon.

class alignak_app.qobjects.systray.qactions_factory.QActionFactory

Bases: object

Create QActions with its icon and content

create(name, content, parent)

Create QAction

get_action(name)

Return QAction

Parameters:name (str) – name of the QAction
Returns:wanted QAction
Return type:QAction

Tray Icon

Tray Icon manage the creation of QSystemTrayIcon for Alignak-app menus

class alignak_app.qobjects.systray.tray_icon.TrayIcon(icon, parent=None)

Bases: PyQt5.QtWidgets.QSystemTrayIcon

Class who create QMenu and QAction.

add_about_menu()

Create AppAbout QWidget and “about” action.

add_alignak_menu()

Create “dock” action

add_reload_menu()

Create “reload” action

build_menu()

Initialize and create each action of menu.

check_connection()

Check periodically connection for App

create_quit_action()

Create quit action.

static quit_app()

Quit application and close all widgets handle by application

static reload_configuration()

Reload configuration

QThreads

The QThreads package contains classes who manage application threads

Backend Thread

Backend Thread manage creation of QThread for backend requests

class alignak_app.qthreads.thread.BackendQThread(thread, data=None)

Bases: PyQt5.QtCore.QThread

Class who create a QThread to trigger requests

run()

Run the QThread. Trigger actions depending on the selected thread_name

Thread Manager

Thread Manager manage creation of QObject for launched threads

class alignak_app.qthreads.threadmanager.ThreadManager(parent=None)

Bases: PyQt5.QtCore.QObject

Class who create BackendQThreads periodically, to request on Alignak Backend endpoints

add_priority_thread(thread_name, data)

Launch a thread with higher priority (doesn’t wait launch_threads() function)

Parameters:
  • thread_name (str) – name of priority thread
  • data (dict) – data to give to thread for request
clean_threads()

Clean current BackendQThreads

get_threads_to_launch()

Return the threads_to_launch to run in BackendQRunnable

Returns:threads_to_launch to run
Return type:list
launch_threads()

Launch periodically threads

stop_priority_threads()

Stop priority threads

stop_threads()

Stop ThreadManager and close all running BackendQThreads