Skip to main content

python3-cyberfusion-queue-support

Library to queue actions.

QueueSupport allows you to queue certain actions, such as restarting a service, unlinking a file, and much more.

For example, suppose the file /tmp/example.txt should be chmodded to 0600. You can queue the chmod:

>>> from cyberfusion.QueueSupport import Queue
>>> from cyberfusion.QueueSupport.items.chmod import ChmodItem
>>> queue = Queue()
>>> queue.add(ChmodItem(path="/tmp/example.txt", mode=0o600))

... see what the chmod would do with 'preview mode':

>>> process, outcomes = queue.process(preview=False)
>>> outcomes
[<cyberfusion.QueueSupport.outcomes.ChmodItemModeChangeOutcome object at 0x7f947e8ef510>]
>>> process, outcomes = queue.process(preview=True)
>>> print(outcomes[0])
Change mode of /tmp/example.txt from 0o644 to 0o600

... then actually run the chmod:

>>> process, outcomes = queue.process(preview=False)
>>> print(outcomes[0])
Change mode of /tmp/example2.txt from 0o644 to 0o600

Install

PyPI

Run the following command to install the package from PyPI:

pip3 install python3-cyberfusion-queue-support

Then, run database migrations:

bin/queue-support-migrate

Debian

Run the following commands to build a Debian package:

mk-build-deps -i -t 'apt -o Debug::pkgProblemResolver=yes --no-install-recommends -y'
dpkg-buildpackage -us -uc

Configure

No configuration is supported.

Usage

Concepts

All project-specific terms are in italic.

After creating a queue, items can be added to it.

from cyberfusion.QueueSupport import Queue

queue = Queue()

item = ...

queue.add(item)

Items are of a certain type. Such as ChmodItem or SystemdUnitRestartItem. Items can have attributes, such as a path for an MkdirItem, or a unit name for SystemdUnitEnableItem.

from cyberfusion.QueueSupport.items.chmod import ChmodItem
from cyberfusion.QueueSupport.items.systemd_unit_enable import SystemdUnitEnableItem

item1 = ChmodItem(path="/tmp/example.txt", mode=0o600)
item2 = SystemdUnitEnableItem(name="httpd.service")

Each item type has one or multiple outcomes. These should come true for an item of that type to be completed. For example: for an item of type UnlinkItem, the outcome is that the file at the path given with the item is unlinked.

When a queue is processed, all the items added to it are fulfilled, meaning all the items' outcomes come true.

from cyberfusion.QueueSupport import Queue

from cyberfusion.QueueSupport.items.rmtree import RmTreeItem

item = RmTreeItem(path="/tmp/dir")

queue = Queue()

queue.add(item)

# Fulfill every item in the queue

queue.process(preview=False)
queue.process(preview=True)  # Only show what the outcomes would be

# Fulfill a single item

item.fulfill()

Diagram

graph TD;

  subgraph QueueSupport
    Queue["Queue"]
    Item["Add item"]
    Process["Process (fulfill all items)"]
  end

  Queue --> Item

  subgraph ItemTypes["Item types"]
    ChmodItem["ChmodItem"]
    SystemdUnitEnableItem["SystemdUnitEnableItem"]
    SystemdUnitRestartItem["SystemdUnitRestartItem"]
    MkdirItem["MkdirItem"]
    UnlinkItem["UnlinkItem"]
    RmTreeItem["RmTreeItem"]
    Other["Others..."]
  end

  Item --> ItemTypes
  ItemTypes --> Outcome["Outcome (item's goal)"]

  Process --> Fulfill["Fulfill outcomes for each item"]

  %% Example flows for item attributes and outcomes
  ChmodItem -.->|path, mode| Outcome
  SystemdUnitEnableItem -.->|unit name| Outcome
  MkdirItem -.->|path| Outcome
  UnlinkItem -.->|unlink file| Outcome
  RmTreeItem -.->|remove directory| Outcome

  Queue --> Process
  Process --> Fulfill

Example

from cyberfusion.QueueSupport import Queue
from cyberfusion.QueueSupport.items.chmod import ChmodItem

queue = Queue()

item = ChmodItem(path="/tmp/example.txt", mode=0o600)
print(item.outcomes)

queue.add(item)

preview = True or False

process, outcomes = queue.process(preview=preview)

print(process.status)

for outcome in outcomes:
    print(str(outcome))

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python3_cyberfusion_queue_support-4.3.tar.gz (19.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python3_cyberfusion_queue_support-4.3-py3-none-any.whl (41.3 kB view details)

Uploaded Python 3

File details

Details for the file python3_cyberfusion_queue_support-4.3.tar.gz.

File metadata

File hashes

Hashes for python3_cyberfusion_queue_support-4.3.tar.gz
Algorithm Hash digest
SHA256 4f9dbaeb3c21f1839e3af6c16e7cf30dfb721db85d219282c5a73f8acc436f72
MD5 602186c7a785b71c6f7c056a95290b4e
BLAKE2b-256 a0b90ba52572c48d93c817110433b157fc041146f463235ed8bb7932846208dd

See more details on using hashes here.

File details

Details for the file python3_cyberfusion_queue_support-4.3-py3-none-any.whl.

File metadata

File hashes

Hashes for python3_cyberfusion_queue_support-4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 72382e60a53521cb8003724135e1188b7b05c9f2f39c6833f662d24495be0eb3
MD5 f97bb6e7238c8d3ee8c7d562570f7b64
BLAKE2b-256 28069183e8a5241cc435c9c58e44c1f940488776e4b41201cb3eaa09635d3359

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

4.3 This release

2 files

4.2.1

2 files

4.2

2 files

4.1

2 files

4.0.1

2 files

4.0

2 files

3.3.3

2 files

3.3.2

2 files

3.3.1

2 files

3.3

2 files

3.2.1

2 files

3.2

2 files

3.1

2 files

3.0.3

2 files

3.0.2

2 files

3.0.1

2 files

3.0

2 files

2.7.1

2 files

2.7

2 files

2.6.4

2 files

2.6.3

2 files

2.6.2

2 files

2.6.1

2 files

2.6.0

2 files

2.5.2

2 files

2.5.1

2 files

2.5

2 files

2.4

2 files

2.3

2 files

2.2.5

2 files

2.2.4

2 files

2.2.3

2 files

2.2.2

2 files

2.2.1

2 files

2.2

2 files

2.0

2 files

1.7.0

2 files

1.6

2 files

1.5

2 files

1.4

2 files

1.3

2 files

1.2

2 files

1.1.4

2 files

1.1.3

2 files

1.1.1.2

1 file

1.1.1.1.3

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page