A utility library that generates service name convention details based on a repo url.
Project description
Gogo-utils
gogo-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 gogoutils 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file gogo_utils-1.11.1-py2.py3-none-any.whl
.
File metadata
- Download URL: gogo_utils-1.11.1-py2.py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a8e3fdbb446d1ac703cb51217b13bd3f2d9af44b1993dc4e60ef7c523333a0a7 |
|
MD5 | 673163caf79d726f4a540d6440230a84 |
|
BLAKE2b-256 | 14fad9f4519dc75c7b1b2a8f61f0852aa84fcfcfa5a9cfca2906a8b7e6413c19 |