Giter Site home page Giter Site logo

csp-billing-adapter-k8s's Introduction

CSP Billing Adapter Kubernetes Plugin

This is a plugin for csp-billing-adapter that provides storage hook implementations. It also implements the get_usage_data hook for the adapter. The namespace is configured based on the ADAPTER_NAMESPACE environment variable which is expected to be set in the container.

The following function hooks are implemented:

Setup

Setup adapter

The setup_adapter function authenticates the current session. It tries both the in cluster config and Kube config. If both fail an exception is raised.

Cache

save_cache

Stores the adapter cache in an opaque secret named csp-adapter-cache in the namespace determined by the above environment varaible. If the cache already exists no save is performed. In this case it's expected to use the update_cache function instead.

update_cache

Updates or replaces the adapter cache in the csp-adapter-cache secret using the configured namespace.

get_cache

Retrieves the cache from the secret named csp-adapter-cache. If the cache is not found None is returned.

CSP Config

save_csp_config

Stores the adapter csp config in configMap named csp-config in the configured namespace. If csp-config already exists nothing is saved. It is expected to use update_csp_config to make updates to an existing csp-config.

update_csp_config

Updates or replace the configMap named csp-config in the configured namespace.

get_csp_config

Retrieves the csp config from the configMap named csp-config. If the csp config is not found None is returned.

Usage

get_usage_data

Retrieves usage data from the configured custom resource definition (CRD). The location, name and namespace of the CR are configured using environment variables:

ADAPTER_NAMESPACE:The namespace where the adapter is deployed.

USAGE_CRD_PLURAL: The plural name of the K8s CRD.

USAGE_RESOURCE: The name of the CRD object that contains the usage data.

USAGE_API_VERSION: The API version of the usage CRD to use. Example "v1.

USAGE_API_GROUP: The API group where the CRD exists.

The CRD is expected to have a number of fields. reporting_time is required and is expected to be a RFC 3339 compliant in UTC with the following format: YYYY-MM-DDTHH:MM:SS.FFFFFF+00:00. base_product is optional and if it's provided it is a string containing information about the product name and version. At least one usage field but there can be more than one.

Archive

save_metering_archive

Stores the adapter metering archive in a configMap named metering-archive in the configured namespace. If metering-archive already exists it is updated with the latest data.

get_metering_archive

Retrieves the metering archive from the configMap named metering-archive. If the metering archive is not found an empty list is returned.

get_archive_location

Returns the location of the metering archive. This is the config map name metering-archive.

csp-billing-adapter-k8s's People

Contributors

smarlowucf avatar rtamalin avatar rjschwei avatar

Watchers

James Cloos avatar  avatar John Paul Adrian Glaubitz avatar Jesús Bermúdez Velázquez avatar  avatar Joachim Gleissner avatar Joel Gordon avatar Keith Berger avatar Gustavo Basso avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.