From b7e35bcc2afb215bdb4cf633dfdd241ac1dc8a05 Mon Sep 17 00:00:00 2001 From: Reid 'arrdem' McKenzie Date: Sat, 8 May 2021 19:33:37 -0600 Subject: [PATCH] Get it all working --- .gitignore | 1 + projects/gandi/BUILD | 6 ++-- projects/gandi/src/python/BUILD | 7 ----- .../gandi/src/python/{ => gandi}/__init__.py | 0 .../gandi/src/python/{ => gandi}/client.py | 0 projects/public-dns/BUILD | 5 ++-- .../src/python/arrdem/updater/BUILD | 12 -------- .../src/python/arrdem/updater/__main__.py | 29 +++++++++++++++++++ tools/python/requirements.txt | 6 ++++ 9 files changed, 43 insertions(+), 23 deletions(-) delete mode 100644 projects/gandi/src/python/BUILD rename projects/gandi/src/python/{ => gandi}/__init__.py (100%) rename projects/gandi/src/python/{ => gandi}/client.py (100%) delete mode 100644 projects/public-dns/src/python/arrdem/updater/BUILD diff --git a/.gitignore b/.gitignore index 442874d..430cf4b 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ bazel-* tmp/ public/ +projects/public-dns/config.yml diff --git a/projects/gandi/BUILD b/projects/gandi/BUILD index fa5d946..c6f15d1 100644 --- a/projects/gandi/BUILD +++ b/projects/gandi/BUILD @@ -1,10 +1,12 @@ +package(default_visibility = ["//visibility:public"]) + py_library( name = "gandi", - src = globs(["src/python/**/*.py"]), + srcs = glob(["src/python/gandi/client.py"], []), imports = [ "src/python" ], deps = [ py_requirement("requests"), - ] + ], ) diff --git a/projects/gandi/src/python/BUILD b/projects/gandi/src/python/BUILD deleted file mode 100644 index 16c9f4f..0000000 --- a/projects/gandi/src/python/BUILD +++ /dev/null @@ -1,7 +0,0 @@ -python_library( - name="gandi", - sources=globs("*.py"), - dependencies=[ - "//3rdparty/python:requests", - ] -) diff --git a/projects/gandi/src/python/__init__.py b/projects/gandi/src/python/gandi/__init__.py similarity index 100% rename from projects/gandi/src/python/__init__.py rename to projects/gandi/src/python/gandi/__init__.py diff --git a/projects/gandi/src/python/client.py b/projects/gandi/src/python/gandi/client.py similarity index 100% rename from projects/gandi/src/python/client.py rename to projects/gandi/src/python/gandi/client.py diff --git a/projects/public-dns/BUILD b/projects/public-dns/BUILD index 1e0cdf4..ac7e79e 100644 --- a/projects/public-dns/BUILD +++ b/projects/public-dns/BUILD @@ -1,9 +1,10 @@ py_binary( name = "updater", - entry_point = "src/python/arrdem/updater/__main__.py", + main = "src/python/arrdem/updater/__main__.py", deps = [ "//projects/gandi", py_requirement("jinja2"), py_requirement("pyyaml"), - ] + py_requirement("meraki"), + ], ) diff --git a/projects/public-dns/src/python/arrdem/updater/BUILD b/projects/public-dns/src/python/arrdem/updater/BUILD deleted file mode 100644 index d844632..0000000 --- a/projects/public-dns/src/python/arrdem/updater/BUILD +++ /dev/null @@ -1,12 +0,0 @@ -python_binary( - name='updater', - source='__main__.py', - dependencies=[ - "//src/resources/zonefiles", - "//src/python/gandi", - "//3rdparty/python:requests", - "//3rdparty/python:jinja2", - "//3rdparty/python:PyYAML", - "//3rdparty/python:meraki", - ] -) diff --git a/projects/public-dns/src/python/arrdem/updater/__main__.py b/projects/public-dns/src/python/arrdem/updater/__main__.py index e00c5d5..882a40e 100644 --- a/projects/public-dns/src/python/arrdem/updater/__main__.py +++ b/projects/public-dns/src/python/arrdem/updater/__main__.py @@ -2,6 +2,35 @@ A quick and dirty public DNS script, super tightly coupled to my infrastructure. """ +import sys +import os + +def module_not_found_helper(excepthook): + def _helper(type, value, traceback): + if isinstance(value, ModuleNotFoundError): + path_fragment = value.name.replace(".", os.path.sep) + flag = False + for e in sys.path: + init = os.path.join(e, path_fragment, "__init__.py") + namedfile = os.path.join(e, path_fragment + ".py") + if os.path.exists(init): + print(f"Found candidate {init}", file=sys.stderr) + flag |= True + else: + print(f"{init} does not exist") + + if os.path.exists(namedfile): + print(f"Found candidate {namedfile}", file=sys.stderr) + flag |= True + else: + print(f"{namedfile} does not exist") + if not flag: + print(f"Found no candidates on the PYTHONPATH", file=sys.stderr) + excepthook(type, value, traceback) + return _helper + +sys.excepthook = module_not_found_helper(sys.excepthook) + import argparse import re from pprint import pprint diff --git a/tools/python/requirements.txt b/tools/python/requirements.txt index 011c4e6..41b862a 100644 --- a/tools/python/requirements.txt +++ b/tools/python/requirements.txt @@ -1,6 +1,8 @@ +aiohttp==3.7.4.post0 alabaster==0.7.12 anosql==1.0.2 appdirs==1.4.4 +async-timeout==3.0.1 attrs==20.3.0 autoflake==1.4 Babel==2.9.0 @@ -24,7 +26,9 @@ livereload==2.6.3 lxml==4.6.3 m2r==0.2.1 MarkupSafe==1.1.1 +meraki==1.7.2 mistune==0.8.4 +multidict==5.1.0 mypy-extensions==0.4.3 openapi-schema-validator==0.1.5 openapi-spec-validator==0.3.0 @@ -45,6 +49,7 @@ pytest-pudb==0.7.0 pytz==2021.1 PyYAML==5.4.1 recommonmark==0.7.1 +redis==3.5.3 regex==2021.4.4 requests==2.25.1 six==1.15.0 @@ -70,3 +75,4 @@ urllib3==1.26.4 urwid==2.1.2 wcwidth==0.2.5 yamllint==1.26.1 +yarl==1.6.3