angelos.common.policy

Applying policy checks and actions.

This is a framework for validating objects according to policies. The policies are organized in layers of rings and ring sections, each policy has a serial number and a description of its purpose. When an object is validated, a report is generated containing all validated policys and the result of failed policys.

# Layers:

The layers of policys is divided into 7 rings where 1 is the innermost layer. Each layer can be divided into sections. Each individual policy has a totally unique serial number that is chronological from when the policys where organized, and a description.

Example: 1A-0001; Policy purpose and description.

  • 1: Fields * A: … * B: …

  • 2: Documents * C: … * D: … * E: …

  • 3: Portfolios * F: … * G: … * H: … * J: …

  • 4: Facade * K: … * L: … * M: … * N: …

  • 5: Nodes * P: … * Q: … * R: … * S: …

  • 6: Domain * T: … * U: … * V: … * X: …

  • 7: Network * Y: … * Z: …

class angelos.common.policy.BasePolicyApplier

Bases: abc.ABC

Apply all mixed in policies.

exception angelos.common.policy.PolicyBreachException(message, report: angelos.common.policy.Report)

Bases: RuntimeError

exception angelos.common.policy.PolicyException

Bases: RuntimeWarning

class angelos.common.policy.PolicyMixin

Bases: abc.ABC

Base class that applies one policy.

abstract apply() → bool

Implement policy to be applied here, then decorate with @policy(section=b’I’ sn=0).

class angelos.common.policy.PolicyPerformer

Bases: angelos.common.policy.BasePolicyApplier

Base class for policies to be performed.

abstract perform(**kwargs)

Perform an action.

class angelos.common.policy.PolicyValidator

Bases: angelos.common.policy.BasePolicyApplier

Base class for policies that validates data.

abstract validate(**kwargs)

Execute validation.

class angelos.common.policy.Report(event=None)

Bases: object

Validation report that keeps a record of applied policies and failures.

NULL_IDENTITY = UUID('00000000-0000-0000-0000-000000000000')
NULL_POLICY = (b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 73, 0)
POLICY = {b'A': '1A', b'B': '1B', b'C': '2C', b'D': '2D', b'E': '2E', b'F': '3F', b'G': '3G', b'H': '3H', b'J': '3J', b'K': '4K', b'L': '4L', b'M': '4M', b'N': '4N', b'P': '5P', b'Q': '5Q', b'R': '5R', b'S': '5S', b'T': '6T', b'U': '6U', b'V': '6V', b'X': '6X', b'Y': '7Y', b'Z': '7Z'}
property applied

All applied policies.

down(level: bytes)

Go back from level depth.

Parameters

level (bytes) – Level name/info.

property failed
Type

All failed policy runtime ID

format(barrier='-')

Print report.

property id

Report unique UUID

record(section: bytes, sn: int, failed: bool = False)

Add a policy record.

Parameters
  • section (bytes) – Policy section from which layer is calculated.

  • sn (int) – Policy chronological serial number.

  • failed (bool) – True or False whether the check failed.

property timestamp

Report timestamp.

up(level: bytes)

Go one level deeper.

Parameters

level (bytes) – Level name/info.

class angelos.common.policy.evaluate(event=None)

Bases: contextlib.ContextDecorator, contextlib.AbstractContextManager

Evaluate decorator and context manager.

Wrap methods or enclose pieces of code that you want to evaluate that they are complying with certain policies.

angelos.common.policy.policy()

Policy decorator.

Parameters
  • section (bytes) – Policy section

  • sn (int) – Policy serial number

  • level (str) – Instruct report to add a level

Returns (callable):

Wrapper writing policy to the report