Feeding the Dog Hourly
[1]:
# Create Compliance PERIOD OUTSTANDING Policy
#
# Main function, establishes a connection to DataTrails using an App Registration then uses that
# to create a Compliance PERIOD OUTSTANDING Policy.
#
# Note: The purpose of DataTrails Jupyter Notebooks is to provide simplified examples that one can easily execute and digest.
# The DataTrails Python SDK is authored to work cleanly with more advanced coding techniques.
#
# DataTrails Python SDK: https://github.com/datatrails/datatrails-python
#
[2]:
from json import dumps as json_dumps
from os import getenv
from archivist.archivist import Archivist
from archivist.compliance_policy_requests import (
CompliancePolicyPeriodOutstanding,
)
from archivist.logger import set_logger
[3]:
%reload_ext dotenv
%dotenv -o notebooks.env
[4]:
# DATATRAILS_URL, DATATRAILS_APPREG_CLIENT, DATATRAILS_APPREG_SECRET are environment variables that represent connection parameters.
#
# DATATRAILS_URL = represents the url to the DataTrails application
# DATATRAILS_APPREG_CLIENT = represents the client ID from an Application Registration
# DATATRAILS_APPREG_SECRET = represents the client secret from an Application Registration
DATATRAILS_URL = getenv("DATATRAILS_URL")
DATATRAILS_APPREG_CLIENT = getenv("DATATRAILS_APPREG_CLIENT")
DATATRAILS_APPREG_SECRET = getenv("DATATRAILS_APPREG_SECRET")
[5]:
"""
Main function of PERIOD OUTSTANDING policy creation.
* Connect to DataTrails with client ID and client secret
* Creates a Compliance PERIOD OUTSTANDING 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 DATATRAILS
print("Connecting to DATATRAILS")
print("DATATRAILS_URL", DATATRAILS_URL)
arch = Archivist(
DATATRAILS_URL, (DATATRAILS_APPREG_CLIENT, DATATRAILS_APPREG_SECRET), max_time=300
)
Connecting to DATATRAILS
DATATRAILS_URL https://app.datatrails.ai
[6]:
def create_compliance_policy(arch):
"""
Creates a PERIOD OUTSTANDING compliance policy for feeding one's dog. If DataTrails sees a "Feed"
event without a closing "Fed" event within an hour, then Golden Retriever Asset is
out of compliance.
"""
period_outstanding_policy = arch.compliance_policies.create(
CompliancePolicyPeriodOutstanding(
description="Ensuring my dog is fed within an hour",
display_name="Feeding My Dog Hourly",
asset_filter=[
["attributes.arc_display_type=Golden Retriever"],
],
event_display_type="Feed",
closing_event_display_type="Fed",
time_period_seconds=3600,
)
)
print("PERIOD_OUTSTANDING_POLICY:", json_dumps(period_outstanding_policy, indent=4))
return period_outstanding_policy
[7]:
# Creates PERIOD OUTSTANDING compliance policy and prints result
compliance_policy = create_compliance_policy(arch)
print("Compliance_Policy", json_dumps(compliance_policy, indent=4))
Refresh token
PERIOD_OUTSTANDING_POLICY: {
"identity": "compliance_policies/2599ea06-e4de-4472-a5a3-37b0dae75899",
"compliance_type": "COMPLIANCE_PERIOD_OUTSTANDING",
"description": "Ensuring my dog is fed within an hour",
"display_name": "Feeding My Dog Hourly",
"asset_filter": [
{
"or": [
"attributes.arc_display_type=Golden Retriever"
]
}
],
"event_display_type": "Feed",
"closing_event_display_type": "Fed",
"time_period_seconds": "3600",
"dynamic_window": "0",
"dynamic_variability": 0,
"richness_assertions": []
}
Compliance_Policy {
"identity": "compliance_policies/2599ea06-e4de-4472-a5a3-37b0dae75899",
"compliance_type": "COMPLIANCE_PERIOD_OUTSTANDING",
"description": "Ensuring my dog is fed within an hour",
"display_name": "Feeding My Dog Hourly",
"asset_filter": [
{
"or": [
"attributes.arc_display_type=Golden Retriever"
]
}
],
"event_display_type": "Feed",
"closing_event_display_type": "Fed",
"time_period_seconds": "3600",
"dynamic_window": "0",
"dynamic_variability": 0,
"richness_assertions": []
}