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:
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.
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.
Updates or replaces the adapter cache in the csp-adapter-cache secret using the configured namespace.
Retrieves the cache from the secret named csp-adapter-cache. If the cache
is not found None
is returned.
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.
Updates or replace the configMap named csp-config in the configured namespace.
Retrieves the csp config from the configMap named csp-config. If the
csp config is not found None
is returned.
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.
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.
Retrieves the metering archive from the configMap named metering-archive. If the metering archive is not found an empty list is returned.
Returns the location of the metering archive. This is the config map name metering-archive.