resotoworker


Nameresotoworker JSON
Version 3.9.0 PyPI version JSON
download
home_page
SummaryRuns collector plugins and sends the result to resotocore.
upload_time2024-02-20 18:28:21
maintainer
docs_urlNone
authorSome Engineering Inc.
requires_python>=3.9
licenseAGPLv3
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # `resotoworker`
Resoto worker daemon


## Table of contents

* [Overview](#overview)
* [Usage](#usage)
    * [Example usage](#example-usage)
* [Details](#details)
    * [Actions and Tasks](#actions-and-tasks)
        * [Actions](#actions)
        * [Tasks](#tasks)
* [Contact](#contact)
* [License](#license)


## Overview
`resotoworker` does all the collection and cleanup work in Resoto. It is connected to [`resotocore`](../resotocore/) over a websocket connection and waits for instructions. By default it subscribes to the `collect` and `cleanup` actions as well as `tag` tasks.

`resotoworker` loads collector [`plugins`](../plugins/) like AWS, GCP, Slack, Onelogin, etc.
Only those plugins have knowledge about how to communicate with each cloud. How to collect resources and how to clean them up.

There can be one or more instances of `resotoworker` in a Resoto deployment. A single `resotoworker` can collect many clouds or you could have multiple `resotoworker` collecting one cloud or even one account in one cloud each.

More information can be found below and in [the docs](https://resoto.com/docs/concepts/components/worker).


## Usage
`resotoworker` uses the following commandline arguments:
```
  --subscriber-id SUBSCRIBER_ID
                        Unique subscriber ID (default: resoto.worker)
  --psk PSK             Pre-shared key
  --verbose, -v         Verbose logging
  --quiet               Only log errors
  --resotocore-uri RESOTOCORE_URI
                        resotocore URI (default: https://localhost:8900)
  --override CONFIG_OVERRIDE [CONFIG_OVERRIDE ...]
                        Override config attribute(s)
  --ca-cert CA_CERT     Path to custom CA certificate file
  --cert CERT           Path to custom certificate file
  --cert-key CERT_KEY   Path to custom certificate key file
  --cert-key-pass CERT_KEY_PASS
                        Passphrase for certificate key file
  --no-verify-certs     Turn off certificate verification
```

ENV Prefix: `RESOTOWORKER_`
Every CLI arg can also be specified using ENV variables.

For instance the boolean `--fork` would become `RESOTOWORKER_FORK=true`.


## Details
Once `resotoworker` is started you do not have to interact with it at all. It will just sit there, wait for work and do its job. The following are details on how `resotoworker` works internally and how it integrates with `resotocore`.


### Actions and Tasks
Think of actions and tasks like topics and queues in a messaging system. Actions are broadcast to everyone subscribed for that action. A task is always given to exactly one worker that knows how to handle it.


#### Actions
When the `collect` workflow within `resotocore` is triggered (by either an event or a schedule or because the user manually triggered it), `resotocore` will broadcast a ***"start collecting all the cloud accounts you know about"*** message to all the subscribed workers.
Once all the workers finish collecting and sent their graph to the core, the workflow will proceed to the next step which would be `plan_cleanup`. This one tells anyone interested to start planing their cleanup based on the just collected graph data. Once everyone has planed their cleanup and flagged resources that should get cleaned up with the `desired.clean = true` flag, the workflow proceeds to the `cleanup` step which again notifies anyone subscribed to now perform cleanup of those flagged resources. Because the cleaner within `resotoworker` has knowledge of all dependencies in the graph, it will ensure that resources are cleaned up in the right order.


#### Tasks
When a plugin or a user decides that a resource tag should be added, changed or removed, e.g. by running
```
search id = i-039e06bb2539e5484 | tag update owner lukas
```
`resotocore` will put this tagging task onto a task queue. This task is then consumed by a `resotoworker` that knows how to perform tagging for that particular resource and its particular cloud and account. In our example above where we are setting the tag `owner: lukas` for an AWS EC2 instance with ID `i-039e06bb2539e5484` the task would be given to a `resotoworker` that knows how to update AWS EC2 instance tags in that resources account.


## Contact
If you have any questions feel free to [join our Discord](https://discord.gg/someengineering) or [open a GitHub issue](https://github.com/someengineering/resoto/issues/new).


## License
See [LICENSE](../LICENSE) for details.

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "resotoworker",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "",
    "keywords": "",
    "author": "Some Engineering Inc.",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/76/b7/3dc98ff30de6030519f8ab7e6dac6f861d53ac57183006959e3d66086388/resotoworker-3.9.0.tar.gz",
    "platform": null,
    "description": "# `resotoworker`\nResoto worker daemon\n\n\n## Table of contents\n\n* [Overview](#overview)\n* [Usage](#usage)\n    * [Example usage](#example-usage)\n* [Details](#details)\n    * [Actions and Tasks](#actions-and-tasks)\n        * [Actions](#actions)\n        * [Tasks](#tasks)\n* [Contact](#contact)\n* [License](#license)\n\n\n## Overview\n`resotoworker` does all the collection and cleanup work in Resoto. It is connected to [`resotocore`](../resotocore/) over a websocket connection and waits for instructions. By default it subscribes to the `collect` and `cleanup` actions as well as `tag` tasks.\n\n`resotoworker` loads collector [`plugins`](../plugins/) like AWS, GCP, Slack, Onelogin, etc.\nOnly those plugins have knowledge about how to communicate with each cloud. How to collect resources and how to clean them up.\n\nThere can be one or more instances of `resotoworker` in a Resoto deployment. A single `resotoworker` can collect many clouds or you could have multiple `resotoworker` collecting one cloud or even one account in one cloud each.\n\nMore information can be found below and in [the docs](https://resoto.com/docs/concepts/components/worker).\n\n\n## Usage\n`resotoworker` uses the following commandline arguments:\n```\n  --subscriber-id SUBSCRIBER_ID\n                        Unique subscriber ID (default: resoto.worker)\n  --psk PSK             Pre-shared key\n  --verbose, -v         Verbose logging\n  --quiet               Only log errors\n  --resotocore-uri RESOTOCORE_URI\n                        resotocore URI (default: https://localhost:8900)\n  --override CONFIG_OVERRIDE [CONFIG_OVERRIDE ...]\n                        Override config attribute(s)\n  --ca-cert CA_CERT     Path to custom CA certificate file\n  --cert CERT           Path to custom certificate file\n  --cert-key CERT_KEY   Path to custom certificate key file\n  --cert-key-pass CERT_KEY_PASS\n                        Passphrase for certificate key file\n  --no-verify-certs     Turn off certificate verification\n```\n\nENV Prefix: `RESOTOWORKER_`\nEvery CLI arg can also be specified using ENV variables.\n\nFor instance the boolean `--fork` would become `RESOTOWORKER_FORK=true`.\n\n\n## Details\nOnce `resotoworker` is started you do not have to interact with it at all. It will just sit there, wait for work and do its job. The following are details on how `resotoworker` works internally and how it integrates with `resotocore`.\n\n\n### Actions and Tasks\nThink of actions and tasks like topics and queues in a messaging system. Actions are broadcast to everyone subscribed for that action. A task is always given to exactly one worker that knows how to handle it.\n\n\n#### Actions\nWhen the `collect` workflow within `resotocore` is triggered (by either an event or a schedule or because the user manually triggered it), `resotocore` will broadcast a ***\"start collecting all the cloud accounts you know about\"*** message to all the subscribed workers.\nOnce all the workers finish collecting and sent their graph to the core, the workflow will proceed to the next step which would be `plan_cleanup`. This one tells anyone interested to start planing their cleanup based on the just collected graph data. Once everyone has planed their cleanup and flagged resources that should get cleaned up with the `desired.clean = true` flag, the workflow proceeds to the `cleanup` step which again notifies anyone subscribed to now perform cleanup of those flagged resources. Because the cleaner within `resotoworker` has knowledge of all dependencies in the graph, it will ensure that resources are cleaned up in the right order.\n\n\n#### Tasks\nWhen a plugin or a user decides that a resource tag should be added, changed or removed, e.g. by running\n```\nsearch id = i-039e06bb2539e5484 | tag update owner lukas\n```\n`resotocore` will put this tagging task onto a task queue. This task is then consumed by a `resotoworker` that knows how to perform tagging for that particular resource and its particular cloud and account. In our example above where we are setting the tag `owner: lukas` for an AWS EC2 instance with ID `i-039e06bb2539e5484` the task would be given to a `resotoworker` that knows how to update AWS EC2 instance tags in that resources account.\n\n\n## Contact\nIf you have any questions feel free to [join our Discord](https://discord.gg/someengineering) or [open a GitHub issue](https://github.com/someengineering/resoto/issues/new).\n\n\n## License\nSee [LICENSE](../LICENSE) for details.\n",
    "bugtrack_url": null,
    "license": "AGPLv3",
    "summary": "Runs collector plugins and sends the result to resotocore.",
    "version": "3.9.0",
    "project_urls": {
        "Documentation": "https://resoto.com",
        "Source": "https://github.com/someengineering/resoto/tree/main/resotoworker"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aa3315b58bec0c92e097a72e7abcfe2be280661fba803cb0d6dfac4ca6c90986",
                "md5": "24b70ba058b63efb165f6490b5d44237",
                "sha256": "b9152914d72af554fc9760a9763672c6ffbdcb06d49fee54e0f649290dac9c69"
            },
            "downloads": -1,
            "filename": "resotoworker-3.9.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "24b70ba058b63efb165f6490b5d44237",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 22720,
            "upload_time": "2024-02-20T18:28:18",
            "upload_time_iso_8601": "2024-02-20T18:28:18.309058Z",
            "url": "https://files.pythonhosted.org/packages/aa/33/15b58bec0c92e097a72e7abcfe2be280661fba803cb0d6dfac4ca6c90986/resotoworker-3.9.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "76b73dc98ff30de6030519f8ab7e6dac6f861d53ac57183006959e3d66086388",
                "md5": "afe667cfe79dd83d990a1a8fd8a7eaae",
                "sha256": "9adc5c0e317d0065e802cef31da4a6f04fd86507cc9c1590ea4eb162ef1b2e49"
            },
            "downloads": -1,
            "filename": "resotoworker-3.9.0.tar.gz",
            "has_sig": false,
            "md5_digest": "afe667cfe79dd83d990a1a8fd8a7eaae",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 19826,
            "upload_time": "2024-02-20T18:28:21",
            "upload_time_iso_8601": "2024-02-20T18:28:21.226693Z",
            "url": "https://files.pythonhosted.org/packages/76/b7/3dc98ff30de6030519f8ab7e6dac6f861d53ac57183006959e3d66086388/resotoworker-3.9.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-20 18:28:21",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "someengineering",
    "github_project": "resoto",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "resotoworker"
}
        
Elapsed time: 0.31149s