diff --git a/.gitignore b/.gitignore index d46dee9..3593b75 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,7 @@ private/ # IntelliJ IDEA (IDE) config .idea/ + +Gemfile.lock +.vendor +.bundle diff --git a/CHANGELOG.md b/CHANGELOG.md index 10888ea..b2d7bf8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,23 @@ -## Changelog +# Changelog + +All notable changes to this project will be documented in this file. + +## [3.2.0](https://github.com/voxpupuli/pypuppetdb/tree/3.2.0) (2023-10-08) + +[Full Changelog](https://github.com/voxpupuli/pypuppetdb/compare/3.1.0...3.2.0) + +**Merged pull requests:** + +- CI: Run on PRs and merges [\#252](https://github.com/voxpupuli/pypuppetdb/pull/252) ([bastelfreak](https://github.com/bastelfreak)) +- purge not required empty newlines [\#242](https://github.com/voxpupuli/pypuppetdb/pull/242) ([bastelfreak](https://github.com/bastelfreak)) +- add dummy CI job we can depend on [\#241](https://github.com/voxpupuli/pypuppetdb/pull/241) ([bastelfreak](https://github.com/bastelfreak)) +- add dependabot config [\#240](https://github.com/voxpupuli/pypuppetdb/pull/240) ([bastelfreak](https://github.com/bastelfreak)) +- Update sphinx requirement from \<6.0,\>=4.3 to \>=4.3,\<8.0 [\#239](https://github.com/voxpupuli/pypuppetdb/pull/239) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Update urllib3 requirement from \<2.0,\>=1.26 to \>=1.26,\<3.0 [\#238](https://github.com/voxpupuli/pypuppetdb/pull/238) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Modernize the code [\#235](https://github.com/voxpupuli/pypuppetdb/pull/235) ([gdubicki](https://github.com/gdubicki)) + +## [3.1.0](https://github.com/voxpupuli/pypuppetdb/tree/3.1.0) (2022-10-27) -3.1.0 ------ - Confirm support for Python 3.11 (final). 3.0.0 @@ -357,3 +373,6 @@ implemented. That will be the focus of the next release. ----- Initial release. Implements most of the v2 API. + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..74e21e4 --- /dev/null +++ b/Gemfile @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +source ENV['GEM_SOURCE'] || 'https://rubygems.org' + +group :release, optional: true do + gem 'faraday-retry', '~> 2.1', require: false + gem 'github_changelog_generator', '~> 1.16.4', require: false +end diff --git a/HISTORY.md b/HISTORY.md new file mode 100644 index 0000000..2cb40f5 --- /dev/null +++ b/HISTORY.md @@ -0,0 +1,357 @@ +## [3.1.0](https://github.com/voxpupuli/pypuppetdb/tree/3.1.0) (2022-10-27) + + - Confirm support for Python 3.11 (final). + +3.0.0 +----- +This is a maintenance release. + +The major version is bumped because of: + - dropped support for PuppetDBs < 5.2.0 (Puppet 4 has reached its end-of-life in October 2018), + - dropped support for Python 3.6 (end-of-life in December 2021), + - the required [Requests](https://requests.readthedocs.io/en/latest/) version bumped to the current latest. + +2.5.2 +----- + - Remove harmful terminology, following [the Puppetlabs components name changes](https://puppet.com/blog/removing-harmful-terminology-from-our-products/) ([#216](https://github.com/voxpupuli/pypuppetdb/pull/216)) + - Use built-in unittest.mock instead of mock ([#228](https://github.com/voxpupuli/pypuppetdb/pull/228)) + - Build and test dependencies updates. + +Thanks to the following contributors of this release: [@pgajdos](https://github.com/pgajdos). + +2.5.1 +----- + + - Fix TypeError exception thrown by `BaseAPI._query()` when using debug logging. + +Thanks to Ben Roberts for his contribution! + +2.5.0 +----- + + - Python 3.10 added as a supported version + ([#213](https://github.com/voxpupuli/pypuppetdb/pull/213)) + +2.4.0 +----- + + - Added PQL support with `pql()` method + (PR [#201](https://github.com/voxpupuli/pypuppetdb/pull/201), + fixes [#167](https://github.com/voxpupuli/pypuppetdb/issues/167)) + - Added ability to specify additional queries when using `Node.facts()` + ([#127](https://github.com/voxpupuli/pypuppetdb/pull/127)) + - Improve the documentation (even more ;)) + (PR [#206](https://github.com/voxpupuli/pypuppetdb/issues/206), + fixes [#143](https://github.com/voxpupuli/pypuppetdb/issues/143) + and [#129](https://github.com/voxpupuli/pypuppetdb/issues/129)) + - Fixed creating `Edge` objects + ([#202](https://github.com/voxpupuli/pypuppetdb/issues/202)) + - Python 3.9 added as a supported version + ([#203](https://github.com/voxpupuli/pypuppetdb/pull/203)) + +2.3.0 +----- + + - Added support for `with` statement + ([#185](https://github.com/voxpupuli/pypuppetdb/pull/185)) + - Added explicit `disconnect()` method + ([#185](https://github.com/voxpupuli/pypuppetdb/pull/185)) + - Improved the documentation on [Read the Docs](https://pypuppetdb.readthedocs.io/en/latest/) + and in the project's README + ([#190](https://github.com/voxpupuli/pypuppetdb/pull/190)) + +2.2.0 +----- + + - Loosen requirements and drop six + +2.1.0 +----- + + - Bugfix: Fixed metric() function to + query the new v2 endpoint based on Jolokia + () + - Added a new parameter + metric\_api\_version to the + BaseAPI() constructor that allows + changing the version of the metric + API being queried. Valid values are + 'v1' for PuppetDB \<= 6.9.0, + 'v2' for PuppetDB \>= 6.9.1 or + None which defaults to + 'v2'. + - Added a mew parameter version to the + metric() function that allows + overriding the version of the metric API being queried for that + individual call. If nothing is specified it will default to the + self.metric\_api\_version of the + class, else it expects a value of + 'v1' or + 'v2' same as the + metric\_api\_version class parameter. + - Added new payload parameter to + \_query() to allow users to send + arbitrary payloads with their queries (useful for debugging). + +2.0.0 +----- + + - Dropping old python 2.7/3.5 and ensuring 3 latest versions are + supported + - Adding mypy + cleanup + further removal of python2 code + - Bugfix: Httpretty is not used outside tests and breaks install on + newer python versions for some systems + +1.2.0 +----- + + - Add option to get nodes without using event-counts + - define the project status as stable + - bundle requirements-test.txt in python package + +1.1.0 +----- + + - deduplicate dependencylist + - QueryBuilder.py: Use native data structures for internal + representation + - Add support for the Command API, /pdb/cmd/v1. Added \_cmd alongside + \_query to minimise changes to original code + +1.0.0 +----- + + - Bump dependencies + - QueryBuilder: Added support for FromOperator, arrays and + FromOperator + - New endpoint: status + - POST query in request body + - Simplify JSON encoding for POST + - Upload and publish is built in to setuptools + +0.3.3 +----- + + - Add support for authentication with tokens + - Fix bug with parsing results from inventory endpoint + +0.3.2 +----- + + - Fixed noop puppet runs reporting unchanged instead of noop. + - Fixed unreported nodes shown as 'noop' in puppetdb \> 4.1.0. + - Add Inventory API endpoint for PuppetDB 4.2.0. + - Support for producer field on catalogs, facts and report types. + +0.3.1 +----- + + - Fixed a datetime related bug in + pypuppetdb.api.nodes() that caused + all returned nodes to be an unreported status + +0.3.0 +----- + + - New QueryBuilder module allows users to build PuppetDB queries in an + Object-Oriented fashion. + - Adding support for new fields provided in PuppetDB 4.1.0. + +0.2.3 +----- + + - Removed deprecation of + pypuppetdb.types.Report.events(). + Expanded resource events data timestamps are not parseable. + - Escaping additional path parameters passed to \_url() with + urllib.quote + +0.2.2 +----- + + - Fixed URL Encoding found when querying the specific value of a + macaddress fact. + - Adding support for PuppetDB 4.0.0 information. Namely Adding a + catalog\_uuid attribute to the Catalog type object. Adding code\_id, + catalog\_uuid and cached\_catalog\_status attributes to the Report + type object. + - Removing unneeded sudo option from .travis.yml, this gave + unnecessary warning in the test environment. + - Updating the files under docs/ so + can be updated + - Deprecating + pypuppetdb.types.Report.events() in + favour of the new events list variable. + - Renaming test-requirements.txt to requirements.txt + +0.2.1 +----- + + - Adding a version comparison utility function using examples provided + in + + - Adding a new variable latest\_report\_hash to the Node object. + Default None but is given a real value from the field of the same + name in the Nodes endpoint available in PuppetDB 3.2 or higher. + - Allowing support for 'GET' AND 'POST' requests in the api \_query() + function. This will allow clients to send requests to the PuppetDB + that are too long for a GEt request query string + - Adding a node field, code\_id, to the Catalog object using the field + of the same name from the Catalogs endpoint (currently unused as of + PuppetDB 3.2.2) + - Adding test cases for new features EXCEPT the GET and POST update. + +0.2.0 +----- + + - Version bump to 0.2.0 + - Adding support for v4 of the Query API + - Removing v2 and v3 api functions as per changelog + - pypuppetdb will no longer support multiple API versions, removing + the api\_version attribute from pypuppetdb.connect() + - All clients must remove the api\_version attribute from the connect + function, or the starting number, since it is no longer supported + - Removing all NotImplemented errors in the function of BaseAPI and + filled them with the real code + +**New Features** + +New endpoints: + + - `environments`: `environments()` + - `factsets`: `factsets()` + - `fact-paths`: `fact_paths()` + - `fact-contents`: `fact_contents()` + - `edges`: `edges()` + +Changes to Types: + + - `pypupperdb.types.Report` now requires `api` to be passed as the + second argument, this allows to directly query for any events that + occurred in this report object. This functionality was proposed and + denied because of backward compatability reasons, since the previous + versions are now removed this is no longer a problem. + - All `pypupperdb.types.*` accept the v4 API information as optional + parameters. These parameters are primarily environment related but + may include additional information if provided from that endpoint. + - Functions appearing inside `pypuppetdb.types` that run queries + against the PuppetDB now accept and passing additional keyword + arguments to the query. + - All `pypuppetdb.BaseAPI` functions pass any received keyword + arguments to the `pypuppetdb.api.__init__._query()` function. This + allows for easy integration with paging functions and parameters. + +0.1.1 +----- + + - Fix the license in our `setup.py`. The license shouldn't be longer + than 200 characters. We were including the full license tripping up + tools like bdist\_rpm. + +0.1.0 +----- + +Significant changes have been made in this release. The complete v3 API +is now supported except for query pagination. + +Most changes are backwards compatible except for a change in the SSL +configuration. The previous behaviour was buggy and slightly misleading +in the names the options took: + + - `ssl` has been renamed to `ssl_verify` and now defaults to `True`. + - Automatically use HTTPS if `ssl_key` and `ssl_cert` are provided. + +For additional instructions about getting SSL to work see the Quickstart +in the documentation. + +**Deprecation** + +Support for API v2 will be dropped in the 0.2.x release series. + +**New features** + +The following features are **only** supported for **API v3**. + +The `node()` and `nodes()` function have gained the following options: + + - `with_status=False` + - `unreported=2` + +When `with_status` is set to `True` an additional query will be made +using the `events-count` endpoint scoped to the latest report. This will +result in an additional `events` and `status` keys on the node object. +`status` will be either of `changed`, `unchanged` or `failed` depending +on if `events` contains `successes` or `failures` or none. + +By default `unreported` is set to `2`. This is only in effect when +`with_status` is set to `True`. It means that if a node hasn't checked +in for two hours it will get a `status` of `unreported` instead. + +New endpoints: + + - `events-count`: `events_count()` + - `aggregate-event-counts`: `aggregate_event_counts()` + - `server-time`: `server_time()` + - `version`: `current_version()` + - `catalog`: `catalog()` + +New types: + + - `pypuppetdb.types.Catalog` + - `pypuppetdb.types.Edge` + +Changes to types: + + - `pypuppetdb.types.Node` now has: + - `status` defaulting to `None` + - `events` defaulting to `None` + - `unreported_time` defaulting to `None` + +0.0.4 +----- + +Due to a fairly serious bug 0.0.3 was pulled from PyPi minutes after +release. + +When a bug was fixed to be able to query for all facts we accidentally +introduced a different bug that caused the `facts()` call on a node to +query for all facts because we were resetting the query. + + - Fix a bug where `node.facts()` was causing us to query all facts + because the query to scope our request was being reset. + +0.0.3 +----- + +With the introduction of PuppetDB 1.5 a new API version, v3, was also +introduced. In that same release the old `/experimental` endpoints were +removed, meaning that as of PuppetDB 1.5 with the v2 API you can no +longer get access to reports or events. + +In light of this the support for the experimental endpoints has been +completely removed from pypuppetdb. As of this release you can only get +to reports and/or events through v3 of the API. + +This release includes preliminary support for the v3 API. Everything +that could be done with v2 plus the experimental endpoints is now +possible on v3. However, more advanced funtionality has not yet been +implemented. That will be the focus of the next release. + + - Removed dependency on pytz. + - Fixed the behaviour of `facts()` and `resources()`. We can now + correctly query for all facts or resources. + - Fixed an issue with catalog timestampless nodes. + - Pass along the `timeout` option to `connect()`. + - Added preliminary PuppetDB API v3 support. + - Removed support for the experimental endpoints. + - The `connect()` method defaults to API v3 now. + +0.0.2 +----- + + - Fix a bug in `setup.py` preventing successful installation. + +0.0.1 +----- + +Initial release. Implements most of the v2 API. diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..299dbc6 --- /dev/null +++ b/Rakefile @@ -0,0 +1,14 @@ +begin + require 'github_changelog_generator/task' +rescue LoadError + # github_changelog_generator is an optional group +else + GitHubChangelogGenerator::RakeTask.new :changelog do |config| + version = File.read('version').strip + config.future_release = version + config.header = "# Changelog\n\nAll notable changes to this project will be documented in this file." + config.exclude_labels = %w[duplicate question invalid wontfix wont-fix skip-changelog github_actions] + config.user = 'voxpupuli' + config.project = 'pypuppetdb' + end +end diff --git a/version b/version index fd2a018..944880f 100644 --- a/version +++ b/version @@ -1 +1 @@ -3.1.0 +3.2.0