Skip to main content

Abstraction layer for CF and Kube env variables

Project description

https://travis.ibm.com/arf/IBM-Cloud-Env.svg?token=n4pCcFL1DYKbYcWx28RG&branch=development

Available on PyPI

This library is the Python version of the the JavaScript IBMCloudEnv library

The ibmcloudenv package allows to abstract environment variables from various Cloud compute providers, such as, but not limited to, CloudFoundry and Kubernetes, so the application could be environment-agnostic.

The module allows to define an array of search patterns that will be executed one by one until required value is found.

Installation

pip install ibmcloudenv

Usage

Create a JSON file containing your mappings and initialize the module

from ibmcloudenv import IBMCloudEnv
IBMCloudEnv.init("/path/to/the/mappings/file/relative/to/prject/root")

In case mappings file path is not specified in the IBMCloudEnv.init() the module will try to load mappings from a default path of /server/config/mappings.json.

Supported search patterns types

ibm_cloud_config supports searching for values using three search pattern types - cloudfoundry, env, file.

  • Using cloudfoundry allows to search for values in VCAP_SERVICES and VCAP_APPLICATIONS environment variables

  • Using env allows to search for values in environment variables

  • Using file allows to search for values in text/json files

Example search patterns

  • cloudfoundry:service-instance-name - searches through parsed VCAP_SERVICES environment variable and returns the credentials object of the matching service instance name

  • cloudfoundry:$.JSONPath - searches through parsed VCAP_SERVICES and VCAP_APPLICATION environment variables and returns the value that corresponds to JSONPath

  • env:env-var-name - returns environment variable named “env-var-name”

  • env:env-var-name:$.JSONPath - attempts to parse the environment variable “env-var-name” and return a value that corresponds to JSONPath

  • file:/server/config.text - returns content of /server/config.text file

  • file:/server/config.json:$.JSONPath - reads the content of /server/config.json file, tries to parse it, returns the value that corresponds to JSONPath

mappings.json file example

{
    "service1-credentials": {
        "searchPatterns": [
            "cloudfoundry:my-service1-instance-name",
            "env:my-service1-credentials",
            "file:/localdev/my-service1-credentials.json"
        ]
    },
    "service2-username": {
        "searchPatterns":[
            "cloudfoundry:$.service2[@.name=='my-service2-instance-name'].credentials.username",
            "env:my-service2-credentials:$.username",
            "file:/localdev/my-service1-credentials.json:$.username"
        ]
    }
}

Using the values in application

In your application retrieve the values using below commands

service1credentials = IBMCloudEnv.getDictionary("service1-credentials") # this will be a dictionary
service2username = IBMCloudEnv.getString("service2-username") # this will be a string

Contributions

Do a pull request against development, make sure the build passes. A team member will review and merge your pull request. Once merged to development, the version will be auto-incremented. Do a pull request against master, once that PR is reviewed and merged, a new version will be published.

Make sure that your commit contains fix for patch changes feat for minor changes and BREAKING CHANGES for minor changes

Example shown below

fix(Readme) - fixed spelling error

For more information on the commit convention visit Conventional Commits

Deprecation Note

ibm_cloud_env is deprecated use ibmcloudenv.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ibmcloudenv-0.0.18.tar.gz (6.2 kB view hashes)

Uploaded Source

Built Distribution

ibmcloudenv-0.0.18-py2-none-any.whl (7.5 kB view hashes)

Uploaded Python 2

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page