Difference between revisions of "Project Proposals/govpp"

From fd.io
Jump to: navigation, search
(Created page with "Category:Project Proposal <!-- Please note: fd.io code is to be licensed under the Apache 2.0 license unless an exception is approved by the board --> == Name == <!-- The...")
 
Line 53: Line 53:
 
#* core: main functionality of the govpp, sends and receives the messages to/from VPP using the adapter, marshalls/unmarshalls them and forwards them between the client Go channels and the VPP
 
#* core: main functionality of the govpp, sends and receives the messages to/from VPP using the adapter, marshalls/unmarshalls them and forwards them between the client Go channels and the VPP
 
#* adapter: the adapter between the govpp core and the VPP, responsible for sending and receiving binary-encoded data via shared memory, leverages VPP pneum library
 
#* adapter: the adapter between the govpp core and the VPP, responsible for sending and receiving binary-encoded data via shared memory, leverages VPP pneum library
# (future) Cloud-native Management Agent
+
# Other code to ease the adoption of fd.io by Go users
 
# Supporting code:
 
# Supporting code:
 
#* Example code
 
#* Example code

Revision as of 00:06, 12 April 2017


Name

GoVPP (Golang VPP Management API & Management Agent)

Project Contact Name and Email

Repository Name

govpp

Description

GoVPP is a set of Golang packages that provide API for VPP management based on the Go bindings generated from the VPP binary APIs. It can be used as the foundation for any VPP management/control plane written in Go.

Apart from the packages providing the API and tools allowing to write VPP management applications in Go from scratch, the project also aims to provide a cloud-native VPP management agent that can be used in VPP-based container infrastructure.

Scope

This section is devided into 2 sections: in-scope and out-of-scope to clearly define what is developed as part of GoVPP project and what will be just leveraged from the main VPP project.

GoVPP project scope:

  1. Go bindings generator:
    • generates Go structs from binary API definitions in JSON
    • annotates the generated Go bindings so they can be marshalled / unmarshalled to/from binary data as understood by VPP
  2. GoVPP API packages:
    • api: high-level API for communication with govpp core using Go channels
    • core: main functionality of the govpp, sends and receives the messages to/from VPP using the adapter, marshalls/unmarshalls them and forwards them between the client Go channels and the VPP
    • adapter: the adapter between the govpp core and the VPP, responsible for sending and receiving binary-encoded data via shared memory, leverages VPP pneum library
  3. Other code to ease the adoption of fd.io by Go users
  4. Supporting code:
    • Example code
    • Unit tests

Out of scope:

  1. Generator of JSON definitions of VPP binary APIs
  2. pneum library used to send & receive binary-encoded data to/from VPP

Initial Committers

Vendor Neutral

No issue regarding vendor neutrality.

Meets Board Policy (including IPR, being within Board defined Scope etc)

Meets board policy as expressed in Technical Community Charter and IP Policy

Administrata

  • Request for Project proposal consideration
    • Email: (place link to email to TSC proposing project, this can be obtained from TSC Archives
    • Date: (date proposed, makes it simpler to calculate the pre-requisite 2 week time period of gestation before being permitted to be voted on)