diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 403d4fca7..b9fb3ed32 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.16.5 +current_version = 0.16.6 commit = False tag = False tag_name = {new_version} diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b195d05e3..23a0fb5dd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,14 +1,10 @@ image: ${IMAGE} -before_script: - - sudo yum -y install python36 python36-libs python36-setuptools - - sudo python3.6 -m ensurepip --upgrade - - test -f /usr/bin/pip3 || sudo ln -sf /usr/local/bin/pip3 /usr/bin/pip3 - - sudo pip3 install --upgrade -r requirements/docs.txt - - sudo pip3 install -e . - pages: stage: deploy + before_script: + - pip3 install --upgrade -r requirements/docs.txt + - pip3 install -e . script: - sphinx-build -a -E -b html docs public artifacts: diff --git a/.mergify.yml b/.mergify.yml new file mode 100644 index 000000000..1d8bfa24d --- /dev/null +++ b/.mergify.yml @@ -0,0 +1,40 @@ +pull_request_rules: + - name: automatic approve dependabot pull requests + conditions: + - author~=dependabot\[bot\]|dependabot-preview\[bot\] + - status-success=continuous-integration/travis-ci/pr + - status-success=continuous-integration/appveyor/pr + - status-success=codecov/project + - status-success=codecov/patch + actions: + review: + type: APPROVE + # For salt-formula updates, trigger codebuild, merge on codebuild status + - name: write issue comment to start codebuild job + conditions: + - author~=dependabot\[bot\]|dependabot-preview\[bot\] + - label=submodules + - "#approved-reviews-by>=1" + actions: + comment: + message: go codebuild go + + - name: automatic merge for dependabot pull requests + conditions: + - author~=dependabot\[bot\]|dependabot-preview\[bot\] + - label=submodules + - status-success=codebuild/pr + - "#approved-reviews-by>=1" + actions: + merge: + method: merge + + # For regular dependabot pr, automatically merge on approve + - name: automatic merge for dependabot pull requests + conditions: + - author~=dependabot\[bot\]|dependabot-preview\[bot\] + - "#approved-reviews-by>=1" + - label!=submodules + actions: + merge: + method: merge diff --git a/.travis.yml b/.travis.yml index 2f4b552a6..80184795c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -39,11 +39,6 @@ before_script: after_failure: - more .tox/log/* | cat - more .tox/*/log/* | cat -before_cache: - - rm -rf $HOME/.cache/pip/log -cache: - directories: - - "$HOME/.cache/pip" notifications: email: on_success: never @@ -67,7 +62,7 @@ jobs: env: - TOXENV=docs - stage: deploy - if: branch = develop OR tag is present + if: type != pull_request AND (branch = develop OR tag is present) python: 2.7 install: pip install m2r script: echo "Deploying..." @@ -90,7 +85,7 @@ jobs: on: tags: true - stage: deploy - if: branch in (env(RELEASE_BRANCH), develop) OR tag is present + if: type != pull_request AND (branch in (master, develop) OR tag is present) python: 3.6 install: - echo "Install" @@ -110,7 +105,7 @@ jobs: script: satsuki skip_cleanup: true on: - branch: $RELEASE_BRANCH + branch: master - provider: s3 bucket: $RELEASE_BUCKET upload-dir: $S3_KEYFIX diff --git a/CHANGELOG.md b/CHANGELOG.md index c6501ad2d..ab2d4cd31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ ## Changelog +### 0.16.6 + +**Commit Delta**: [Change from 0.16.5 release](https://github.com/plus3it/watchmaker/compare/0.16.5...0.16.6) + +**Released**: 2019.12.04 + +**Summary**: + +* Uses CDN URLs for watchmaker config and content, instead of direct S3 URLs +* Pins `backoff` dependency when running on Python 3.4 or earlier + ### 0.16.5 **Commit Delta**: [Change from 0.16.4 release](https://github.com/plus3it/watchmaker/compare/0.16.4...0.16.5) @@ -298,7 +309,7 @@ * Provides standalone packages that bundle the Python runtime together with Watchmaker and its dependencies - - See + - See * ash-linux-formula - (el7) Ensures packages are up-to-date - (el7) Ensures firewalld is installed and running diff --git a/MANIFEST.in b/MANIFEST.in index 606c65e3e..30e8bdbd0 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -9,6 +9,7 @@ include .coveragerc include .editorconfig include .gitmodules include .pylintrc +include .mergify.yml include AUTHORS.md include CHANGELOG.md diff --git a/README.md b/README.md index 478805ce6..189a4c3cb 100644 --- a/README.md +++ b/README.md @@ -23,4 +23,4 @@ services. ## Documentation For more information on installing and using Watchmaker, go to -. +. diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e99ab0be4..8ff90f94a 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -129,7 +129,7 @@ jobs: sourceFolder: $(deployStage)\standalone\dist\ - task: S3Upload@1 displayName: upload standalone binaries to s3 (release) - condition: eq(variables['build.sourceBranch'], 'refs/tags/*') + condition: startsWith(variables['build.sourceBranch'], 'refs/tags/') inputs: awsCredentials: dev-lab targetFolder: $(keyPrefix) @@ -145,4 +145,4 @@ jobs: python -m pip install -r $(deployStage)\$(deployArtifactName)\deploy.txt satsuki displayName: deploy to github with satsuki - condition: eq(variables['build.sourceBranch'], 'refs/tags/*') + condition: startsWith(variables['build.sourceBranch'], 'refs/tags/') diff --git a/docs/conf.py b/docs/conf.py index 54f65fe43..91cc95fb6 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -365,6 +365,6 @@ linkcheck_ignore = [ r'https://github.com/plus3it/watchmaker/compare/(\d+\.){3}\.(\.\d+){3}', r'https://github.com/plus3it/watchmaker/compare/(\d+\.){3}\.(\.x){3}', - r'https://s3.amazonaws.com/watchmaker/releases/(.*)$', + r'https://watchmaker.cloudarmor.io/releases/(.*)$', r'https://docs\.saltstack\.com/en/latest/ref/modules/all/[a-z\.]*#[a-z\.]*' ] diff --git a/docs/configuration.md b/docs/configuration.md index 2122f7033..49527404e 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -156,7 +156,7 @@ all: computer_name: None environment: None ou_path: None - salt_content: https://s3.amazonaws.com/watchmaker/salt-content.zip + salt_content: None salt_states: Highstate user_formulas: # To add extra formulas, specify them as a map of @@ -177,16 +177,16 @@ linux: - redhat - centos el_version: 6 - url: https://s3.amazonaws.com/watchmaker/yum.defs/saltstack/salt/2016.11.9/salt-reposync-el6.repo + url: https://watchmaker.cloudarmor.io/yum.defs/saltstack/salt/2016.11.9/salt-reposync-el6.repo - dist: amazon el_version: 6 - url: https://s3.amazonaws.com/watchmaker/yum.defs/saltstack/salt/2016.11.9/salt-reposync-amzn.repo + url: https://watchmaker.cloudarmor.io/yum.defs/saltstack/salt/2016.11.9/salt-reposync-amzn.repo #SaltEL7: - dist: - redhat - centos el_version: 7 - url: https://s3.amazonaws.com/watchmaker/yum.defs/saltstack/salt/2016.11.9/salt-reposync-el7.repo + url: https://watchmaker.cloudarmor.io/yum.defs/saltstack/salt/2016.11.9/salt-reposync-el7.repo - salt: salt_debug_log: None install_method: yum @@ -197,7 +197,7 @@ linux: windows: - salt: salt_debug_log: None - installer_url: https://s3.amazonaws.com/watchmaker/repo/saltstack/salt/windows/Salt-Minion-2016.11.6-AMD64-Setup.exe + installer_url: https://watchmaker.cloudarmor.io/repo/saltstack/salt/windows/Salt-Minion-2016.11.6-AMD64-Setup.exe ``` [0]: https://yaml.org/spec/1.2/spec.html diff --git a/docs/faq.md b/docs/faq.md index 1a47961ec..fcfadf139 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -70,7 +70,7 @@ present, the value is passed directly to the `exclude` option of the To use this option with watchmaker from the command line, pass the argument `--exclude-states `. For example: -``` +```shell # Exclude the state "foo" with an exact match watchmaker --exclude-states foo @@ -91,7 +91,7 @@ using the `-c|--config-dir` argument: For example: -``` +```shell # -c|--config-dir salt-call -c /opt/watchmaker/salt state.show_top ``` @@ -131,7 +131,7 @@ In order to install pip in Python 2.6, you can get it from: Once a Python 2.6-compatible ``pip`` version is installed, you can install compatible versions of the other packages like this: -``` +```shell pip install --upgrade "pip<10" "wheel<0.30.0" "setuptools<37" ``` diff --git a/docs/findings/el7.md b/docs/findings/el7.md index 7ca14fb0c..c7f7cc22b 100644 --- a/docs/findings/el7.md +++ b/docs/findings/el7.md @@ -13,7 +13,7 @@ The "stock" `/etc/ssh/sshd_config` file typically contains a commented-out line for the `LogLevel` parameter similar to the following: -~~~ +```shell [...elided...] #SyslogFacility AUTH @@ -23,11 +23,11 @@ SyslogFacility AUTHPRIV # Authentication: [...elided...] -~~~ +``` When the vendor includes a commented-out parameter-value in the configuration-file, it signifies that the paramter is set to the value shown on the commented out line. This can be further confirmed by consulting the associated manual page (see: |sshdconfig|_): -~~~ +```shell LogLevel Gives the verbosity level that is used when logging messages from sshd(8). The possible values are: QUIET, FATAL, ERROR, INFO, @@ -35,7 +35,7 @@ When the vendor includes a commented-out parameter-value in the configuration-fi DEBUG and DEBUG1 are equivalent. DEBUG2 and DEBUG3 each specify higher levels of debugging output. Logging with a DEBUG level violates the privacy of users and is not recommended. -~~~ +``` Note: _If it is desired to alter from the default_, it is typically recommended to change to `VERBOSE` — particularly if key-based logins are in use. This setting will cause the SSH daemon to record the fingerprints of presented-keys. @@ -64,17 +64,17 @@ Some scanners implement an "intentional fail" for this audit-item. This is desig This automation has the underlying assumption that all RPM-managed SUID files — be it by the OS vendor or the provider of the software _hosted by_ the OS — is implicitly authorized. A way to quickly-verify compliance with this assumption is to execute: -~~~bash +```bash for SUID in $( find / -user root -perm -4000 -print 2> /dev/null ) do printf "%s: " "${SUID}" rpm --qf '%{name}\t%{vendor}\n' -qf "$SUID" done | awk '{printf("%-40s\t%-12s\t%s\n",$1,$2,$3)}' -~~~ +``` Executing the above will output a list similar to: -~~~ +```bash /usr/bin/passwd: passwd CentOS /usr/bin/pkexec: polkit CentOS /usr/bin/crontab: cronie CentOS @@ -92,7 +92,7 @@ Executing the above will output a list similar to: /usr/sbin/unix_chkpwd: pam CentOS /usr/lib/polkit-1/polkit-agent-helper-1: polkit CentOS /usr/libexec/dbus-1/dbus-daemon-launch-helper: dbus CentOS -~~~ +``` If any listed files are not displayed as being from the OS-vendor (typically "CentOS" or "RedHat") or the vendor of the hosted application, investigate further to determine if the file meets site-specific authorization-criteria. @@ -106,10 +106,10 @@ Third-party security scanners will frequently call out missing filesystem mount This is a scan error — most likely due to an improperly-formatted search-expression. The watchmaker utilities set the `noexec` Option for `/dev/shm` Pseudo-Filesystem in the `/etc/fstab` configuration file. This can be verified with the following commands. -~~~ +```bash grep -E '\s\/dev\/shm\s.*noexec' /proc/mounts grep -E '\s\/dev\/shm\s.*noexec' /etc/fstab -~~~ +``` The above verifies that the mounted `/dev/shm` has the desired mount-option set and that the setting will persist after a reboot. @@ -121,10 +121,10 @@ Because scanners typically assume that `/tmp` will be a standard, disk-based fil To properly verify that Watchmaker has applied the required mount-option to the systemd-managed `/tmp` mount: -~~~ +```bash grep -E '\s\/tmp\s.*nodev' /proc/mounts grep nodev /etc/systemd/system/tmp.mount.d/options.conf -~~~ +``` The above verifies that the mounted `/tmp` has the desired mount-option set and that the setting will persist after a reboot. @@ -136,10 +136,10 @@ Because scanners typically assume that `/tmp` will be a standard, disk-based fil To properly verify that Watchmaker has applied the required mount-option to the systemd-managed `/tmp` mount: -~~~ +```bash grep -E '\s\/tmp\s.*noexec' /proc/mounts grep noexec /etc/systemd/system/tmp.mount.d/options.conf -~~~ +``` The above verifies that the mounted `/tmp` has the desired mount-option set and that the setting will persist after a reboot. @@ -151,10 +151,10 @@ Because scanners typically assume that `/tmp` will be a standard, disk-based fil To properly verify that Watchmaker has applied the required mount-option to the systemd-managed `/tmp` mount: -~~~ +```bash grep -E '\s\/tmp\s.*nosuid' /proc/mounts grep nosuid /etc/systemd/system/tmp.mount.d/options.conf -~~~ +``` The above verifies that the mounted `/tmp` has the desired mount-option set and that the setting will persist after a reboot. diff --git a/docs/installation.md b/docs/installation.md index 057bf8ab8..6eb4ff2d9 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -81,21 +81,21 @@ Linux. and corresponding SHA256 hashes. To access versions on S3, construct a URL using these examples for version 0.9.7: - * https://s3.amazonaws.com/watchmaker/releases/0.9.7/watchmaker-0.9.7-standalone-linux-x86_64 - * https://s3.amazonaws.com/watchmaker/releases/0.9.7/watchmaker-0.9.7-standalone-windows-amd64.exe + * https://watchmaker.cloudarmor.io/releases/0.9.7/watchmaker-0.9.7-standalone-linux-x86_64 + * https://watchmaker.cloudarmor.io/releases/0.9.7/watchmaker-0.9.7-standalone-windows-amd64.exe * Links to the latest versions of Watchmaker and SHA hashes on S3 are: - * https://s3.amazonaws.com/watchmaker/releases/latest/watchmaker-latest-standalone-linux-x86_64 - * https://s3.amazonaws.com/watchmaker/releases/latest/watchmaker-latest-sha256-linux-x86_64.json - * https://s3.amazonaws.com/watchmaker/releases/latest/watchmaker-latest-standalone-windows-amd64.exe - * https://s3.amazonaws.com/watchmaker/releases/latest/watchmaker-latest-sha256-windows-amd64.json + * https://watchmaker.cloudarmor.io/releases/latest/watchmaker-latest-standalone-linux-x86_64 + * https://watchmaker.cloudarmor.io/releases/latest/watchmaker-latest-sha256-linux-x86_64.json + * https://watchmaker.cloudarmor.io/releases/latest/watchmaker-latest-standalone-windows-amd64.exe + * https://watchmaker.cloudarmor.io/releases/latest/watchmaker-latest-sha256-windows-amd64.json * From PowerShell, the Windows package can be downloaded as follows: ```ps1con - PS C:\wam> $url = "https://s3.amazonaws.com/watchmaker/releases/latest/watchmaker-latest-standalone-windows-amd64.exe" + PS C:\wam> $url = "https://watchmaker.cloudarmor.io/releases/latest/watchmaker-latest-standalone-windows-amd64.exe" PS C:\wam> (New-Object System.Net.WebClient).DownloadFile($url, "watchmaker.exe") ``` @@ -103,7 +103,7 @@ Linux. as follows: ```console - # curl -so watchmaker https://s3.amazonaws.com/watchmaker/releases/latest/watchmaker-latest-standalone-linux-x86_64 + # curl -so watchmaker https://watchmaker.cloudarmor.io/releases/latest/watchmaker-latest-standalone-linux-x86_64 ``` * For the latest package, the version of Watchmaker can be determined by diff --git a/requirements/check.txt b/requirements/check.txt index dcae453b2..7791db7e2 100644 --- a/requirements/check.txt +++ b/requirements/check.txt @@ -1,15 +1,16 @@ -check-manifest==0.39 -flake8==3.7.8 +-r docs-check.txt + +check-manifest==0.40 +flake8==3.7.9 flake8-bugbear==19.8.0 flake8-builtins==1.4.1 -flake8-docstrings==1.4.0 +flake8-docstrings==1.5.0 flake8-isort==2.7.0 flake8-future-import==0.4.6 -flake8-print==3.1.0 +flake8-print==3.1.4 isort==4.3.21 m2r==0.2.1 -pep8-naming==0.8.2 +pep8-naming==0.9.1 pydocstyle==4.0.1 -pygments==2.4.2 -pylint==2.3.1 +pylint==2.4.4 readme-renderer==24.0 diff --git a/requirements/docs-check.txt b/requirements/docs-check.txt new file mode 100644 index 000000000..df8fdd895 --- /dev/null +++ b/requirements/docs-check.txt @@ -0,0 +1 @@ +pygments==2.5.2 diff --git a/requirements/docs.txt b/requirements/docs.txt index 2f42e476c..71d3b25b6 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -1,4 +1,6 @@ +-r docs-check.txt + m2r==0.2.1 -setuptools==41.2.0 -sphinx==2.2.0 +setuptools==42.0.2 +sphinx==2.2.2 sphinx-rtd-theme==0.4.3 diff --git a/requirements/pip.txt b/requirements/pip.txt index 0a682e28e..3877da207 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -1 +1 @@ -pip==19.2.3 +pip==19.3.1 diff --git a/requirements/test.txt b/requirements/test.txt index aa93ceeb8..dbfb0bbdb 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -2,11 +2,11 @@ mock==2.0.0;python_version<"2.7" # pyup: ==2.0.0 mock==3.0.5;python_version>="2.7" pytest==3.2.5;python_version<"2.7" or python_version=="3.3" # pyup: ==3.2.5 pytest==4.6.3;python_version<"3.5" and python_version>="2.7" # pyup: ==4.6.3 -pytest==5.1.3;python_version>="3.5" +pytest==5.3.1;python_version>="3.5" pytest-travis-fold==1.3.0 pytest-catchlog==1.2.2;python_version<"2.7" pytest-cov==2.5.1;python_version<"2.7" # pyup: ==2.5.1 -pytest-cov==2.7.1;python_version>="2.7" +pytest-cov==2.8.1;python_version>="2.7" pytest-mock==1.6.3;python_version<"2.7" # pyup: ==1.6.3 -pytest-mock==1.10.4;python_version>="2.7" +pytest-mock==1.12.1;python_version>="2.7" wheel==0.29.0;python_version<="2.6" # pyup: ==0.29.0 diff --git a/setup.cfg b/setup.cfg index 5cf56102b..7a9d32665 100644 --- a/setup.cfg +++ b/setup.cfg @@ -3,7 +3,7 @@ [metadata] name = watchmaker description = Applied Configuration Management -version = 0.16.5 +version = 0.16.6 author = Plus3IT Maintainers of Watchmaker author_email = projects@plus3it.com url = https://github.com/plus3it/watchmaker @@ -31,7 +31,8 @@ classifiers = [options] install_requires = - backoff;python_version>="2.7" + backoff;python_version>"3.4" + backoff<=1.8.0;python_version<="3.4" backoff<1.7;python_version<"2.7" click;python_version>="2.7" click<7;python_version<"2.7" diff --git a/src/watchmaker/managers/platform.py b/src/watchmaker/managers/platform.py index 905f77133..2d9a7aaab 100644 --- a/src/watchmaker/managers/platform.py +++ b/src/watchmaker/managers/platform.py @@ -56,8 +56,8 @@ def __init__(self, system_params, *args, **kwargs): ) self.system_params = system_params self.working_dir = None - args = args - kwargs = kwargs + PlatformManagerBase.args = args + PlatformManagerBase.kwargs = kwargs def retrieve_file(self, url, filename): """ diff --git a/src/watchmaker/managers/worker_manager.py b/src/watchmaker/managers/worker_manager.py index 3ae7bf0d4..6085a746e 100644 --- a/src/watchmaker/managers/worker_manager.py +++ b/src/watchmaker/managers/worker_manager.py @@ -31,8 +31,8 @@ class WorkersManagerBase(object): def __init__(self, system_params, workers, *args, **kwargs): self.system_params = system_params self.workers = workers - args = args - kwargs = kwargs + WorkersManagerBase.args = args + WorkersManagerBase.kwargs = kwargs @abc.abstractmethod def _worker_execution(self): diff --git a/src/watchmaker/static/config.yaml b/src/watchmaker/static/config.yaml index 0df10e13e..807dc7174 100644 --- a/src/watchmaker/static/config.yaml +++ b/src/watchmaker/static/config.yaml @@ -26,16 +26,16 @@ linux: - redhat - centos el_version: 6 - url: https://s3.amazonaws.com/watchmaker/yum.defs/saltstack/salt/2018.3.3/salt-reposync-el6.repo + url: https://watchmaker.cloudarmor.io/yum.defs/saltstack/salt/2018.3.3/salt-reposync-el6.repo - dist: amazon el_version: 6 - url: https://s3.amazonaws.com/watchmaker/yum.defs/saltstack/salt/2018.3.3/salt-reposync-amzn.repo + url: https://watchmaker.cloudarmor.io/yum.defs/saltstack/salt/2018.3.3/salt-reposync-amzn.repo #SaltEL7: - dist: - redhat - centos el_version: 7 - url: https://s3.amazonaws.com/watchmaker/yum.defs/saltstack/salt/2018.3.3/salt-reposync-el7.repo + url: https://watchmaker.cloudarmor.io/yum.defs/saltstack/salt/2018.3.3/salt-reposync-el7.repo - salt: salt_debug_log: None install_method: yum @@ -46,4 +46,4 @@ linux: windows: - salt: salt_debug_log: None - installer_url: https://s3.amazonaws.com/watchmaker/repo/saltstack/salt/windows/Salt-Minion-2018.3.3-Py2-AMD64-Setup.exe + installer_url: https://watchmaker.cloudarmor.io/repo/saltstack/salt/windows/Salt-Minion-2018.3.3-Py2-AMD64-Setup.exe diff --git a/src/watchmaker/static/salt/content b/src/watchmaker/static/salt/content index 5d75c68d2..af75f0c26 160000 --- a/src/watchmaker/static/salt/content +++ b/src/watchmaker/static/salt/content @@ -1 +1 @@ -Subproject commit 5d75c68d26c642bd028121c0ce0f0341cbe76f20 +Subproject commit af75f0c2688effcc60b2464541eaf7951cc700eb diff --git a/src/watchmaker/static/salt/formulas/ash-windows-formula b/src/watchmaker/static/salt/formulas/ash-windows-formula index b023c13c3..4db1b9bae 160000 --- a/src/watchmaker/static/salt/formulas/ash-windows-formula +++ b/src/watchmaker/static/salt/formulas/ash-windows-formula @@ -1 +1 @@ -Subproject commit b023c13c3b25960a1278857c2e958ae603cb7dab +Subproject commit 4db1b9baec41a7c6c1d7c3796d2fef0523d9a7c7 diff --git a/src/watchmaker/static/salt/formulas/join-domain-formula b/src/watchmaker/static/salt/formulas/join-domain-formula index d75020e60..9845a8efa 160000 --- a/src/watchmaker/static/salt/formulas/join-domain-formula +++ b/src/watchmaker/static/salt/formulas/join-domain-formula @@ -1 +1 @@ -Subproject commit d75020e6048b529e67b253e7b9d63d9ca7b7c73c +Subproject commit 9845a8efaf4ab0dc79aaeb22e66b7c169fe270d1 diff --git a/src/watchmaker/workers/base.py b/src/watchmaker/workers/base.py index 1180fb7e5..0038d083c 100644 --- a/src/watchmaker/workers/base.py +++ b/src/watchmaker/workers/base.py @@ -16,8 +16,8 @@ def __init__(self, system_params, *args, **kwargs): ) self.system_params = system_params - args = args - kwargs = kwargs + WorkerBase.args = args + WorkerBase.kwargs = kwargs @abc.abstractmethod def before_install(self):