Feeding the Dog in a Timely Manner
[1]:
# Create Compliance DYNAMIC TOLERANCE Policy
#
# Main function, establishes a connection to RKVST using an App Registration then uses that
# to create a Compliance DYNAMIC TOLERANCE Policy.
#
# Note: The purpose of RKVST Jupyter Notebooks is to provide simplified examples that one can easily execute and digest.
# The RKVST Python SDK is authored to work cleanly with more advanced coding techniques.
#
# RKVST Python SDK: https://github.com/rkvst/rkvst-python
#
[2]:
import random
import string
from json import dumps as json_dumps
from os import getenv
from warnings import filterwarnings
from dotenv import load_dotenv
from archivist.archivist import Archivist
from archivist.compliance_policy_requests import (
CompliancePolicyDynamicTolerance,
)
from archivist.proof_mechanism import ProofMechanism
from archivist.logger import set_logger
[3]:
%reload_ext dotenv
%dotenv -o notebooks.env
[4]:
# RKVST_URL, RKVST_APPREG_CLIENT, RKVST_APPREG_SECRET are environment variables that represent connection parameters.
#
# RKVST_URL = represents the url to the RKVST application
# RKVST_APPREG_CLIENT = represents the client ID from an Application Registration
# RKVST_APPREG_SECRET = represents the client secret from an Application Registration
RKVST_URL = getenv("RKVST_URL")
RKVST_APPREG_CLIENT = getenv("RKVST_APPREG_CLIENT")
RKVST_APPREG_SECRET = getenv("RKVST_APPREG_SECRET")
[5]:
"""
Main function of DYNAMIC TOLERANCE policy creation.
* Connect to RKVST with client ID and client secret
* Creates a Compliance DYNAMIC TOLERANCE Policy
"""
# Optional call to set the logger level. The argument can be either
# "INFO" or "DEBUG". For more sophisticated logging control see our
# documentation.
set_logger("INFO")
# Initialize connection to RKVST
print("Connecting to RKVST")
print("RKVST_URL", RKVST_URL)
arch = Archivist(RKVST_URL, (RKVST_APPREG_CLIENT, RKVST_APPREG_SECRET), max_time=300)
Connecting to RKVST
RKVST_URL https://app.rkvst.io
[6]:
def create_compliance_policy(arch):
"""
Creates a DYNAMIC TOLERANCE compliance policy for Fed/Feed Events. If time between
Feed/Fed Events is .5 greater than the average time between similar Events in
the past week, then Golden Retriever Asset is out of compliance.
"""
dynamic_tolerance_policy = arch.compliance_policies.create(
CompliancePolicyDynamicTolerance(
description="Average time between Fed/Feed Events",
display_name="Outlying Feed Events",
asset_filter=[
["attributes.arc_display_type=Golden Retriever"],
],
event_display_type="Feed",
closing_event_display_type="Fed",
dynamic_window=604800,
dynamic_variability=0.5,
)
)
print("DYNAMIC_TOLERANCE_POLICY:", json_dumps(dynamic_tolerance_policy, indent=4))
return dynamic_tolerance_policy
[7]:
# Creates DYNAMIC TOLERANCE compliance policy and prints result
compliance_policy = create_compliance_policy(arch)
print("Compliance_Policy", json_dumps(compliance_policy, indent=4))
Refresh token
DYNAMIC_TOLERANCE_POLICY: {
"identity": "compliance_policies/d02099fa-adb5-43b3-b2d6-60bf54ad247a",
"compliance_type": "COMPLIANCE_DYNAMIC_TOLERANCE",
"description": "Average time between Fed/Feed Events",
"display_name": "Outlying Feed Events",
"asset_filter": [
{
"or": [
"attributes.arc_display_type=Golden Retriever"
]
}
],
"event_display_type": "Feed",
"closing_event_display_type": "Fed",
"time_period_seconds": "0",
"dynamic_window": "604800",
"dynamic_variability": 0.5,
"richness_assertions": []
}
Compliance_Policy {
"identity": "compliance_policies/d02099fa-adb5-43b3-b2d6-60bf54ad247a",
"compliance_type": "COMPLIANCE_DYNAMIC_TOLERANCE",
"description": "Average time between Fed/Feed Events",
"display_name": "Outlying Feed Events",
"asset_filter": [
{
"or": [
"attributes.arc_display_type=Golden Retriever"
]
}
],
"event_display_type": "Feed",
"closing_event_display_type": "Fed",
"time_period_seconds": "0",
"dynamic_window": "604800",
"dynamic_variability": 0.5,
"richness_assertions": []
}