foremast-utils
foremast-utils is a utility library that generates a service name convention based on a repo url. The library is mainly used to ensure that an application is able to easily know the path to a service it may need.
from foremastutils import Parser, Generator
url = 'https://github.com/foremast/test.git'
project, repo = Parser(url).parse_url()
# a way to customize based on your conventions
my_formats = {
'jenkins_job_name': '{project}-{repo}-master',
'app': 'app-{project}{repo}',
'custom': '{project}*.*{repo}',
}
info = Generator(project, repo, 'dev', formats=my_formats)
info.jenkins()
# {'name': 'foremast-test-master'}
info.app_name()
# app-foremasttest
info.custom
# foremast*.*test
Classes
Parser
This class is needed to parse and gather details about a git repository. A url is split up and the result is a project, repo.
Generator
This class provides details about an application’s details when using different technologies. Its a simple and concise way to know how a specific app is referenced in jenkins, gitlab, s3, iam, dns and among other services tools.
Formats
This class provides a mechanism to alter the way Generator generates certain application references. It is mainly referenced within Generator to provide that functionality.
In setting up the format the following variables are exposed:
VARIABLE |
DESCRIPTION |
|---|---|
domain |
Domain |
env |
Environment |
project |
Git project/group name (lowercase) |
raw_project |
Git project/group name |
raw_repo |
Git repo name |
repo |
Git repo name (lowercase) |
These are the services you can customize the formats along with their default format:
SERVICE |
DEFAULT |
DESCRIPTION |
|---|---|---|
apigateway_domain |
api.{env}.{domain} |
API gateway base domain |
app |
{repo}{project} |
Application Name |
dns_elb |
{repo}.{project}.{env}.{domain} |
FQDN of DNS ELB |
dns_instance |
{repo}{project}-xx.{env}.{domain} |
FQDN of instances |
domain |
example.com |
Domain |
elb_app |
{repo}{project} |
ELB Name |
git_repo |
{raw_project}/{raw_repo} |
Apps git repo |
git_repo_configs |
{raw_project}/{raw_repo}-config |
Config git repo |
git_repo_qe |
{raw_project}/{raw_repo}-qa |
QA’s git repo |
iam_base |
{project}_{repo} |
IAM profile base |
iam_group |
{project} |
IAM group name |
iam_lambda_role |
{project}_{repo}_lambda_role |
Lambda IAM role name |
iam_policy |
{project}_{repo}_policy |
IAM policy name |
iam_profile |
{project}_{repo}_profile |
IAM profile name |
iam_role |
{project}_{repo}_role |
IAM role name |
iam_user |
{project}_{repo} |
IAM username |
jenkins_job_name |
{project}_{repo} |
Jenkins job name |
s3_app_bucket |
{project}-{repo} |
Application specific S3 bucket name |
s3_app_region_bucket |
{project}-{repo}-{region} |
Application specific S3 bucket name with region |
s3_archaius_name |
archaius-{env}/{project}/{repo}{project}/ |
S3 full path for archaius |
s3_bucket |
archaius-{env} |
S3 archaius bucket name |
s3_bucket_path |
{project}/{repo}{project} |
S3 path for app (within s3_bucket) |
security_group_app |
{repo}{project} |
Security Group name |
shared_s3_app_bucket |
common-{project} |
S3 bucket name for shared buckets |
shared_s3_app_region_bucket |
common-{project}-{region} |
S3 bucket name for shared buckets with region |
Contributions
We encourage contributions, feedback and any bug fixes.
Running Tests
Running tests are very quick and easy when using tox. We validate against python 2.7 and 3.4+
To run the tests simply execute
# only needed once
$ pip install -r requirements-dev.txt
$ tox
Metadata
Release files for foremast-utils 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| foremast-utils-2.0.0.tar.gz | 34.7 kB | Without provenance | Details for foremast-utils-2.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| foremast_utils-2.0.0-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details for foremast_utils-2.0.0-py2.py3-none-any.whl |
Total release size: 46.3 kB
Release files / foremast-utils-2.0.0.tar.gz
| Download URL | foremast-utils-2.0.0.tar.gz |
|---|---|
| Size | 34.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
45026787471078a0571954be3d485ebb6fa4b7fcaaadb2ebb5f9956e26785a40
|
|
BLAKE2b-256 checksum How to use checksums |
d319958a42cf1c52036bfab31b5f76f299e46b6e1c06978a0605e1774333b6ec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Release files / foremast_utils-2.0.0-py2.py3-none-any.whl
| Download URL | foremast_utils-2.0.0-py2.py3-none-any.whl |
|---|---|
| Size | 11.7 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
3af23772ba259ae912a009f2c445dba64f14d7808f7249c1ba22841a07fe5778
|
|
BLAKE2b-256 checksum How to use checksums |
f41bd5d4ebee78221d901ba1e7ca7ea80e00653d3e72089c9ababe337138d29a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Security for foremast-utils 2.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.