%global _empty_manifest_terminate_build 0 Name: python-puppetboard Version: 4.3.0 Release: 1 Summary: Web frontend for PuppetDB License: Apache License 2.0 URL: https://github.com/voxpupuli/puppetboard Source0: https://mirrors.nju.edu.cn/pypi/web/packages/ba/37/d2e9982f5f62f6d3743dba153b4d35eeaf478e12d6345bf87b4681657062/puppetboard-4.3.0.tar.gz BuildArch: noarch Requires: python3-certifi Requires: python3-charset-normalizer Requires: python3-click Requires: python3-commonmark Requires: python3-Flask Requires: python3-Flask-APScheduler Requires: python3-Flask-Caching Requires: python3-Flask-WTF Requires: python3-idna Requires: python3-itsdangerous Requires: python3-Jinja2 Requires: python3-MarkupSafe Requires: python3-packaging Requires: python3-pyparsing Requires: python3-pypuppetdb Requires: python3-requests Requires: python3-typing-extensions Requires: python3-urllib3 Requires: python3-Werkzeug Requires: python3-WTForms Requires: python3-zipp Requires: python3-pep8 Requires: python3-coverage Requires: python3-mock Requires: python3-pytest Requires: python3-pylint Requires: python3-pytest-pylint Requires: python3-pytest-cov Requires: python3-pytest-mock Requires: python3-pytest-mypy Requires: python3-pytest-randomly Requires: python3-cov-core Requires: python3-beautifulsoup4 Requires: python3-bandit Requires: python3-mypy Requires: python3-types-requests Requires: python3-types-setuptools Requires: python3-types-toml %description ``` ``` PUPPETDB_CERT=LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ== ``` For information about how to generate the correct keys please refer to the [pypuppetdb documentation](https://pypuppetdb.readthedocs.io/en/latest/connecting.html#ssl). Alternatively it is possible to explicitly specify the protocol to be used setting the `PUPPETDB_PROTO` variable. Other settings that might be interesting, in no particular order: - `FAVORITE_ENVS`: an ordered list of Puppet environment names that will be shown immediately after "All Environments" and before other environments (which are sorted by name) in the dropdown for choosing the environment shown in the top-right of the UI. Environments listed here that do not really exist in your deployment are silently ignored. - `SHOW_ERROR_AS`: `friendly` or `raw`. The former makes Puppet run errors in Report and Failures views shown in a modified, (arguably) more user-friendly form. The latter shows them as they are. Defaults to `friendly`. - `CODE_PREFIX_TO_REMOVE`: what code path that should be shortened in "Friendly errors" to "…" for readability. A regexp. Defaults to `/etc/puppetlabs/code/environments(/.*?/modules)?`. - `SECRET_KEY`: Refer to [Flask documentation](https://flask.palletsprojects.com/en/2.0.x/quickstart/#sessions), section "How to generate good secret keys" for more info. Defaults to a random 64-char string generated by `secrets.token_hex(32)`, prepended with a `default-` string. **Warning** Leaving SECRET_KEY set to a default value WILL cause issues when the app is restarted or has more than 1 replica (f.e. uWSGI workers, k8s replicas etc.) and some features (in particular: queries) are used. Please set SECRET_KEY to your own value, the same for all app replicas. This will be REQUIRED starting with Puppetboard 5.x which will NOT contain the default value anymore. Please see [#721](https://github.com/voxpupuli/puppetboard/issues/721) for more info. - `PUPPETDB_TIMEOUT`: Defaults to 20 seconds, but you might need to increase this value. It depends on how big the results are when querying PuppetDB. This behaviour will change in a future release when pagination will be introduced. - `UNRESPONSIVE_HOURS`: The amount of hours since the last check-in after which a node is considered unresponsive. - `LOGLEVEL`: A string representing the loglevel. It defaults to `'info'` but can be changed to `'warning'` or `'critical'` for less verbose logging or `'debug'` for more information. - `ENABLE_QUERY`: Defaults to `True` causing a Query tab to show up in the web interface allowing users to write and execute arbitrary queries against a set of endpoints in PuppetDB. Change this to `False` to disable this. See `ENABLED_QUERY_ENDPOINTS` to fine-tune which endpoints are allowed. - `ENABLED_QUERY_ENDPOINTS`: If `ENABLE_QUERY` is `True`, allow to fine tune the endpoints of PuppetDB APIs that can be queried. It must be a list of strings of PuppetDB endpoints for which the query is enabled. See the `QUERY_ENDPOINTS` constant in the `puppetboard.app` module for a list of the available endpoints. - `GRAPH_TYPE`: Specify the type of graph to display. Default is pie, other good option is donut. Other choices can be found here: \_C3JS\_documentation\` - `GRAPH_FACTS`: A list of fact names to tell PuppetBoard to generate a pie-chart on the fact page. With some fact values being unique per node, like ipaddress, uuid, and serial number, as well as structured facts it was no longer feasible to generate a graph for everything. - `INVENTORY_FACTS`: A list of tuples that serve as the column header and the fact name to search for to create the inventory page. If a fact is not found for a node then `undef` is printed. - `INVENTORY_FACT_TEMPLATES`: A mapping between fact name and jinja template to customize display - `ENABLE_CATALOG`: If set to `True` allows the user to view a node's latest catalog. This includes all managed resources, their file-system locations and their relationships, if available. Defaults to `False`. - `REFRESH_RATE`: Defaults to `30` the number of seconds to wait until the index page is automatically refreshed. - `DEFAULT_ENVIRONMENT`: Defaults to `'production'`, as the name suggests, load all information filtered by this environment value. - `REPORTS_COUNT`: Defaults to `10` the limit of the number of reports to load on the node or any reports page. - `OFFLINE_MODE`: If set to `True` load static assets (jquery, semantic-ui, etc) from the local web server instead of a CDN. Defaults to `False`. - `DAILY_REPORTS_CHART_ENABLED`: Enable the use of daily chart graphs when looking at dashboard and node view. - `DAILY_REPORTS_CHART_DAYS`: Number of days to show history for on the daily report graphs. - `DISPLAYED_METRICS`: Metrics to show when displaying node summary. Example: `'resources.total'`, `'events.noop'`. - `TABLE_COUNT_SELECTOR`: Configure the dropdown to limit number of hosts to show per page. - `LITTLE_TABLE_COUNT`: Default number of reports to show when when looking at a node. - `NORMAL_TABLE_COUNT`: Default number of nodes to show when displaying reports and catalog nodes. - `LOCALISE_TIMESTAMP`: If set to `True` then timestamps are shown using your browser's timezone. Otherwise UTC is used. Defaults to `True`. - `WITH_EVENT_NUMBERS`: If set to `True` then Overview and Nodes list shows exact number of changed resources in the last report. Otherwise shows only 'some' string if there are resources with given status. Setting this to `False` gives performance benefits, especially in big Puppet environments (more than few hundreds of nodes). Defaults to `True`. - `ENABLE_CLASS`: If set to `True` allows the user to view the number of resource events (number of changed resources in the last report) grouped by class. The resource events are grouped by their status ('failure', 'success', 'noop'). - `CLASS_EVENTS_STATUS_COLUMNS`: A mapping between the status of the resource events and the name of the columns of the table to display. - `CACHE_TYPE`: Specifies which type of caching object to use when `SCHEDULER_ENABLED` is set to `True`. The cache is used for the classes view (`ENABLE_CLASS` is set to `True`) which requires parsing the events of all the latest reports to group them by Puppet class. If the last report is present in the cache, we do not parse the events, which avoids unnecessary processing. If you configure more than one worker, you must use a shared backend (e.g. `MemcachedCache`) to allow the sharing of the cache between the processes. Indeed, the `SimpleCache` type does not allow sharing the cache between processes, it uses the process memory to store the cache. Defaults to `SimpleCache`. - `CACHE_DEFAULT_TIMEOUT`: Cache lifetime in second. Defaults to `3600`. - `SCHEDULER_ENABLED`: If set to `True` then a scheduler instance is created in order to execute scheduled jobs. Defaults to `False`. - `SCHEDULER_JOBS`: List of the scheduled jobs to trigger within a worker. A job can for example be used to compute a result to be cached. This is the case for the classes view which uses a job to pre-compute at regular intervals the results to be displayed. Each scheduled job must contain the following fields: `id`, `func`, `trigger`, `seconds`. - `SCHEDULER_LOCK_BIND_PORT`: Specifies an available port that allows a single worker to listen on it. This allows to configure scheduled jobs in a single worker. Defaults to `49100`. ## Getting Help For questions or bug reports you can file an [issue](https://github.com/voxpupuli/puppetboard/issues). ## Contributing ### Development Puppetboard relies on the [pypuppetdb](https://pypi.org/project/pypuppetdb/) library to fetch data from PuppetDB and is built with the help of the [Flask](https://flask.palletsprojects.com) microframework. If you wish to hack on Puppetboard you should fork/clone the Github repository and then install the requirements through: ```bash pip install --upgrade wheel setuptools python setup.py develop pip install --upgrade -r requirements-test.txt mypy --install-types --non-interactive puppetboard/ test/ ``` You're advised to do this inside a virtualenv specifically created to work on Puppetboard as to not pollute your global Python installation. You can run the tests with: ```bash pytest --cov=. --cov-report=xml --strict-markers --mypy puppetboard test pylint --errors-only puppetboard test ``` You can run the app it in development mode by simply executing: ```bash flask run ``` You can specify listening host and port with environment variables or command line otions: ```bash export FLASK_RUN_HOST=0.0.0.0 export FLASK_RUN_PORT=8000 flask run ``` or ```bash flask run --host '0.0.0.0' --port '8000' ``` Use `PUPPETBOARD_SETTINGS` to change the different settings or patch `default_settings.py` directly. Take care not to include your local changes on that file when submitting patches for Puppetboard. Place a `settings.py` file inside the base directory of the git repository that will be used, if the environment variable is not set. We welcome contributions to this project. However, there are a few ground rules contributors should be aware of. ### License This project is licensed under the Apache v2.0 License. As such, your contributions, once accepted, are automatically covered by this license. ### Commit messages Write decent commit messages. Don't use swear words and refrain from uninformative commit messages as 'fixed typo'. The preferred format of a commit message: docs/quickstart: Fixed a typo in the Nodes section. If needed, elaborate further on this commit. Feel free to write a complete blog post here if that helps us understand what this is all about. Fixes #4 and resolves #2. If you'd like a more elaborate guide on how to write and format your commit messages have a look at [this post by Tim Pope](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html). ## More Screenshots * Overview / Index / Homepage ![Overview / Index / Homepage](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/overview.png) * Nodes view, all active nodes ![Nodes view, all active nodes](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/nodes.png) * Single node page / overview ![Single node page / overview](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/node.png) * Report view ![Report view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/report.png) * Facts view ![Facts view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/facts.png) * Single fact, with graphs ![Single fact, with graphs](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/fact.png) * All nodes that have this fact with that value ![All nodes that have this fact with that value](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/fact_value.png) * Query view - results as table ![Query view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/query_result_table.png) * Query view - results as JSON ![Query view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/query_result_json.png) * Metrics view ![Metrics view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/metrics.png) * Single metric ![Single metric](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/metric.png) * Inventory view ![Inventory view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/inventory.png) * Classes view, group the resource events of the last reports by Puppet class ![Classes view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/classes.png) * Class view, list the nodes with almost one resource event for a given class ![Class view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/class.png) # Legal The app code is licensed under the [Apache License, Version 2.0](./LICENSE). The favicon has been created based on the icon created by [Jonathan Coutiño](https://thenounproject.com/ralts01/) under the [Attribution 3.0 Unported (CC BY 3.0) license](https://creativecommons.org/licenses/by/3.0/), downloaded from the [Noun Project](https://thenounproject.com). %package -n python3-puppetboard Summary: Web frontend for PuppetDB Provides: python-puppetboard BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-puppetboard ``` ``` PUPPETDB_CERT=LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ== ``` For information about how to generate the correct keys please refer to the [pypuppetdb documentation](https://pypuppetdb.readthedocs.io/en/latest/connecting.html#ssl). Alternatively it is possible to explicitly specify the protocol to be used setting the `PUPPETDB_PROTO` variable. Other settings that might be interesting, in no particular order: - `FAVORITE_ENVS`: an ordered list of Puppet environment names that will be shown immediately after "All Environments" and before other environments (which are sorted by name) in the dropdown for choosing the environment shown in the top-right of the UI. Environments listed here that do not really exist in your deployment are silently ignored. - `SHOW_ERROR_AS`: `friendly` or `raw`. The former makes Puppet run errors in Report and Failures views shown in a modified, (arguably) more user-friendly form. The latter shows them as they are. Defaults to `friendly`. - `CODE_PREFIX_TO_REMOVE`: what code path that should be shortened in "Friendly errors" to "…" for readability. A regexp. Defaults to `/etc/puppetlabs/code/environments(/.*?/modules)?`. - `SECRET_KEY`: Refer to [Flask documentation](https://flask.palletsprojects.com/en/2.0.x/quickstart/#sessions), section "How to generate good secret keys" for more info. Defaults to a random 64-char string generated by `secrets.token_hex(32)`, prepended with a `default-` string. **Warning** Leaving SECRET_KEY set to a default value WILL cause issues when the app is restarted or has more than 1 replica (f.e. uWSGI workers, k8s replicas etc.) and some features (in particular: queries) are used. Please set SECRET_KEY to your own value, the same for all app replicas. This will be REQUIRED starting with Puppetboard 5.x which will NOT contain the default value anymore. Please see [#721](https://github.com/voxpupuli/puppetboard/issues/721) for more info. - `PUPPETDB_TIMEOUT`: Defaults to 20 seconds, but you might need to increase this value. It depends on how big the results are when querying PuppetDB. This behaviour will change in a future release when pagination will be introduced. - `UNRESPONSIVE_HOURS`: The amount of hours since the last check-in after which a node is considered unresponsive. - `LOGLEVEL`: A string representing the loglevel. It defaults to `'info'` but can be changed to `'warning'` or `'critical'` for less verbose logging or `'debug'` for more information. - `ENABLE_QUERY`: Defaults to `True` causing a Query tab to show up in the web interface allowing users to write and execute arbitrary queries against a set of endpoints in PuppetDB. Change this to `False` to disable this. See `ENABLED_QUERY_ENDPOINTS` to fine-tune which endpoints are allowed. - `ENABLED_QUERY_ENDPOINTS`: If `ENABLE_QUERY` is `True`, allow to fine tune the endpoints of PuppetDB APIs that can be queried. It must be a list of strings of PuppetDB endpoints for which the query is enabled. See the `QUERY_ENDPOINTS` constant in the `puppetboard.app` module for a list of the available endpoints. - `GRAPH_TYPE`: Specify the type of graph to display. Default is pie, other good option is donut. Other choices can be found here: \_C3JS\_documentation\` - `GRAPH_FACTS`: A list of fact names to tell PuppetBoard to generate a pie-chart on the fact page. With some fact values being unique per node, like ipaddress, uuid, and serial number, as well as structured facts it was no longer feasible to generate a graph for everything. - `INVENTORY_FACTS`: A list of tuples that serve as the column header and the fact name to search for to create the inventory page. If a fact is not found for a node then `undef` is printed. - `INVENTORY_FACT_TEMPLATES`: A mapping between fact name and jinja template to customize display - `ENABLE_CATALOG`: If set to `True` allows the user to view a node's latest catalog. This includes all managed resources, their file-system locations and their relationships, if available. Defaults to `False`. - `REFRESH_RATE`: Defaults to `30` the number of seconds to wait until the index page is automatically refreshed. - `DEFAULT_ENVIRONMENT`: Defaults to `'production'`, as the name suggests, load all information filtered by this environment value. - `REPORTS_COUNT`: Defaults to `10` the limit of the number of reports to load on the node or any reports page. - `OFFLINE_MODE`: If set to `True` load static assets (jquery, semantic-ui, etc) from the local web server instead of a CDN. Defaults to `False`. - `DAILY_REPORTS_CHART_ENABLED`: Enable the use of daily chart graphs when looking at dashboard and node view. - `DAILY_REPORTS_CHART_DAYS`: Number of days to show history for on the daily report graphs. - `DISPLAYED_METRICS`: Metrics to show when displaying node summary. Example: `'resources.total'`, `'events.noop'`. - `TABLE_COUNT_SELECTOR`: Configure the dropdown to limit number of hosts to show per page. - `LITTLE_TABLE_COUNT`: Default number of reports to show when when looking at a node. - `NORMAL_TABLE_COUNT`: Default number of nodes to show when displaying reports and catalog nodes. - `LOCALISE_TIMESTAMP`: If set to `True` then timestamps are shown using your browser's timezone. Otherwise UTC is used. Defaults to `True`. - `WITH_EVENT_NUMBERS`: If set to `True` then Overview and Nodes list shows exact number of changed resources in the last report. Otherwise shows only 'some' string if there are resources with given status. Setting this to `False` gives performance benefits, especially in big Puppet environments (more than few hundreds of nodes). Defaults to `True`. - `ENABLE_CLASS`: If set to `True` allows the user to view the number of resource events (number of changed resources in the last report) grouped by class. The resource events are grouped by their status ('failure', 'success', 'noop'). - `CLASS_EVENTS_STATUS_COLUMNS`: A mapping between the status of the resource events and the name of the columns of the table to display. - `CACHE_TYPE`: Specifies which type of caching object to use when `SCHEDULER_ENABLED` is set to `True`. The cache is used for the classes view (`ENABLE_CLASS` is set to `True`) which requires parsing the events of all the latest reports to group them by Puppet class. If the last report is present in the cache, we do not parse the events, which avoids unnecessary processing. If you configure more than one worker, you must use a shared backend (e.g. `MemcachedCache`) to allow the sharing of the cache between the processes. Indeed, the `SimpleCache` type does not allow sharing the cache between processes, it uses the process memory to store the cache. Defaults to `SimpleCache`. - `CACHE_DEFAULT_TIMEOUT`: Cache lifetime in second. Defaults to `3600`. - `SCHEDULER_ENABLED`: If set to `True` then a scheduler instance is created in order to execute scheduled jobs. Defaults to `False`. - `SCHEDULER_JOBS`: List of the scheduled jobs to trigger within a worker. A job can for example be used to compute a result to be cached. This is the case for the classes view which uses a job to pre-compute at regular intervals the results to be displayed. Each scheduled job must contain the following fields: `id`, `func`, `trigger`, `seconds`. - `SCHEDULER_LOCK_BIND_PORT`: Specifies an available port that allows a single worker to listen on it. This allows to configure scheduled jobs in a single worker. Defaults to `49100`. ## Getting Help For questions or bug reports you can file an [issue](https://github.com/voxpupuli/puppetboard/issues). ## Contributing ### Development Puppetboard relies on the [pypuppetdb](https://pypi.org/project/pypuppetdb/) library to fetch data from PuppetDB and is built with the help of the [Flask](https://flask.palletsprojects.com) microframework. If you wish to hack on Puppetboard you should fork/clone the Github repository and then install the requirements through: ```bash pip install --upgrade wheel setuptools python setup.py develop pip install --upgrade -r requirements-test.txt mypy --install-types --non-interactive puppetboard/ test/ ``` You're advised to do this inside a virtualenv specifically created to work on Puppetboard as to not pollute your global Python installation. You can run the tests with: ```bash pytest --cov=. --cov-report=xml --strict-markers --mypy puppetboard test pylint --errors-only puppetboard test ``` You can run the app it in development mode by simply executing: ```bash flask run ``` You can specify listening host and port with environment variables or command line otions: ```bash export FLASK_RUN_HOST=0.0.0.0 export FLASK_RUN_PORT=8000 flask run ``` or ```bash flask run --host '0.0.0.0' --port '8000' ``` Use `PUPPETBOARD_SETTINGS` to change the different settings or patch `default_settings.py` directly. Take care not to include your local changes on that file when submitting patches for Puppetboard. Place a `settings.py` file inside the base directory of the git repository that will be used, if the environment variable is not set. We welcome contributions to this project. However, there are a few ground rules contributors should be aware of. ### License This project is licensed under the Apache v2.0 License. As such, your contributions, once accepted, are automatically covered by this license. ### Commit messages Write decent commit messages. Don't use swear words and refrain from uninformative commit messages as 'fixed typo'. The preferred format of a commit message: docs/quickstart: Fixed a typo in the Nodes section. If needed, elaborate further on this commit. Feel free to write a complete blog post here if that helps us understand what this is all about. Fixes #4 and resolves #2. If you'd like a more elaborate guide on how to write and format your commit messages have a look at [this post by Tim Pope](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html). ## More Screenshots * Overview / Index / Homepage ![Overview / Index / Homepage](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/overview.png) * Nodes view, all active nodes ![Nodes view, all active nodes](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/nodes.png) * Single node page / overview ![Single node page / overview](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/node.png) * Report view ![Report view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/report.png) * Facts view ![Facts view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/facts.png) * Single fact, with graphs ![Single fact, with graphs](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/fact.png) * All nodes that have this fact with that value ![All nodes that have this fact with that value](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/fact_value.png) * Query view - results as table ![Query view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/query_result_table.png) * Query view - results as JSON ![Query view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/query_result_json.png) * Metrics view ![Metrics view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/metrics.png) * Single metric ![Single metric](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/metric.png) * Inventory view ![Inventory view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/inventory.png) * Classes view, group the resource events of the last reports by Puppet class ![Classes view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/classes.png) * Class view, list the nodes with almost one resource event for a given class ![Class view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/class.png) # Legal The app code is licensed under the [Apache License, Version 2.0](./LICENSE). The favicon has been created based on the icon created by [Jonathan Coutiño](https://thenounproject.com/ralts01/) under the [Attribution 3.0 Unported (CC BY 3.0) license](https://creativecommons.org/licenses/by/3.0/), downloaded from the [Noun Project](https://thenounproject.com). %package help Summary: Development documents and examples for puppetboard Provides: python3-puppetboard-doc %description help ``` ``` PUPPETDB_CERT=LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ== ``` For information about how to generate the correct keys please refer to the [pypuppetdb documentation](https://pypuppetdb.readthedocs.io/en/latest/connecting.html#ssl). Alternatively it is possible to explicitly specify the protocol to be used setting the `PUPPETDB_PROTO` variable. Other settings that might be interesting, in no particular order: - `FAVORITE_ENVS`: an ordered list of Puppet environment names that will be shown immediately after "All Environments" and before other environments (which are sorted by name) in the dropdown for choosing the environment shown in the top-right of the UI. Environments listed here that do not really exist in your deployment are silently ignored. - `SHOW_ERROR_AS`: `friendly` or `raw`. The former makes Puppet run errors in Report and Failures views shown in a modified, (arguably) more user-friendly form. The latter shows them as they are. Defaults to `friendly`. - `CODE_PREFIX_TO_REMOVE`: what code path that should be shortened in "Friendly errors" to "…" for readability. A regexp. Defaults to `/etc/puppetlabs/code/environments(/.*?/modules)?`. - `SECRET_KEY`: Refer to [Flask documentation](https://flask.palletsprojects.com/en/2.0.x/quickstart/#sessions), section "How to generate good secret keys" for more info. Defaults to a random 64-char string generated by `secrets.token_hex(32)`, prepended with a `default-` string. **Warning** Leaving SECRET_KEY set to a default value WILL cause issues when the app is restarted or has more than 1 replica (f.e. uWSGI workers, k8s replicas etc.) and some features (in particular: queries) are used. Please set SECRET_KEY to your own value, the same for all app replicas. This will be REQUIRED starting with Puppetboard 5.x which will NOT contain the default value anymore. Please see [#721](https://github.com/voxpupuli/puppetboard/issues/721) for more info. - `PUPPETDB_TIMEOUT`: Defaults to 20 seconds, but you might need to increase this value. It depends on how big the results are when querying PuppetDB. This behaviour will change in a future release when pagination will be introduced. - `UNRESPONSIVE_HOURS`: The amount of hours since the last check-in after which a node is considered unresponsive. - `LOGLEVEL`: A string representing the loglevel. It defaults to `'info'` but can be changed to `'warning'` or `'critical'` for less verbose logging or `'debug'` for more information. - `ENABLE_QUERY`: Defaults to `True` causing a Query tab to show up in the web interface allowing users to write and execute arbitrary queries against a set of endpoints in PuppetDB. Change this to `False` to disable this. See `ENABLED_QUERY_ENDPOINTS` to fine-tune which endpoints are allowed. - `ENABLED_QUERY_ENDPOINTS`: If `ENABLE_QUERY` is `True`, allow to fine tune the endpoints of PuppetDB APIs that can be queried. It must be a list of strings of PuppetDB endpoints for which the query is enabled. See the `QUERY_ENDPOINTS` constant in the `puppetboard.app` module for a list of the available endpoints. - `GRAPH_TYPE`: Specify the type of graph to display. Default is pie, other good option is donut. Other choices can be found here: \_C3JS\_documentation\` - `GRAPH_FACTS`: A list of fact names to tell PuppetBoard to generate a pie-chart on the fact page. With some fact values being unique per node, like ipaddress, uuid, and serial number, as well as structured facts it was no longer feasible to generate a graph for everything. - `INVENTORY_FACTS`: A list of tuples that serve as the column header and the fact name to search for to create the inventory page. If a fact is not found for a node then `undef` is printed. - `INVENTORY_FACT_TEMPLATES`: A mapping between fact name and jinja template to customize display - `ENABLE_CATALOG`: If set to `True` allows the user to view a node's latest catalog. This includes all managed resources, their file-system locations and their relationships, if available. Defaults to `False`. - `REFRESH_RATE`: Defaults to `30` the number of seconds to wait until the index page is automatically refreshed. - `DEFAULT_ENVIRONMENT`: Defaults to `'production'`, as the name suggests, load all information filtered by this environment value. - `REPORTS_COUNT`: Defaults to `10` the limit of the number of reports to load on the node or any reports page. - `OFFLINE_MODE`: If set to `True` load static assets (jquery, semantic-ui, etc) from the local web server instead of a CDN. Defaults to `False`. - `DAILY_REPORTS_CHART_ENABLED`: Enable the use of daily chart graphs when looking at dashboard and node view. - `DAILY_REPORTS_CHART_DAYS`: Number of days to show history for on the daily report graphs. - `DISPLAYED_METRICS`: Metrics to show when displaying node summary. Example: `'resources.total'`, `'events.noop'`. - `TABLE_COUNT_SELECTOR`: Configure the dropdown to limit number of hosts to show per page. - `LITTLE_TABLE_COUNT`: Default number of reports to show when when looking at a node. - `NORMAL_TABLE_COUNT`: Default number of nodes to show when displaying reports and catalog nodes. - `LOCALISE_TIMESTAMP`: If set to `True` then timestamps are shown using your browser's timezone. Otherwise UTC is used. Defaults to `True`. - `WITH_EVENT_NUMBERS`: If set to `True` then Overview and Nodes list shows exact number of changed resources in the last report. Otherwise shows only 'some' string if there are resources with given status. Setting this to `False` gives performance benefits, especially in big Puppet environments (more than few hundreds of nodes). Defaults to `True`. - `ENABLE_CLASS`: If set to `True` allows the user to view the number of resource events (number of changed resources in the last report) grouped by class. The resource events are grouped by their status ('failure', 'success', 'noop'). - `CLASS_EVENTS_STATUS_COLUMNS`: A mapping between the status of the resource events and the name of the columns of the table to display. - `CACHE_TYPE`: Specifies which type of caching object to use when `SCHEDULER_ENABLED` is set to `True`. The cache is used for the classes view (`ENABLE_CLASS` is set to `True`) which requires parsing the events of all the latest reports to group them by Puppet class. If the last report is present in the cache, we do not parse the events, which avoids unnecessary processing. If you configure more than one worker, you must use a shared backend (e.g. `MemcachedCache`) to allow the sharing of the cache between the processes. Indeed, the `SimpleCache` type does not allow sharing the cache between processes, it uses the process memory to store the cache. Defaults to `SimpleCache`. - `CACHE_DEFAULT_TIMEOUT`: Cache lifetime in second. Defaults to `3600`. - `SCHEDULER_ENABLED`: If set to `True` then a scheduler instance is created in order to execute scheduled jobs. Defaults to `False`. - `SCHEDULER_JOBS`: List of the scheduled jobs to trigger within a worker. A job can for example be used to compute a result to be cached. This is the case for the classes view which uses a job to pre-compute at regular intervals the results to be displayed. Each scheduled job must contain the following fields: `id`, `func`, `trigger`, `seconds`. - `SCHEDULER_LOCK_BIND_PORT`: Specifies an available port that allows a single worker to listen on it. This allows to configure scheduled jobs in a single worker. Defaults to `49100`. ## Getting Help For questions or bug reports you can file an [issue](https://github.com/voxpupuli/puppetboard/issues). ## Contributing ### Development Puppetboard relies on the [pypuppetdb](https://pypi.org/project/pypuppetdb/) library to fetch data from PuppetDB and is built with the help of the [Flask](https://flask.palletsprojects.com) microframework. If you wish to hack on Puppetboard you should fork/clone the Github repository and then install the requirements through: ```bash pip install --upgrade wheel setuptools python setup.py develop pip install --upgrade -r requirements-test.txt mypy --install-types --non-interactive puppetboard/ test/ ``` You're advised to do this inside a virtualenv specifically created to work on Puppetboard as to not pollute your global Python installation. You can run the tests with: ```bash pytest --cov=. --cov-report=xml --strict-markers --mypy puppetboard test pylint --errors-only puppetboard test ``` You can run the app it in development mode by simply executing: ```bash flask run ``` You can specify listening host and port with environment variables or command line otions: ```bash export FLASK_RUN_HOST=0.0.0.0 export FLASK_RUN_PORT=8000 flask run ``` or ```bash flask run --host '0.0.0.0' --port '8000' ``` Use `PUPPETBOARD_SETTINGS` to change the different settings or patch `default_settings.py` directly. Take care not to include your local changes on that file when submitting patches for Puppetboard. Place a `settings.py` file inside the base directory of the git repository that will be used, if the environment variable is not set. We welcome contributions to this project. However, there are a few ground rules contributors should be aware of. ### License This project is licensed under the Apache v2.0 License. As such, your contributions, once accepted, are automatically covered by this license. ### Commit messages Write decent commit messages. Don't use swear words and refrain from uninformative commit messages as 'fixed typo'. The preferred format of a commit message: docs/quickstart: Fixed a typo in the Nodes section. If needed, elaborate further on this commit. Feel free to write a complete blog post here if that helps us understand what this is all about. Fixes #4 and resolves #2. If you'd like a more elaborate guide on how to write and format your commit messages have a look at [this post by Tim Pope](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html). ## More Screenshots * Overview / Index / Homepage ![Overview / Index / Homepage](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/overview.png) * Nodes view, all active nodes ![Nodes view, all active nodes](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/nodes.png) * Single node page / overview ![Single node page / overview](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/node.png) * Report view ![Report view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/report.png) * Facts view ![Facts view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/facts.png) * Single fact, with graphs ![Single fact, with graphs](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/fact.png) * All nodes that have this fact with that value ![All nodes that have this fact with that value](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/fact_value.png) * Query view - results as table ![Query view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/query_result_table.png) * Query view - results as JSON ![Query view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/query_result_json.png) * Metrics view ![Metrics view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/metrics.png) * Single metric ![Single metric](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/metric.png) * Inventory view ![Inventory view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/inventory.png) * Classes view, group the resource events of the last reports by Puppet class ![Classes view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/classes.png) * Class view, list the nodes with almost one resource event for a given class ![Class view](https://raw.githubusercontent.com/voxpupuli/puppetboard/master/screenshots/class.png) # Legal The app code is licensed under the [Apache License, Version 2.0](./LICENSE). The favicon has been created based on the icon created by [Jonathan Coutiño](https://thenounproject.com/ralts01/) under the [Attribution 3.0 Unported (CC BY 3.0) license](https://creativecommons.org/licenses/by/3.0/), downloaded from the [Noun Project](https://thenounproject.com). %prep %autosetup -n puppetboard-4.3.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-puppetboard -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri May 05 2023 Python_Bot - 4.3.0-1 - Package Spec generated