Documentation ¶
Overview ¶
Package cninfra is the parent package for all packages that are parts of the CN-Infra platform - a Golang platform for building cloud-native microservices.
The CN-Infra platform is a modular platform comprising a core and a set of plugins. The core provides lifecycle management for plugins, the plugins provide the functionality of the platform. A plugin can consist of one or more Golang packages. Out of the box, the CN-Infra platform provides reusable plugins for logging, health checks, messaging (e.g. Kafka), a common front-end API and back-end connectivity to various data stores (Etcd, Cassandra, Redis, ...), and REST and gRPC APIs.
The CN-Infra platform can be extended by adding a new platform plugin, for example a new data store client or a message bus adapter. Also, each application built on top of the platform is basically just a set of application-specific plugins.
Directories ¶
Path | Synopsis |
---|---|
Package agent provides the life-cycle management agent for plugins.
|
Package agent provides the life-cycle management agent for plugins. |
Package config contains helper functions for parsing of configuration files.
|
Package config contains helper functions for parsing of configuration files. |
Package datasync defines the datasync API, which abstracts the data transport between app plugins and backend data sources.
|
Package datasync defines the datasync API, which abstracts the data transport between app plugins and backend data sources. |
grpcsync
Package grpcsync implements (in ALPHA VERSION) the gRPC client and server that satisfies the datasync API (see the definition of the service in ../syncbase/msg package).
|
Package grpcsync implements (in ALPHA VERSION) the gRPC client and server that satisfies the datasync API (see the definition of the service in ../syncbase/msg package). |
kvdbsync
Package kvdbsync defines a key-value data store client API for unified access among key-value datastore servers.
|
Package kvdbsync defines a key-value data store client API for unified access among key-value datastore servers. |
kvdbsync/local
Package local implements DB Transactions for the local "in memory" transport.
|
Package local implements DB Transactions for the local "in memory" transport. |
msgsync
Package msgsync propagates protobuf messages to a particular topic.
|
Package msgsync propagates protobuf messages to a particular topic. |
restsync
Package restsync implements (in ALPHA VERSION) the datasync API for the HTTP/REST transport.
|
Package restsync implements (in ALPHA VERSION) the datasync API for the HTTP/REST transport. |
resync
Package resync implements the mechanism to notify previously registered plugins that the resync procedure needs to start.
|
Package resync implements the mechanism to notify previously registered plugins that the resync procedure needs to start. |
syncbase
Package syncbase defines common structures used in multiple datasync transports.
|
Package syncbase defines common structures used in multiple datasync transports. |
syncbase/msg
Package msg contains: - the definition of PROTOBUF structures and gRPC service, - helpers for mapping between PROTOBUF structures & the datasync_api.go.
|
Package msg contains: - the definition of PROTOBUF structures and gRPC service, - helpers for mapping between PROTOBUF structures & the datasync_api.go. |
Package db is the parent package for the Data Broker client implementations for various key-value and SQL data stores.
|
Package db is the parent package for the Data Broker client implementations for various key-value and SQL data stores. |
cryptodata
Package cryptodata provides support for wrapping key-value store with crypto layer that will automatically decrypt all data passing through.
|
Package cryptodata provides support for wrapping key-value store with crypto layer that will automatically decrypt all data passing through. |
keyval
Package keyval provides an abstraction of a key-value data store and defines the keyval data broker API.
|
Package keyval provides an abstraction of a key-value data store and defines the keyval data broker API. |
keyval/etcd
Package etcd implements the key-value Data Broker client API for the etcd key-value data store.
|
Package etcd implements the key-value Data Broker client API for the etcd key-value data store. |
keyval/etcd/mocks
Package mocks implements an embedded etcd mock used in unit & integration tests.
|
Package mocks implements an embedded etcd mock used in unit & integration tests. |
keyval/kvproto
Package kvproto provides a wrapper that simplifies the storing and retrieving of proto-modelled data into/from a key-value data store.
|
Package kvproto provides a wrapper that simplifies the storing and retrieving of proto-modelled data into/from a key-value data store. |
keyval/redis
Package redis is the implementation of the key-value Data Broker client API for the Redis key-value data store.
|
Package redis is the implementation of the key-value Data Broker client API for the Redis key-value data store. |
sql
Package sql provides an abstraction of a data store that supports an SQL-like query language and defines the SQL data broker API.
|
Package sql provides an abstraction of a data store that supports an SQL-like query language and defines the SQL data broker API. |
sql/cassandra
Package cassandra is the implementation of the SQL Data Broker client API for the Cassandra data store.
|
Package cassandra is the implementation of the SQL Data Broker client API for the Cassandra data store. |
Package examples contains examples that demonstrate the usage of various cn-infra components.
|
Package examples contains examples that demonstrate the usage of various cn-infra components. |
bolt-plugin
Example demonstrates creating a Bolt plugin
|
Example demonstrates creating a Bolt plugin |
cassandra-lib
Example application "cassandra-lib" demonstrates the usage of the cassandra library in a plain go program.
|
Example application "cassandra-lib" demonstrates the usage of the cassandra library in a plain go program. |
configs-plugin
Example program "configs-plugin" demonstrates the usage of PluginConfig API.
|
Example program "configs-plugin" demonstrates the usage of PluginConfig API. |
cryptodata-plugin
Example application "cryptodata-plugin" demonstrates the usage of the cryptodata API.
|
Example application "cryptodata-plugin" demonstrates the usage of the cryptodata API. |
cryptodata-proto-plugin
Example application "cryptodata-proto-plugin" demonstrates the usage of the cryptodata API.
|
Example application "cryptodata-proto-plugin" demonstrates the usage of the cryptodata API. |
cryptodata-proto-plugin/ipsec
Package ipsec is a generated protocol buffer package.
|
Package ipsec is a generated protocol buffer package. |
datasync-plugin
Example application "datasync-plugin" demonstrates the usage of the datasync API.
|
Example application "datasync-plugin" demonstrates the usage of the datasync API. |
etcd-lib
Package etcdlib contains a collection of examples demonstrating the usage of the etcd library.
|
Package etcdlib contains a collection of examples demonstrating the usage of the etcd library. |
etcd-lib/editor
Example program "editor" demonstrates CREATE/UPDATE/DELETE operations with etcd library.
|
Example program "editor" demonstrates CREATE/UPDATE/DELETE operations with etcd library. |
etcd-lib/view
Example program "view" shows how to read data from etcd datastore.
|
Example program "view" shows how to read data from etcd datastore. |
etcd-lib/watcher
Example program *watcher* shows how to watch for changes in etcd datastore.
|
Example program *watcher* shows how to watch for changes in etcd datastore. |
flags-lib
Example program "flags-lib" demonstrates how to register CLI flags and how to display their runtime values.
|
Example program "flags-lib" demonstrates how to register CLI flags and how to display their runtime values. |
grpc-plugin
Package grpcplugin contains grpc server & grpc client example.
|
Package grpcplugin contains grpc server & grpc client example. |
grpc-plugin/grpc-server
Example demonstrates the use of GRPC plugin API.
|
Example demonstrates the use of GRPC plugin API. |
kafka-lib
Package kafkalib contains multiple examples with the kafka library.
|
Package kafkalib contains multiple examples with the kafka library. |
kafka-lib/asyncproducer
Asyncproducer is a simple command line tool for sending messages to Kafka using an asynchronous Kafka producer.
|
Asyncproducer is a simple command line tool for sending messages to Kafka using an asynchronous Kafka producer. |
kafka-lib/consumer
Consumer is a simple command line tool for consuming a Kafka topic and printing the received messages to the stdout.
|
Consumer is a simple command line tool for consuming a Kafka topic and printing the received messages to the stdout. |
kafka-lib/mux
Mux is a simple command line tool demonstrating the usage of Kafka multiplexer API.
|
Mux is a simple command line tool demonstrating the usage of Kafka multiplexer API. |
kafka-lib/syncproducer
Syncproducer is simple command line tool for sending messages to Kafka using a synchronous Kafka producer.
|
Syncproducer is simple command line tool for sending messages to Kafka using a synchronous Kafka producer. |
kafka-lib/utils
Package utils implements various tools used in examples for Kafka library.
|
Package utils implements various tools used in examples for Kafka library. |
kafka-plugin
Package kafkaplugin contains multiple examples with the kafka plugin.
|
Package kafkaplugin contains multiple examples with the kafka plugin. |
kafka-plugin/hash-partitioner
Example "hash-partitioner" demonstrates the use of Kafka plugin API with automatic (hash-based) partitioning.
|
Example "hash-partitioner" demonstrates the use of Kafka plugin API with automatic (hash-based) partitioning. |
kafka-plugin/manual-partitioner
Example "manual-partitioner" demonstrates the use of Kafka plugin API with a focus on manual partitioning.
|
Example "manual-partitioner" demonstrates the use of Kafka plugin API with a focus on manual partitioning. |
kafka-plugin/post-init-consumer
Example "later-stage" demonstrates the use partition watcher initialized and used after multiplexer Init()
|
Example "later-stage" demonstrates the use partition watcher initialized and used after multiplexer Init() |
logs-lib
Package logslib contains multiple examples showing how to use the logger library with a focus on switching between the log levels.
|
Package logslib contains multiple examples showing how to use the logger library with a focus on switching between the log levels. |
logs-lib/basic
Example "basic" presents the most commonly used APIs of the logger library.
|
Example "basic" presents the most commonly used APIs of the logger library. |
logs-lib/custom
Example "custom" shows how to customize the logger.
|
Example "custom" shows how to customize the logger. |
logs-lib/http
Example "http" demonstrates how to change the log level remotely via REST.
|
Example "http" demonstrates how to change the log level remotely via REST. |
logs-plugin
Example "logs-plugin" shows how to use the logger library from a simple plugin.
|
Example "logs-plugin" shows how to use the logger library from a simple plugin. |
model
Package etcdexample explains how to generate Golang structures from protobuf-formatted data.
|
Package etcdexample explains how to generate Golang structures from protobuf-formatted data. |
redis-lib
Package redislib contains a collection of examples demonstrating the usage of the redis library.
|
Package redislib contains a collection of examples demonstrating the usage of the redis library. |
redis-lib/airport
A bit more advanced example demonstrating the redis library API.
|
A bit more advanced example demonstrating the redis library API. |
redis-lib/airport/model
Package flight defines protobuf-formatted data as used by the airport example.
|
Package flight defines protobuf-formatted data as used by the airport example. |
redis-lib/simple
A simple example demonstrating the redis library API.
|
A simple example demonstrating the redis library API. |
redis-plugin
Example demonstrates creating a Redis plugin
|
Example demonstrates creating a Redis plugin |
simple-agent
Example simple-agent shows how easily a set of CN-infra based plugins can be turned into an application.
|
Example simple-agent shows how easily a set of CN-infra based plugins can be turned into an application. |
statuscheck-plugin
Example application "statuscheck-plugin" demonstrates the usage of statusCheck plugin etcd-plugin is monitored by StatusCheck plugin and examplePlugin reads the state.
|
Example application "statuscheck-plugin" demonstrates the usage of statusCheck plugin etcd-plugin is monitored by StatusCheck plugin and examplePlugin reads the state. |
exec
|
|
Package health contains plugins for monitoring of the health status of the agent.
|
Package health contains plugins for monitoring of the health status of the agent. |
probe
Package probe implements HTTP probes: the K8s readiness and liveliness probe handlers + Prometheus format.
|
Package probe implements HTTP probes: the K8s readiness and liveliness probe handlers + Prometheus format. |
statuscheck
Package statuscheck defines the status report API for other CN-Infra plugins and implements the health status aggregator/exporter.
|
Package statuscheck defines the status report API for other CN-Infra plugins and implements the health status aggregator/exporter. |
statuscheck/pluginstatusmap
Package pluginstatusmap implements specialization of idxmap used to store plugin status by plugin name.
|
Package pluginstatusmap implements specialization of idxmap used to store plugin status by plugin name. |
Package idxmap defines a mapping structure which supports mapping change notifications and retrieval of items by fields in the value structure.
|
Package idxmap defines a mapping structure which supports mapping change notifications and retrieval of items by fields in the value structure. |
mem
Package mem provides in-memory implementation of the mapping with multiple indexes.
|
Package mem provides in-memory implementation of the mapping with multiple indexes. |
Package infra provides Plugin interface and related utilities.
|
Package infra provides Plugin interface and related utilities. |
Package logging defines the logging API.
|
Package logging defines the logging API. |
logmanager
Package logmanager implements the log manager that allows users to set log levels at run-time via a REST API.
|
Package logmanager implements the log manager that allows users to set log levels at run-time via a REST API. |
logrus
Package logrus implements the logging API based on the Logrus logger.
|
Package logrus implements the logging API based on the Logrus logger. |
Package messaging is the parent package for implementations of various messaging clients, e.g.
|
Package messaging is the parent package for implementations of various messaging clients, e.g. |
kafka
Package kafka implements a client for the Kafka broker.
|
Package kafka implements a client for the Kafka broker. |
kafka/client
Package client implements the synchronous and asynchronous kafka Producers and the kafka Consumer.
|
Package client implements the synchronous and asynchronous kafka Producers and the kafka Consumer. |
kafka/mux
Package mux implements the session multiplexer that allows multiple plugins to share a single connection to a Kafka broker.
|
Package mux implements the session multiplexer that allows multiple plugins to share a single connection to a Kafka broker. |
Package rpc contains plugins providing RPC-like access.
|
Package rpc contains plugins providing RPC-like access. |
grpc
Package grpc implements the GRPC netListener through which plugins can expose their services/API to the outside world.
|
Package grpc implements the GRPC netListener through which plugins can expose their services/API to the outside world. |
prometheus
Package prometheus implements plugin that allows to expose prometheus metrics.
|
Package prometheus implements plugin that allows to expose prometheus metrics. |
rest
Package rest implements the HTTP server through which plugins can expose their REST APIs to the outside world.
|
Package rest implements the HTTP server through which plugins can expose their REST APIs to the outside world. |
rest/mock
Package mock implements a mock HTTP server.
|
Package mock implements a mock HTTP server. |
rest/security/password-hasher
package vpp-agent-ctl implements the vpp-agent-ctl test tool for testing VPP Agent plugins.
|
package vpp-agent-ctl implements the vpp-agent-ctl test tool for testing VPP Agent plugins. |
Package servicelabel provides support for creating/retrieving an identifier (a service label) for a CN-Infra based app.
|
Package servicelabel provides support for creating/retrieving an identifier (a service label) for a CN-Infra based app. |
Package utils contains multiple utilities and helper functions.
|
Package utils contains multiple utilities and helper functions. |
addrs
Package addrs contains helpers for ip and mac address conversion.
|
Package addrs contains helpers for ip and mac address conversion. |
clienttls
Package clienttls provides tls utilities.
|
Package clienttls provides tls utilities. |
runtimeutils
Package runtimeutils contains utilities for inspecting Go's runtime system.
|
Package runtimeutils contains utilities for inspecting Go's runtime system. |
safeclose
Package safeclose provides utilities for safe closing of I/O resources.
|
Package safeclose provides utilities for safe closing of I/O resources. |
structs
Package structs provides reflection utilities to inspect structures.
|
Package structs provides reflection utilities to inspect structures. |