Skip to content

Commit

Permalink
update cf script, validate table existence before creation, log level…
Browse files Browse the repository at this point in the history
… env var
  • Loading branch information
Grant Moore committed Feb 5, 2022
1 parent 37de1d6 commit 8fdb654
Show file tree
Hide file tree
Showing 9 changed files with 98 additions and 14 deletions.
3 changes: 2 additions & 1 deletion env/.sample.env
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# APPLICATION CONFIGURATION
LEDGER=innolab-laboratory
LEDGER=laboratory
DEFAULT_INDEX=id
LOG_LEVEL=NOTSET

# DISTRIBUTION CONFIGURATION
PYPI_USERNAME=__token__
Expand Down
2 changes: 1 addition & 1 deletion innoldb/innolqb.egg-info/PKG-INFO
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ my_document.property_two = 'property 2'
my_document.save()
```

If you do not have the **LEDGER** environment variable set, you must pass in the ledger name along with the table name through named arguments,
Then a document will be inserted into the **QLDB** ledger table. If you do not have the **LEDGER** environment variable set, you must pass in the ledger name along with the table name through named arguments,

```python
from innoldb.qldb import Document
Expand Down
3 changes: 2 additions & 1 deletion innoldb/logger.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import logging
from innoldb import settings

def getLogger(name: str) -> logging.Logger:
"""
Expand All @@ -14,6 +15,6 @@ def getLogger(name: str) -> logging.Logger:
logger = logging.getLogger(name)
consoleHandler = logging.StreamHandler()
consoleHandler.setFormatter(logFormatter)
logger.setLevel(logging.NOTSET)
logger.setLevel(settings.get_log_level())
logger.addHandler(consoleHandler)
return logger
28 changes: 19 additions & 9 deletions innoldb/qldb.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
import uuid
from amazon.ion.simpleion import dumps, loads
from boto3 import client
from pyqldb.driver.qldb_driver import QldbDriver
from . import settings
from .logger import getLogger
from innoldb import settings
from innoldb.logger import getLogger

log = getLogger('innoldb.qldb')

def create_ledger(ledger):
qldb = client('qldb')
qldb.create_ledger(
Name=ledger,
PermissionsMode='STANDARD',
DeletionProtection=False,
)

class Driver():
@staticmethod
def execute(transaction_executor, statement, *params):
Expand Down Expand Up @@ -157,13 +166,14 @@ def __init__(self, table, ledger=settings.LEDGER, index=settings.DEFAULT_INDEX):
# Name of the lookup field in the PartiQL table
self.index = index
# Fields 'in' the table.
self._init_fixtures()

def _init_fixtures(self):
try:
Driver.create_table(self.driver, self.table)
except Exception as e:
log.debug(e)
self._init_fixtures(ledger)

def _init_fixtures(self, ledger):
if self.table not in Driver.tables(ledger):
try:
Driver.create_table(self.driver, self.table)
except Exception as e:
log.debug(e)
try:
Driver.create_index(self.driver, self.table, self.index)
except Exception as e:
Expand Down
12 changes: 12 additions & 0 deletions innoldb/settings.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import os
import logging
from dotenv import load_dotenv

APP_DIR = os.path.dirname(os.path.abspath(__file__))
Expand All @@ -11,3 +12,14 @@

LEDGER = os.environ.setdefault('LEDGER', 'laboratory')
DEFAULT_INDEX = os.environ.setdefault('DEFAULT_INDEX', 'id')

LOG_LEVEL = os.environ.setdefault('LOG_LEVEL', None)

def get_log_level():
if LOG_LEVEL == 'INFO':
return logging.INFO
if LOG_LEVEL == 'DEBUG':
return logging.DEBUG
if LOG_LEVEL == 'ERROR':
return logging.ERROR
return logging.NOTSET
58 changes: 58 additions & 0 deletions innoldb/version.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import os
import sys

MAJOR = 0
MINOR = 1
MICRO = 2

app_dir = os.path.dirname(os.path.realpath(__file__))
project_dir = os.path.dirname(os.path.dirname(app_dir))
version_file = os.path.join(project_dir, 'version.txt')


def load_current_version():
with open(version_file, 'r') as f:
ver = f.read()
return ver


def save_new_version(version_str):
with open(version_file, 'w') as f:
f.write(version_str)


def to_version_array(version_string):
version_array = version_string.split('.')
return [int(x) for x in version_array]


def to_version_string(version_array):
version_string_array = [str(x) for x in version_array]
return '.'.join(version_string_array)


def iterate_index(version_string, version_index):
version_array = to_version_array(version_string)
version_array[version_index] += 1
return to_version_string(version_array)


def reset_index(version_string, version_index):
version_array = to_version_array(version_string)
version_array[version_index] = 0
return to_version_string(version)


if __name__ == "__main__":
version = load_current_version()
parsed_args = [str(x).lower() for x in sys.argv]
if 'major' in parsed_args:
version = iterate_index(version, MAJOR)
version = reset_index(version, MINOR)
version = reset_index(version, MICRO)
if 'minor' in parsed_args:
version = iterate_index(version, MINOR)
version = reset_index(version, MICRO)
if 'micro' in parsed_args:
version = iterate_index(version, MICRO)
save_new_version(version)
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
amazon.ion==0.9.1
boto3==1.20.49
pyqldb==3.2.2
python-dotenv==0.19.2
pytest==7.0.0
Expand Down
4 changes: 2 additions & 2 deletions scripts/cf-stack
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ then
fi

cp $PROJECT_DIR/cf/qldb.yml ./qldb.yml
log "Creating \e[1mQLDB-${LEDGER}-Stack\e[0m"
log "Creating \e[1mQLDB-${LEDGER^}-Stack\e[0m"
aws cloudformation create-stack \
--stack-name "QLDB-${LEDGER}-Stack" \
--stack-name "QLDB-${LEDGER^}-Stack" \
--template-body file://qldb.yml \
--parameters ParameterKey=ledgerName,ParameterValue=$LEDGER
rm ./qldb.yml
1 change: 1 addition & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ package_dir=
packages=find:
install_requires =
amazon.ion >=0.9.1
boto3 >=1.20.49
pyqldb >=3.2.2
python-dotenv >=0.19.2
include_package_data = True
Expand Down

0 comments on commit 8fdb654

Please sign in to comment.