Documentation ¶
Overview ¶
Copyright (c) 2017 Cisco and/or its affiliates.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
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 config contains helper functions for parsing of configuration files.
|
Package config contains helper functions for parsing of configuration files. |
Package core manages the lifecycle of all plugins (start, graceful shutdown) and defines the core lifecycle SPI.
|
Package core manages the lifecycle of all plugins (start, graceful shutdown) and defines the core lifecycle SPI. |
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 transport client and server that satisfy the datasync API.
|
Package grpcsync implements (in ALPHA VERSION) the gRPC transport client and server that satisfy the datasync API. |
kvdbsync
Package kvdbsync implements the key-value data store client and server that satisfythe datasync API.
|
Package kvdbsync implements the key-value data store client and server that satisfythe datasync API. |
kvdbsync/local
Package local implements DB Transactions for the local "in memory" transport.
|
Package local implements DB Transactions for the local "in memory" transport. |
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 is a generated protocol buffer package.
|
Package msg is a generated protocol buffer package. |
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. |
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/etcdv3
Package etcdv3 implements the key-value Data Broker client API for the etcdv3 key-value data store.
|
Package etcdv3 implements the key-value Data Broker client API for the etcdv3 key-value data store. |
keyval/etcdv3/mocks
Package mocks implements an embedded etcdv3 mock used in unit & integration tests.
|
Package mocks implements an embedded etcdv3 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/plugin
Package plugin contains a keyval plugin skeleton used in various key-value data store clients (e.g.
|
Package plugin contains a keyval plugin skeleton used in various key-value data store clients (e.g. |
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. |
etcdv3_lib/model/phonebook
Package phonebook is a generated protocol buffer package.
|
Package phonebook is a generated protocol buffer package. |
etcdv3_lib/view
Package view contains an example that shows how to read data from etcdv3.
|
Package view contains an example that shows how to read data from etcdv3. |
model
Package etcd_example is a generated protocol buffer package.
|
Package etcd_example is a generated protocol buffer package. |
redis_lib/airport/model
Package flight is a generated protocol buffer package.
|
Package flight is a generated protocol buffer package. |
Package flavors contains predefined cn-infra flavors.
|
Package flavors contains predefined cn-infra flavors. |
health
|
|
probe
Package probe implements the K8s readiness and liveliness probe handlers.
|
Package probe implements the K8s readiness and liveliness probe handlers. |
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/model/status
Package status is a generated protocol buffer package.
|
Package status is a generated protocol buffer package. |
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 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. |
logroot
Package logroot contains the default global logger.
|
Package logroot contains the default global logger. |
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. |
rpc
|
|
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. |
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. |
tests
|
|
utils
|
|
addrs
Package addrs contains helpers for ip and mac address conversion.
|
Package addrs contains helpers for ip and mac address conversion. |
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. |