server

package
v0.0.0-...-1d39891 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 12, 2020 License: Apache-2.0 Imports: 40 Imported by: 0

Documentation

Overview

Package server Skydive API

The Skydive REST API allows to communicate with a Skydive analyzer.

Schemes: http, https
Host: localhost:8082
BasePath: /api
Version: 0.24.0
License: Apache http://opensource.org/licenses/Apache-2.0
Contact: Skydive mailing list <skydive-dev@redhat.com>

Consumes:
- application/json

Produces:
- application/json
- text/plain

swagger:meta

Index

Constants

This section is empty.

Variables

View Source
var ErrDuplicatedResource = errors.New("Duplicated resource")

ErrDuplicatedResource is returned when a resource is duplicated

Functions

func NewWorkflowRuntime

func NewWorkflowRuntime(g *graph.Graph, tr *traversal.GremlinTraversalParser, server *Server) (*js.Runtime, error)

NewWorkflowRuntime returns a new Workflow runtime

func RegisterConfigAPI

func RegisterConfigAPI(r *shttp.Server, authBackend shttp.AuthenticationBackend)

RegisterConfigAPI registers a configuration endpoint (read only) in API server

func RegisterPcapAPI

func RegisterPcapAPI(r *shttp.Server, store storage.Storage, authBackend shttp.AuthenticationBackend)

RegisterPcapAPI registers a new pcap injector API

func RegisterStatusAPI

func RegisterStatusAPI(s *shttp.Server, r StatusReporter, authBackend shttp.AuthenticationBackend)

RegisterStatusAPI registers the status API endpoint

func RegisterTopologyAPI

func RegisterTopologyAPI(r *shttp.Server, g *graph.Graph, parser *traversal.GremlinTraversalParser, authBackend shttp.AuthenticationBackend)

RegisterTopologyAPI registers a new topology query API

func RegisterTungstenFabricAPI

func RegisterTungstenFabricAPI(r *shttp.Server, g *graph.Graph, authBackend shttp.AuthenticationBackend)

RegisterTungstenFabricAPI registers a new TungstenFabric query API

func RegisterWorkflowCallAPI

func RegisterWorkflowCallAPI(s *shttp.Server, authBackend shttp.AuthenticationBackend, apiServer *Server, g *graph.Graph, tr *traversal.GremlinTraversalParser) error

RegisterWorkflowCallAPI registers a new workflow call api handler

Types

type AlertAPIHandler

type AlertAPIHandler struct {
	BasicAPIHandler
}

AlertAPIHandler aims to exposes the Alert API.

func RegisterAlertAPI

func RegisterAlertAPI(apiServer *Server, authBackend shttp.AuthenticationBackend) (*AlertAPIHandler, error)

RegisterAlertAPI registers an Alert's API to a designated API Server

type AlertResourceHandler

type AlertResourceHandler struct {
	ResourceHandler
}

AlertResourceHandler aims to creates and manage a new Alert.

func (*AlertResourceHandler) Name

func (a *AlertResourceHandler) Name() string

Name returns resource name "alert"

func (*AlertResourceHandler) New

New creates a new alert

type BasicAPIHandler

type BasicAPIHandler struct {
	ResourceHandler ResourceHandler
	EtcdKeyAPI      etcd.KeysAPI
}

BasicAPIHandler basic implementation of an Handler, should be used as embedded struct for the most part of the resource

func (*BasicAPIHandler) AsyncWatch

AsyncWatch registers a new resource watcher

func (*BasicAPIHandler) Create

func (h *BasicAPIHandler) Create(resource types.Resource, createOpts *CreateOptions) error

Create a new resource in Etcd

func (*BasicAPIHandler) Decorate

func (h *BasicAPIHandler) Decorate(resource types.Resource)

Decorate the resource

func (*BasicAPIHandler) Delete

func (h *BasicAPIHandler) Delete(id string) error

Delete a resource

func (*BasicAPIHandler) Get

func (h *BasicAPIHandler) Get(id string) (types.Resource, bool)

Get a specific resource

func (*BasicAPIHandler) Index

func (h *BasicAPIHandler) Index() map[string]types.Resource

Index returns the list of resource available in Etcd

func (*BasicAPIHandler) Name

func (h *BasicAPIHandler) Name() string

Name returns the resource name

func (*BasicAPIHandler) New

func (h *BasicAPIHandler) New() types.Resource

New creates a new resource

func (*BasicAPIHandler) Unmarshal

func (h *BasicAPIHandler) Unmarshal(b []byte) (resource types.Resource, err error)

Unmarshal deserialize a resource

func (*BasicAPIHandler) Update

func (h *BasicAPIHandler) Update(id string, resource types.Resource) error

Update a resource

type BasicStoppableWatcher

type BasicStoppableWatcher struct {
	StoppableWatcher
	// contains filtered or unexported fields
}

BasicStoppableWatcher basic implementation of a resource watcher

func (*BasicStoppableWatcher) Stop

func (s *BasicStoppableWatcher) Stop()

Stop the resource watcher

type CaptureAPIHandler

type CaptureAPIHandler struct {
	BasicAPIHandler
	Graph *graph.Graph
}

CaptureAPIHandler based on BasicAPIHandler

func RegisterCaptureAPI

func RegisterCaptureAPI(apiServer *Server, g *graph.Graph, authBackend shttp.AuthenticationBackend) (*CaptureAPIHandler, error)

RegisterCaptureAPI registers an new resource, capture

func (*CaptureAPIHandler) Create

func (c *CaptureAPIHandler) Create(r types.Resource, opts *CreateOptions) error

Create tests that resource GremlinQuery does not exists already

func (*CaptureAPIHandler) Decorate

func (c *CaptureAPIHandler) Decorate(resource types.Resource)

Decorate populates the capture resource

type CaptureResourceHandler

type CaptureResourceHandler struct {
	ResourceHandler
}

CaptureResourceHandler describes a capture ressouce handler

func (*CaptureResourceHandler) Name

func (c *CaptureResourceHandler) Name() string

Name returns "capture"

func (*CaptureResourceHandler) New

New creates a new capture resource

type CreateOptions

type CreateOptions struct {
	TTL time.Duration
}

CreateOptions describes the available options when creating a resource

type EdgeRuleAPI

type EdgeRuleAPI struct {
	BasicAPIHandler
	Graph *graph.Graph
}

EdgeRuleAPI based on BasicAPIHandler

func RegisterEdgeRuleAPI

func RegisterEdgeRuleAPI(apiServer *Server, g *graph.Graph, authBackend shttp.AuthenticationBackend) (*EdgeRuleAPI, error)

RegisterEdgeRuleAPI registers an EdgeRule's API to a designated API Server

type EdgeRuleResourceHandler

type EdgeRuleResourceHandler struct {
	ResourceHandler
}

EdgeRuleResourceHandler describes a edge rule resource handler

func (*EdgeRuleResourceHandler) Name

func (erh *EdgeRuleResourceHandler) Name() string

Name returns resource name "edgerule"

func (*EdgeRuleResourceHandler) New

New creates a new EdgeRule

type Handler

type Handler interface {
	Name() string
	New() types.Resource
	Index() map[string]types.Resource
	Get(id string) (types.Resource, bool)
	Decorate(resource types.Resource)
	Create(resource types.Resource, createOpts *CreateOptions) error
	Delete(id string) error
	AsyncWatch(f WatcherCallback) StoppableWatcher
}

Handler describes resources for each API

type HandlerFunc

type HandlerFunc func(w http.ResponseWriter, r *http.Request)

HandlerFunc describes an http(s) router handler callback function

type Info

type Info struct {
	// Server host ID
	Host string
	// API version
	Version string
	// Service type
	Service string
}

Info for each host describes his API version and service (agent or analyzer) swagger:model

type Link struct {
	Parent   string
	Child    string
	Metadata graph.Metadata
}

Link describes a link between two graph node on the path

type NH

type NH struct {
	VrouterIP string
	Type      string
	Vrf       string
	Interface string
	SrcIP     string
	DestIP    string
	TunType   string
	Label     string
	VNI       string
}

NH contains next hop information

type NodeRuleAPI

type NodeRuleAPI struct {
	BasicAPIHandler
	Graph *graph.Graph
}

NodeRuleAPI based on BasicAPIHandler

func RegisterNodeRuleAPI

func RegisterNodeRuleAPI(apiServer *Server, g *graph.Graph, authBackend shttp.AuthenticationBackend) (*NodeRuleAPI, error)

RegisterNodeRuleAPI register a new node rule api handler

type NodeRuleResourceHandler

type NodeRuleResourceHandler struct {
	ResourceHandler
}

NodeRuleResourceHandler describes a node resource handler

func (*NodeRuleResourceHandler) Name

func (nrh *NodeRuleResourceHandler) Name() string

Name returns resource name "noderule"

func (*NodeRuleResourceHandler) New

New creates a new node rule

type PacketInjectorAPI

type PacketInjectorAPI struct {
	BasicAPIHandler
	Graph *graph.Graph
}

PacketInjectorAPI exposes the packet injector API

func RegisterPacketInjectorAPI

func RegisterPacketInjectorAPI(g *graph.Graph, apiServer *Server, authBackend shttp.AuthenticationBackend) (*PacketInjectorAPI, error)

RegisterPacketInjectorAPI registers a new packet injector resource in the API

func (*PacketInjectorAPI) Create

func (pi *PacketInjectorAPI) Create(r types.Resource, opts *CreateOptions) error

Create allocates a new packet injection

type Path

type Path struct {
	// contains filtered or unexported fields
}

Path represents a path between two nodes

type PcapAPI

type PcapAPI struct {
	Storage storage.Storage
}

PcapAPI exposes the pcap injector API

func (*PcapAPI) SendFlows

func (p *PcapAPI) SendFlows(flows []*flow.Flow)

SendFlows implements the flow Sender interface

type ResourceHandler

type ResourceHandler interface {
	Name() string
	New() types.Resource
}

ResourceHandler aims to creates new resource of an API

type ResourceWatcher

type ResourceWatcher interface {
	AsyncWatch(f WatcherCallback) StoppableWatcher
}

ResourceWatcher asynchronous interface

type Server

type Server struct {
	HTTPServer *shttp.Server
	EtcdKeyAPI etcd.KeysAPI
	// contains filtered or unexported fields
}

Server object are created once for each ServiceType (agent or analyzer)

func NewAPI

func NewAPI(server *shttp.Server, kapi etcd.KeysAPI, service common.Service, authBackend shttp.AuthenticationBackend) (*Server, error)

NewAPI creates a new API server based on http

func (*Server) GetHandler

func (a *Server) GetHandler(hname string) Handler

GetHandler returns the hander named hname

func (*Server) RegisterAPIHandler

func (a *Server) RegisterAPIHandler(handler Handler, authBackend shttp.AuthenticationBackend) error

RegisterAPIHandler registers a new handler for an API

type StatusReporter

type StatusReporter interface {
	GetStatus() interface{}
}

StatusReporter is the interface to report the status of a service

type StoppableWatcher

type StoppableWatcher interface {
	Stop()
}

StoppableWatcher interface

type TopologyAPI

type TopologyAPI struct {
	// contains filtered or unexported fields
}

TopologyAPI exposes the topology query API

type TungstenFabricAPI

type TungstenFabricAPI struct {
	// contains filtered or unexported fields
}

TungstenFabricAPI exposes TungstenFabric query API

type WatcherCallback

type WatcherCallback func(action string, id string, resource types.Resource)

WatcherCallback callback called by the resource watcher

type WorkflowAPIHandler

type WorkflowAPIHandler struct {
	BasicAPIHandler
}

WorkflowAPIHandler based on BasicAPIHandler

func RegisterWorkflowAPI

func RegisterWorkflowAPI(apiServer *Server, authBackend shttp.AuthenticationBackend) (*WorkflowAPIHandler, error)

RegisterWorkflowAPI registers a new workflow api handler

func (*WorkflowAPIHandler) Create

func (w *WorkflowAPIHandler) Create(r types.Resource, opts *CreateOptions) error

Create tests whether the resource is a duplicate or is unique

func (*WorkflowAPIHandler) Get

Get retrieves a workflow based on its id

func (*WorkflowAPIHandler) Index

func (w *WorkflowAPIHandler) Index() map[string]types.Resource

Index returns a map of workflows indexed by id

type WorkflowCallAPIHandler

type WorkflowCallAPIHandler struct {
	// contains filtered or unexported fields
}

WorkflowCallAPIHandler based on BasicAPIHandler

type WorkflowResourceHandler

type WorkflowResourceHandler struct {
}

WorkflowResourceHandler describes a workflow resource handler

func (*WorkflowResourceHandler) Name

func (w *WorkflowResourceHandler) Name() string

Name return "workflow"

func (*WorkflowResourceHandler) New

New creates a new workflow resource

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL