DomoJupyter (GetInstanceCredentials)

a function for interacting with DomoJupyter Accounts and Credentials

get_jupyter_account

basic function that uses the wraps the domojupyter get_account_property functions in a loop. Addresses an issue where sometimes DomoJupyter throws an error


source

get_jupyter_account

 get_jupyter_account (account_name:str, domojupyter_fn:<built-
                      infunctioncallable>, maximum_retry:int=10)

import a domojupyter account, will loop until success

Type Default Details
account_name str name of account as it appears in the
domojupyter_fn callable
maximum_retry int 10
Returns Tuple

source

GetJupyter_ErrorRetrievingAccountProperty

 GetJupyter_ErrorRetrievingAccountProperty (account_name, property_name)

Common base class for all non-exit exceptions.


source

GetJupyter_ErrorRetrievingAccount

 GetJupyter_ErrorRetrievingAccount (account_name)

Common base class for all non-exit exceptions.


source

GetInstanceConfig

 GetInstanceConfig
                    (logger:Optional[domolibrary.client.Logger.Logger]=Non
                    e)

Initialize self. See help(type(self)) for accurate signature.


source

NoConfigCompanyError

 NoConfigCompanyError (sql, domo_instance)

Common base class for all non-exit exceptions.

Get Domo Jupyter Account objects

A Class for converting DomoJupyter Account objects into DomoAuth account objects


source

DomoJupyterAccount_InstanceAuth

 DomoJupyterAccount_InstanceAuth (account_name:str,
                                  domo_username:str=None,
                                  display_name:str=None,
                                  domo_instance:str=None,
                                  domo_instance_ls:list=None,
                                  raw_cred:dict=None,
                                  domo_password:str=None,
                                  domo_access_token:str=None,
                                  auth_ls:list=None)

class for interacting with DomoJupyterAccount objects and generating a DomoAuth object


source

InvalidAccountTypeError

 InvalidAccountTypeError (account_name, account_type)

raised when account type is not expected type

Get Domains with Instance Config

Use this method to configure a dataset that retrieves a list of domains from a config instance (using config credentials). Pass an auth_enum object to enumerate different authenticaiton variations to expect in the result dataset (see example).

Theoretically, each of the enumerated auth variations should already exist in the instance.

The Config Dataset must return columns domo_instance and auth_match_col


source

process_row

 process_row (instance:dict, domo_instance,
              instance_creds:__main__.DomoJupyterAccount_InstanceAuth,
              config_enum=None, debug_api:bool=False,
              debug_prn:bool=False, logger=None)

source

is_v2

 is_v2 (instance_auth:domolibrary.client.DomoAuth.DomoFullAuth)

wrapper for the domo boostrap.is_group_ownership_beta function to return a binary for if the instance has the group ownership beta enabled

sample implementaiton of is_v2

config_auth = dmda.DomoFullAuth(
    domo_instance=os.environ['DOMO_INSTANCE'],
    domo_username=os.environ["DOMO_USERNAME"],
    domo_password=os.environ["DOMO_PASSWORD"],
)

await config_auth.print_is_token()

await is_v2(instance_auth=config_auth)
🎉 full_auth token retrieved from domo-community ⚙️
0

source

GetInstanceConfig.get_domains_with_instance_auth

 GetInstanceConfig.get_domains_with_instance_auth
                                                   (default_auth:domolibra
                                                   ry.client.DomoAuth.Domo
                                                   Auth,
                                                   auth_enum:enum.Enum, co
                                                   nfig_auth:domolibrary.c
                                                   lient.DomoAuth.DomoAuth
                                                   =None, config_dataset_i
                                                   d:str=None,
                                                   config_sql:str="select
                                                   domain as domo_instance
                                                   ,concat(config_useprod,
                                                   '-', project) as
                                                   auth_match_col from
                                                   table",
                                                   debug_api:bool=False,
                                                   debug_log:bool=False,
                                                   debug_prn:bool=False, l
                                                   ogger:domolibrary.clien
                                                   t.Logger.Logger=None)

uses a sql query to retrieve a list of domo_instances and map authentication object to each instance

Type Default Details
default_auth DomoAuth default auth to use with each row
auth_enum Enum Enum where enum_name should match to auth_match_col from config_sql query and enum_value is the appropriate DomoAuth or DomoJupyterAccount object
config_auth DomoAuth None which instance to retrieve configuration data from
config_dataset_id str None dataset_id to run config_sql query against
config_sql str select domain as domo_instance,concat(config_useprod, ‘-’, project) as auth_match_col from table
debug_api bool False
debug_log bool False
debug_prn bool False
logger Logger None pass in Logger class
Returns DataFrame

source

GetDomains_Query_AuthMatch_Error

 GetDomains_Query_AuthMatch_Error (sql:str=None, domo_instance:str=None,
                                   message:str=None)

raise if SQL query fails to return column named ‘auth_match_col’

sample implementation of get_domains_with_instance_auth

# import pandas as pd
config_auth = dmda.DomoTokenAuth(
    domo_instance=os.environ['DOMO_INSTANCE'],
    domo_access_token=os.environ["DOMO_ACCESS_TOKEN"],
)

default_auth = dmda.DomoTokenAuth(
    domo_instance="default", domo_access_token=os.environ["DOMO_ACCESS_TOKEN"]
)


class AuthEnum(Enum):
    """enum_name must match values in auth_match_col from config_sql query"""

    test_1 = dmda.DomoFullAuth(
        domo_instance=os.environ['DOMO_INSTANCE'],
        domo_password=os.environ["DOMO_PASSWORD"],
        domo_username="jae@onyxreporting.com",
    )
    test_0 = dmda.DomoTokenAuth(
        domo_instance="domo-community-test",
        domo_access_token=os.environ["DOMO_ACCESS_TOKEN"],
    )
    config_1 = dmda.DomoTokenAuth(
        domo_instance="domo-community-config",
        domo_access_token=os.environ["DOMO_ACCESS_TOKEN"],
    )
    config_0 = dmda.DomoTokenAuth(
        domo_instance="domo-community-config-test",
        domo_access_token=os.environ["DOMO_ACCESS_TOKEN"],
    )


logger = lc.Logger(app_name="test_retrieve_company")

res = await GetInstanceConfig.get_domains_with_instance_auth(
    config_auth=config_auth,
    config_dataset_id="8d2a8055-7918-4039-b67d-361647e96ea8",
    config_sql="""
    SELECT domain as domo_instance, 'test_1'  as auth_match_col, 1 as config_exception_pw from Table
    """,
    debug_prn=True,
    debug_log=False,
    debug_api=False,
    logger=logger,
    default_auth=default_auth,
    auth_enum=AuthEnum,
)

pd.DataFrame(res)
# pd.DataFrame(logger.logs)
warning this token has not been validated by who_am_i, run get_auth_token first
⚙️ START - Retrieving company list 
https://domo-community.domo.com/datasources/8d2a8055-7918-4039-b67d-361647e96ea8/details/overview using 

    SELECT domain as domo_instance, 'test_1'  as auth_match_col, 1 as config_exception_pw from Table
    

⚙️ SUCCESS 🎉 Retrieved company list 
There are 1 companies to update
domo_instance auth_match_col config_exception_pw instance_auth is_valid is_v2 config_auth
0 domo-dojo test_1 1 DomoFullAuth(domo_instance='domo-community', d... 1 0 DomoTokenAuth(domo_instance='domo-community-co...

source

DomoJupyterAccount_InstanceAuth.get_domo_instance_auth_account

 DomoJupyterAccount_InstanceAuth.get_domo_instance_auth_account
                                                                 (account_
                                                                 name:str,
                                                                 domojupyt
                                                                 er_fn:<bu
                                                                 ilt-infun
                                                                 ctioncall
                                                                 able>, do
                                                                 mo_instan
                                                                 ce=None)

retrieves Abstract Credential Store from DomoJupyter environment. expects credentials property to contain DOMO_USERNAME, DOMO_PASSWORD, or DOMO_ACCESS_TOKEN, and (optional) DOMO_INSTANCE

Type Default Details
account_name str domojupyter account to retrieve
domojupyter_fn callable Domo’s domojupyter module, pass in b/c can only be retrieved inside Domo jupyter notebook environment
domo_instance NoneType None set the domo_instance or retrieve from the domojupyter_account credential store

source

InvalidAccountNameError

 InvalidAccountNameError (account_name=None, regex_pattern=None)

raised when account name does not follow format string


source

DomoJupyterAccount_InstanceAuth.get_domo_instance_auth_account

 DomoJupyterAccount_InstanceAuth.get_domo_instance_auth_account
                                                                 (account_
                                                                 name:str,
                                                                 domojupyt
                                                                 er_fn:<bu
                                                                 ilt-infun
                                                                 ctioncall
                                                                 able>, do
                                                                 mo_instan
                                                                 ce=None)

retrieves Abstract Credential Store from DomoJupyter environment. expects credentials property to contain DOMO_USERNAME, DOMO_PASSWORD, or DOMO_ACCESS_TOKEN, and (optional) DOMO_INSTANCE

Type Default Details
account_name str domojupyter account to retrieve
domojupyter_fn callable Domo’s domojupyter module, pass in b/c can only be retrieved inside Domo jupyter notebook environment
domo_instance NoneType None set the domo_instance or retrieve from the domojupyter_account credential store

source

DomoJupyterAccount_InstanceAuth.generate_auth_ls

 DomoJupyterAccount_InstanceAuth.generate_auth_ls
                                                   (domo_instance_ls:list[
                                                   str]=None)

for every domo_instance in domo_instance_ls generates an DomoAuth object

Type Default Details
domo_instance_ls list None list of domo_instances
Returns list list of domo auth objects

source

DomoJupyterAccount_InstanceAuth.generate_auth

 DomoJupyterAccount_InstanceAuth.generate_auth (domo_instance)

source

GenerateAuth_CredentialsNotProvided

 GenerateAuth_CredentialsNotProvided ()

Common base class for all non-exit exceptions.


source

GenerateAuth_InvalidDomoInstanceList

 GenerateAuth_InvalidDomoInstanceList ()

Common base class for all non-exit exceptions.


source

DomoJupyterAccount_InstanceAuth.generate_auth_ls

 DomoJupyterAccount_InstanceAuth.generate_auth_ls
                                                   (domo_instance_ls:list[
                                                   str]=None)

for every domo_instance in domo_instance_ls generates an DomoAuth object

Type Default Details
domo_instance_ls list None list of domo_instances
Returns list list of domo auth objects
DomoJupyterAccount_InstanceAuth(account_name="test")
DomoJupyterAccount_InstanceAuth(account_name='test', domo_username=None)