Skip to main content

Collection of functions to wrap the Azure SDK

Project description

Downer Azure Helper

Collection of functions to wrap the Azure SDK and ArcGIS.

Assume argument are of type str unless stated otherwise.

Logging

Postgres Log Queue

Simple handler to enter logs directly to postgres databases; uses psycopg2 for connection. Creates a new table if does not already exist, and groups logs by job_id. Logs are stored in a queue and dumped on save method invocation. Set print_logs=True to print immediately to console as well.

Quick Setup

from downerhelper.logs import setup_queue

queue = setup_queue(logger_name, job_id, table, db_config_name, keyvault_url, print_logs=False)
queue.add('INFO', "Test message!")
queue.save()

Store database config in Azure Key Vault with format <dbname>,<user>,<password>,<host>.

Manual Setup

from downerhelper.logs import PostgresLogQueue

db_config = {
    'dbname': <dbname>,
    'user': <user>,
    'password': <password>,
    'host': <host>,
}

queue = PostgresLogQueue(logger_name, job_id, table, db_config: dict(str, str), print_logs=False)

Provide database config dictionary.

Log Check

from downerhelper.logs import setup_queue

queue = setup_queue(logger_name, job_id, table, db_config_name, keyvault_url, print_logs=False)
queue.check_logs(key_url: tuple(str, str), recipients, interval_hours=24: int)

Check logs from the past interval_hours, sends an email to recipients for any log levels that are not INFO. Recipients is a string of emails with ; delimeter. key_url is for the logic app to send the email.

Key Vault Secrets

Get Secret Value

from downerhelper.secrets import get_secret_value

value = get_secret_value(secret_name, keyvault_url, queue=None: PostgresLogQueue, credential=DefaultAzureCredential()) -> str | None

Retrieve the value of a keyvault secret. Returns None on error.

Get Config Dictionary

from downerhelper.secrets import get_config_dict

config = get_config_dict(secret_name, keyvault_url) -> dict

Retrieve a database config secret stored like <dbname>,<user>,<password>,<host>. Raises an error if config cannot be read.

Get Key Url Combination

from downerhelper.secrets import get_key_url

key, url = get_key_url(secret_name, keyvault_url, queue: PostgresLogQueue) -> tuple(str, str)

Retrieve the key/url combination for a logic app. Store secret as <key>/<url> to require only one request to get the access info for a logic app (instead of two). Raises an error if secret has incorrect format.

GIS

ArcGIS Functions

Get Access Token

from downerhelper.gis import get_access_token

token = get_access_token(root, username, pwd, queue: PostgresLogQueue) -> str

Token has a 60 minute expiry. Raises an error on failure.

Query Feature Service/Layer

from downerhelper.gis import query_feature_service

data = query_feature_service(token, feature_service, where, queue: PostgresLogQueue, add_where=None) -> dict

add_where is an additional where clause, to be used if some calls have similar where structures. Returns arcgis return structure. Raises an error on failure.

Query Attachments

from downerhelper.gis import query_attachments

data = query_attachments(token, feature_service, object_id, queue: PostgresLogQueue) -> dict

Find attachments for object_id. Returns arcgis return structure. Raises an error on failure.

Get Attachment

from downerhelper.gis import get_attachment

attachment = get_attachment(token, feature_service, object_id, attachment_id, queue: PostgresLogQueue)

Get attachment data for attachment_id on object_id. Returns attachment content directly. Raises an error on failure.

Update Feature Service

from downerhelper.gis import update_feature_service

update_feature_service(token, feature_service, features: list, queue: PostgresLogQueue)

Argument features is defined by arcgis docs. Raises an error on failure.

Timestamp To Datetime

from downerhelper.gis import timestamp_to_datetime

date_str = timestamp_to_datetime(timestamp: int | str, queue: PostgresLogQueue)

Convert arcgis timestamp to datetime string. Raises an error on failure.

Sharepoint

Note: sharepoint list display names (column names) are often not the same as the data label. To find data label you can,

  1. sort by the target column, in the url find the sortField param.
  2. go to column settings and select the target column, then in the url find the Field param.

Get List

from downerhelper.sharepoint import get_list

sp_list = get_list(site_address, list_name, keyvault_url, queue: PostgresLogQueue, pagination_limit=100: int) -> list(dict)

Returns sharepoint list items as a list of dictionary data. Keys are sharepoint data labels not display names. Raises an error on failure.

Form List Item

from downerhelper.sharepoint import form_list_item

form_list_item(attributes: dict(str, str), title, pairs: dict(str, str), queue: PostgresLogQueue, delims=[', ']: list(str)) -> dict

Uses arcgis record attributes from query_feature_service functions. Argument pairs represents the mapping of sharepoint data labels (keys of return dict) to arcgis attribute keys (values of return dict). Raises an error on failure.

Create List Item

from downerhelper.sharepoint import create_list_item

item = create_list_item(item: dict(str, str), site_address, list_name, key_url: tuple(str, str), queue: PostgresLogQueue)

Uploads an item to target sharepoint list, where key_url represents the key/url access combination of the logic app. Raises an error on failure.

Upload Attachments

from downerhelper.sharepoint import upload_attachments

upload_attachments(token, feature_service, object_id, site_address, list_name, item_id, key_url: tuple(str, str), queue: PostgresLogQueue)

Uploads all attachments for arcgis target object_id to sharepoint. Raises an error on failure (one or more attachments failing to upload triggers failure).

Get List Item Attachments

from downerhelper.sharepoint import get_list_attachments

attachmnets = get_list_attachments(item_id, site_address, list_name, key_url: tuple(str, str), queue: PostgresLogQueue) -> list

Returns empty list on failure.

Warning!

The following snippet shows incorrect usage. Modules must be declared and imported seperately.

import downerhelper

value = downerhelper.secrets.get_secret_value(secret_name, keyvault_url)

Project details


Download files

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

Source Distribution

downerhelper-0.1.7.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

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

downerhelper-0.1.7-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file downerhelper-0.1.7.tar.gz.

File metadata

  • Download URL: downerhelper-0.1.7.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.10

File hashes

Hashes for downerhelper-0.1.7.tar.gz
Algorithm Hash digest
SHA256 42a2a58cc348c1d8e3bd040c53c43e7992ffefdaedf5fa9a0ba0c13c1f79b3fb
MD5 4ba9ea1962816f72af7881dde7151c98
BLAKE2b-256 9bfaefb9e5a59f9301952b27cef6256c1af8993725dee9dffec23623da5ee3ab

See more details on using hashes here.

File details

Details for the file downerhelper-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: downerhelper-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.10

File hashes

Hashes for downerhelper-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 7b1a074f41523bb6593d6e4fc8d3fb40b6e550e0efd42d6f390483d0f00591b8
MD5 d00cfffb302a4ef0bd81253173233e09
BLAKE2b-256 a960d005c0a8d1896bff6df32749387c091ba1e350511fadc70b83228bbdba35

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page