graph

package
v0.14.0 Latest Latest
Warning

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

Go to latest
Published: Feb 1, 2019 License: Apache-2.0 Imports: 5 Imported by: 56

Documentation

Overview

Graph package provides support for the graph handlers such as supported path variables and query params, as well as types for graph processing.

Index

Constants

View Source
const (
	GraphTypeApp          string = "app"
	GraphTypeService      string = "service" // Treated as graphType Workload, with service injection, and then condensed
	GraphTypeVersionedApp string = "versionedApp"
	GraphTypeWorkload     string = "workload"
	NodeTypeApp           string = "app"
	NodeTypeService       string = "service"
	NodeTypeUnknown       string = "unknown" // The special "unknown" traffic gen node
	NodeTypeWorkload      string = "workload"
	TF                    string = "2006-01-02 15:04:05" // TF is the TimeFormat for timestamps
	Unknown               string = "unknown"             // Istio unknown label value
)

Variables

View Source
var Protocols []Protocol = []Protocol{GRPC, HTTP, TCP}

Functions

func AddOutgoingEdgeToMetadata added in v0.14.0

func AddOutgoingEdgeToMetadata(sourceMetadata, edgeMetadata map[string]interface{})

func AddServiceGraphTraffic added in v0.14.0

func AddServiceGraphTraffic(target, source *Edge)

func AddToMetadata added in v0.14.0

func AddToMetadata(protocol string, val float64, code string, sourceMetadata, destMetadata, edgeMetadata map[string]interface{})

func BadRequest added in v0.12.0

func BadRequest(message string)

BadRequest panics with BadRequest and the provided message

func CheckError added in v0.12.0

func CheckError(err error)

CheckError panics with the supplied error if it is non-nil

func Error added in v0.12.0

func Error(message string)

Error panics with InternalServerError and the provided message

func Forbidden added in v0.12.0

func Forbidden(message string)

Forbidden panics with Forbidden and the provided message

func Id

func Id(namespace, workload, app, version, service, graphType string) (id, nodeType string)

func IsOK added in v0.12.0

func IsOK(telemetryVal string) bool

IsOK just validates that a telemetry label value is not empty or unknown

Types

type Edge

type Edge struct {
	Source   *Node
	Dest     *Node
	Metadata map[string]interface{} // app-specific data
}

func NewEdge

func NewEdge(source, dest *Node) Edge

type NamespaceInfo added in v0.9.1

type NamespaceInfo struct {
	Name     string
	Duration time.Duration
}

type Node added in v0.6.0

type Node struct {
	ID        string                 // unique identifier for the node
	NodeType  string                 // Node type
	Namespace string                 // Namespace
	Workload  string                 // Workload (deployment) name
	App       string                 // Workload app label value
	Version   string                 // Workload version label value
	Service   string                 // Service name
	Edges     []*Edge                // child nodes
	Metadata  map[string]interface{} // app-specific data
}

func NewNode added in v0.6.0

func NewNode(namespace, workload, app, version, service, graphType string) Node

func NewNodeExplicit added in v0.6.0

func NewNodeExplicit(id, namespace, workload, app, version, service, nodeType, graphType string) Node

func (*Node) AddEdge added in v0.6.0

func (s *Node) AddEdge(dest *Node) *Edge

type Protocol added in v0.14.0

type Protocol struct {
	Name      string
	EdgeRates []Rate
	NodeRates []Rate
	Unit      string
	UnitShort string
}
var GRPC Protocol = Protocol{
	Name: "grpc",
	EdgeRates: []Rate{
		Rate{Name: "grpc", IsTotal: true, Precision: 2},
		Rate{Name: "grpcErr", IsErr: true, Precision: 2},
		Rate{Name: "grpcPercentErr", IsPercentErr: true, Precision: 1},
		Rate{Name: "grpcPercentReq", IsPercentReq: true, Precision: 1},
	},
	NodeRates: []Rate{
		Rate{Name: "grpcIn", IsIn: true, Precision: 2},
		Rate{Name: "grpcInErr", IsErr: true, Precision: 2},
		Rate{Name: "grpcOut", IsOut: true, Precision: 2},
	},
	Unit:      "requests per second",
	UnitShort: "rps",
}
var HTTP Protocol = Protocol{
	Name: "http",
	EdgeRates: []Rate{
		Rate{Name: "http", IsTotal: true, Precision: 2},
		Rate{Name: "http3xx", Precision: 2},
		Rate{Name: "http4xx", IsErr: true, Precision: 2},
		Rate{Name: "http5xx", IsErr: true, Precision: 2},
		Rate{Name: "httpPercentErr", IsPercentErr: true, Precision: 1},
		Rate{Name: "httpPercentReq", IsPercentReq: true, Precision: 1},
	},
	NodeRates: []Rate{
		Rate{Name: "httpIn", IsIn: true, Precision: 2},
		Rate{Name: "httpIn3xx", Precision: 2},
		Rate{Name: "httpIn4xx", IsErr: true, Precision: 2},
		Rate{Name: "httpIn5xx", IsErr: true, Precision: 2},
		Rate{Name: "httpOut", IsOut: true, Precision: 2},
	},
	Unit:      "requests per second",
	UnitShort: "rps",
}
var TCP Protocol = Protocol{
	Name: "tcp",
	EdgeRates: []Rate{
		Rate{Name: "tcp", IsTotal: true, Precision: 2},
	},
	NodeRates: []Rate{
		Rate{Name: "tcpIn", IsIn: true, Precision: 2},
		Rate{Name: "tcpOut", IsOut: true, Precision: 2},
	},
	Unit:      "bytes per second",
	UnitShort: "bps",
}

type Rate added in v0.14.0

type Rate struct {
	Name         string
	IsErr        bool
	IsIn         bool
	IsOut        bool
	IsPercentErr bool
	IsPercentReq bool
	IsTotal      bool
	Precision    int
}

type Response added in v0.12.0

type Response struct {
	Message string
	Code    int
}

func Panic added in v0.12.0

func Panic(message string, code int) Response

Panic panics with the provided HTTP response code and message

type TrafficMap

type TrafficMap map[string]*Node

TrafficMap is a map of app Nodes, each optionally holding Edge data. Metadata is a general purpose map for holding any desired node or edge information. Each app node should have a unique namespace+workload. Note that it is feasible but likely unusual to have two nodes with the same name+version in the same namespace.

func NewTrafficMap

func NewTrafficMap() TrafficMap

Directories

Path Synopsis
Cytoscape package provides conversion from our graph to the CystoscapeJS configuration json model.
Cytoscape package provides conversion from our graph to the CystoscapeJS configuration json model.
Package options holds the option settings for a single graph generation.
Package options holds the option settings for a single graph generation.

Jump to

Keyboard shortcuts

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