Skip to content
Snippets Groups Projects
Commit 5ff9b205 authored by Manuel Kieweg's avatar Manuel Kieweg
Browse files

linter pleasing

parent 0028fb9d
No related branches found
No related tags found
1 merge request!155Northbound Interface
This commit is part of merge request !155. Comments created here will be created in the context of that merge request.
......@@ -2,6 +2,7 @@ package cli
import (
"context"
"errors"
"time"
ppb "code.fbi.h-da.de/cocsn/api/go/gosdn/pnd"
......@@ -18,6 +19,7 @@ import (
// TODO: Delete once proper certs are set up
var grpcWithInsecure = grpc.WithInsecure()
// Init initialises the CLI client.
func Init(addr string) error {
ctx := context.Background()
resp, err := getAllCore(ctx, addr)
......@@ -37,6 +39,7 @@ func Init(addr string) error {
return nil
}
// GetIds requests all UUID information from the controller
func GetIds(addr string) ([]*ppb.PrincipalNetworkDomain, error) {
ctx := context.Background()
resp, err := getAllCore(ctx, addr)
......@@ -58,6 +61,8 @@ func getAllCore(ctx context.Context, addr string) (*pb.GetResponse, error) {
return coreClient.Get(ctx, req)
}
// AddPnd takes a name, description and SBI UUID to create a new
// PrincipalNetworkDomain on the controller
func AddPnd(addr, name, description, sbi string) error {
coreClient, err := nbi.CoreClient(addr, grpcWithInsecure)
if err != nil {
......@@ -83,20 +88,26 @@ func AddPnd(addr, name, description, sbi string) error {
return nil
}
// GetPnd requests one or several PrincipalNetworkDomains from the
// controller. To request all PrincipalNetworkDomains without providing
// names or UUIDs use GetIds()
func GetPnd(addr string, args ...string) (*pb.GetResponse, error) {
coreClient, err := nbi.CoreClient(addr, grpcWithInsecure)
if err != nil {
return nil, err
}
if len(args) <= 0 {
return nil, errors.New("not enough arguments")
}
ctx := context.Background()
req := &pb.GetRequest{
Timestamp: time.Now().UnixNano(),
All: false,
Pid: args,
}
return coreClient.Get(ctx, req)
}
// GetChanges requests all pending and unconfirmed changes from the controller
func GetChanges(addr, pnd string) (*ppb.GetResponse, error) {
ctx := context.Background()
client, err := nbi.PndClient(addr, grpcWithInsecure)
......@@ -115,6 +126,8 @@ func GetChanges(addr, pnd string) (*ppb.GetResponse, error) {
return client.Get(ctx, req)
}
// Commit sends a commit request for one or multiple changes to the
// controller.
func Commit(addr, pnd string, cuids ...string) (*ppb.SetResponse, error) {
changes := make([]*ppb.SetChange, len(cuids))
for i, arg := range cuids {
......@@ -126,6 +139,8 @@ func Commit(addr, pnd string, cuids ...string) (*ppb.SetResponse, error) {
return commitConfirm(addr, pnd, changes)
}
// Confirm sends a confirm request for one or multiple changes to the
// controller
func Confirm(addr, pnd string, cuids ...string) (*ppb.SetResponse, error) {
changes := make([]*ppb.SetChange, len(cuids))
for i, arg := range cuids {
......@@ -151,6 +166,8 @@ func commitConfirm(addr, pnd string, changes []*ppb.SetChange) (*ppb.SetResponse
return client.Set(ctx, req)
}
// AddDevice adds a new device to the controller. The device name is optional.
// If no name is provided a name will be generated upon device creation.
func AddDevice(addr, username, password, sbi, pnd, deviceAddress, deviceName string) error {
pndClient, err := nbi.PndClient(addr, grpcWithInsecure)
if err != nil {
......@@ -184,6 +201,9 @@ func AddDevice(addr, username, password, sbi, pnd, deviceAddress, deviceName str
return nil
}
// GetDevice requests one or multiple devices belongin to a given
// PrincipalNetworkDomain from the controller. If no device identifier
// is provided, all devices are requested.
func GetDevice(addr, pid, path string, did ...string) (*ppb.GetResponse, error) {
pndClient, err := nbi.PndClient(addr, grpcWithInsecure)
if err != nil {
......@@ -209,6 +229,8 @@ func GetDevice(addr, pid, path string, did ...string) (*ppb.GetResponse, error)
return pndClient.Get(ctx, req)
}
// Update creates a ChangeRequest to update the given path with the given value
// at the given OND on the controller.
func Update(addr, did, pid, path, value string) (*ppb.SetResponse, error) {
req := &ppb.ChangeRequest{
Id: did,
......@@ -219,6 +241,8 @@ func Update(addr, did, pid, path, value string) (*ppb.SetResponse, error) {
return sendChangeRequest(addr, pid, req)
}
// Replace creates a ChangeRequest to replace the given path with the given value
// at the given OND on the controller.
func Replace(addr, did, pid, path, value string) (*ppb.SetResponse, error) {
req := &ppb.ChangeRequest{
Id: did,
......@@ -229,6 +253,8 @@ func Replace(addr, did, pid, path, value string) (*ppb.SetResponse, error) {
return sendChangeRequest(addr, pid, req)
}
// Delete creates a ChangeRequest to delete the given path node
// at the given OND on the controller.
func Delete(addr, did, pid, path string) (*ppb.SetResponse, error) {
req := &ppb.ChangeRequest{
Id: did,
......
......@@ -28,6 +28,7 @@ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
package cmd
import (
......
......@@ -5,6 +5,9 @@ import (
"google.golang.org/grpc"
)
// CoreClient returns a client for the gRPC Core service. It takes
// the address of the gRPC endpoint and optional grpc.DialOption
// as argument
func CoreClient(addr string, opts ...grpc.DialOption) (pb.CoreClient, error) {
conn, err := grpc.Dial(addr, opts...)
if err != nil {
......
......@@ -5,6 +5,9 @@ import (
"google.golang.org/grpc"
)
// PndClient returns a client for the gRPC PND service. It takes
// the address of the gRPC endpoint and optional grpc.DialOption
// as argument
func PndClient(addr string, opts ...grpc.DialOption) (ppb.PndClient, error) {
conn, err := grpc.Dial(addr, opts...)
if err != nil {
......
......@@ -6,6 +6,7 @@ import (
var pndc *nucleus.PndStore
// NewNBI receives a PndStore and returns a nre gRPC *NorthboundInterface
func NewNBI(pnds *nucleus.PndStore) *NorthboundInterface {
pndc = pnds
return &NorthboundInterface{
......@@ -14,6 +15,8 @@ func NewNBI(pnds *nucleus.PndStore) *NorthboundInterface {
}
}
// NorthboundInterface is the representation of the
// gRPC services used provided.
type NorthboundInterface struct {
Pnd *pnd
Core *core
......
......@@ -134,10 +134,12 @@ func (c *Change) Confirm() error {
return nil
}
// Age returns the passed time since the Change was created
func (c *Change) Age() time.Duration {
return time.Now().Sub(c.timestamp)
return time.Since(c.timestamp)
}
// State returns the changes's state.
func (c *Change) State() ppb.Change_State {
if !c.committed {
return ppb.Change_PENDING
......
......@@ -163,4 +163,5 @@ func (oc *OpenConfig) ID() uuid.UUID {
return oc.id
}
// Type returns the Southbound's type
func (oc *OpenConfig) Type() spb.Type { return spb.Type_OPENCONFIG }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment