model

package
v0.3.3 Latest Latest
Warning

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

Go to latest
Published: May 1, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func EdgeID added in v0.3.0

func EdgeID(from, to string, kind EdgeKind, blocking bool) string

func FormatMilliseconds added in v0.3.0

func FormatMilliseconds(value float64) float64

func MarshalCanonical

func MarshalCanonical(mdl ResilienceModel) ([]byte, error)

func WriteToFile

func WriteToFile(path string, mdl ResilienceModel) error

Types

type BackoffPolicy added in v0.3.0

type BackoffPolicy struct {
	InitialMS  *int     `json:"initial_ms,omitempty" yaml:"initial_ms,omitempty"`
	MaxMS      *int     `json:"max_ms,omitempty" yaml:"max_ms,omitempty"`
	Multiplier *float64 `json:"multiplier,omitempty" yaml:"multiplier,omitempty"`
	Jitter     string   `json:"jitter,omitempty" yaml:"jitter,omitempty"`
}

func (BackoffPolicy) IsZero added in v0.3.0

func (p BackoffPolicy) IsZero() bool

func (*BackoffPolicy) Normalize added in v0.3.0

func (p *BackoffPolicy) Normalize()

type CircuitBreakerPolicy added in v0.3.0

type CircuitBreakerPolicy struct {
	Enabled            *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
	MaxPendingRequests *int  `json:"max_pending_requests,omitempty" yaml:"max_pending_requests,omitempty"`
	MaxRequests        *int  `json:"max_requests,omitempty" yaml:"max_requests,omitempty"`
	MaxConnections     *int  `json:"max_connections,omitempty" yaml:"max_connections,omitempty"`
	Consecutive5xx     *int  `json:"consecutive_5xx,omitempty" yaml:"consecutive_5xx,omitempty"`
	IntervalMS         *int  `json:"interval_ms,omitempty" yaml:"interval_ms,omitempty"`
	BaseEjectionTimeMS *int  `json:"base_ejection_time_ms,omitempty" yaml:"base_ejection_time_ms,omitempty"`
}

func (CircuitBreakerPolicy) IsZero added in v0.3.0

func (p CircuitBreakerPolicy) IsZero() bool

func (*CircuitBreakerPolicy) Normalize added in v0.3.0

func (p *CircuitBreakerPolicy) Normalize()

type CommonMetadata added in v0.3.0

type CommonMetadata struct {
	Labels  map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
	Tags    []string          `json:"tags,omitempty" yaml:"tags,omitempty"`
	SLORefs []string          `json:"slo_refs,omitempty" yaml:"slo_refs,omitempty"`
}

func (CommonMetadata) IsZero added in v0.3.0

func (m CommonMetadata) IsZero() bool

func (*CommonMetadata) Normalize added in v0.3.0

func (m *CommonMetadata) Normalize()

type Edge

type Edge struct {
	ID          string            `json:"id,omitempty"`
	From        string            `json:"from"`
	To          string            `json:"to"`
	Kind        EdgeKind          `json:"kind"`
	Blocking    bool              `json:"blocking"`
	Metadata    *EdgeMetadata     `json:"metadata,omitempty"`
	Resilience  *ResiliencePolicy `json:"resilience,omitempty"`
	Observed    *ObservedEdge     `json:"observed,omitempty"`
	PolicyScope *PolicyScope      `json:"policy_scope,omitempty"`
}

type EdgeKind

type EdgeKind string
const (
	EdgeKindSync  EdgeKind = "sync"
	EdgeKindAsync EdgeKind = "async"
)

type EdgeMetadata added in v0.3.0

type EdgeMetadata struct {
	CommonMetadata
	Weight *float64 `json:"weight,omitempty" yaml:"weight,omitempty"`
}

func (EdgeMetadata) IsZero added in v0.3.0

func (m EdgeMetadata) IsZero() bool

func (*EdgeMetadata) Normalize added in v0.3.0

func (m *EdgeMetadata) Normalize()

type Endpoint

type Endpoint struct {
	ID                  string            `json:"id"`
	EntryService        string            `json:"entry_service"`
	SuccessPredicateRef string            `json:"success_predicate_ref"`
	Method              string            `json:"method,omitempty"`
	Path                string            `json:"path,omitempty"`
	Metadata            *EndpointMetadata `json:"metadata,omitempty"`
}

type EndpointMetadata added in v0.3.0

type EndpointMetadata struct {
	CommonMetadata
	Weight *float64 `json:"weight,omitempty" yaml:"weight,omitempty"`
}

func (EndpointMetadata) IsZero added in v0.3.0

func (m EndpointMetadata) IsZero() bool

func (*EndpointMetadata) Normalize added in v0.3.0

func (m *EndpointMetadata) Normalize()

type LatencySummary added in v0.3.0

type LatencySummary struct {
	P50 *float64 `json:"p50,omitempty" yaml:"p50,omitempty"`
	P90 *float64 `json:"p90,omitempty" yaml:"p90,omitempty"`
	P95 *float64 `json:"p95,omitempty" yaml:"p95,omitempty"`
	P99 *float64 `json:"p99,omitempty" yaml:"p99,omitempty"`
}

func (LatencySummary) IsZero added in v0.3.0

func (s LatencySummary) IsZero() bool

func (*LatencySummary) Normalize added in v0.3.0

func (s *LatencySummary) Normalize()

type Metadata

type Metadata struct {
	SourceType   string    `json:"source_type"`
	SourceRef    string    `json:"source_ref"`
	DiscoveredAt string    `json:"discovered_at"`
	Confidence   float64   `json:"confidence"`
	Schema       SchemaRef `json:"schema"`
}

type ObservedEdge added in v0.3.0

type ObservedEdge struct {
	LatencyMS *LatencySummary `json:"latency_ms,omitempty" yaml:"latency_ms,omitempty"`
	ErrorRate *float64        `json:"error_rate,omitempty" yaml:"error_rate,omitempty"`
}

func (ObservedEdge) IsZero added in v0.3.0

func (o ObservedEdge) IsZero() bool

func (*ObservedEdge) Normalize added in v0.3.0

func (o *ObservedEdge) Normalize()

type Placement added in v0.3.0

type Placement struct {
	Replicas int               `json:"replicas" yaml:"replicas"`
	Labels   map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
}

type PolicyScope added in v0.3.0

type PolicyScope struct {
	SourceEndpointID string `json:"source_endpoint_id,omitempty" yaml:"source_endpoint_id,omitempty"`
	SourceRoute      string `json:"source_route,omitempty" yaml:"source_route,omitempty"`
	Method           string `json:"method,omitempty" yaml:"method,omitempty"`
	Operation        string `json:"operation,omitempty" yaml:"operation,omitempty"`
}

func (PolicyScope) IsZero added in v0.3.0

func (s PolicyScope) IsZero() bool

func (*PolicyScope) Normalize added in v0.3.0

func (s *PolicyScope) Normalize()

type ResilienceModel

type ResilienceModel struct {
	Services  []Service  `json:"services"`
	Edges     []Edge     `json:"edges"`
	Endpoints []Endpoint `json:"endpoints"`
	Metadata  Metadata   `json:"metadata"`
}

func LoadFromFile

func LoadFromFile(path string) (ResilienceModel, error)

func ParseJSON

func ParseJSON(raw []byte) (ResilienceModel, error)

func (*ResilienceModel) SortDeterministic

func (m *ResilienceModel) SortDeterministic()

func (ResilienceModel) ValidateSemantic

func (m ResilienceModel) ValidateSemantic() error

type ResiliencePolicy added in v0.3.0

type ResiliencePolicy struct {
	RequestTimeoutMS *int                  `json:"request_timeout_ms,omitempty" yaml:"request_timeout_ms,omitempty"`
	PerTryTimeoutMS  *int                  `json:"per_try_timeout_ms,omitempty" yaml:"per_try_timeout_ms,omitempty"`
	Retry            *RetryPolicy          `json:"retry,omitempty" yaml:"retry,omitempty"`
	CircuitBreaker   *CircuitBreakerPolicy `json:"circuit_breaker,omitempty" yaml:"circuit_breaker,omitempty"`
}

func (ResiliencePolicy) IsZero added in v0.3.0

func (p ResiliencePolicy) IsZero() bool

func (*ResiliencePolicy) Normalize added in v0.3.0

func (p *ResiliencePolicy) Normalize()

type RetryPolicy added in v0.3.0

type RetryPolicy struct {
	MaxAttempts *int           `json:"max_attempts,omitempty" yaml:"max_attempts,omitempty"`
	BudgetCap   *float64       `json:"budget_cap,omitempty" yaml:"budget_cap,omitempty"`
	RetryOn     []string       `json:"retry_on,omitempty" yaml:"retry_on,omitempty"`
	Backoff     *BackoffPolicy `json:"backoff,omitempty" yaml:"backoff,omitempty"`
}

func (RetryPolicy) IsZero added in v0.3.0

func (p RetryPolicy) IsZero() bool

func (*RetryPolicy) Normalize added in v0.3.0

func (p *RetryPolicy) Normalize()

type SchemaRef

type SchemaRef struct {
	Name    string `json:"name"`
	Version string `json:"version"`
	URI     string `json:"uri"`
	Digest  string `json:"digest"`
}

type Service

type Service struct {
	ID       string           `json:"id"`
	Name     string           `json:"name"`
	Replicas int              `json:"replicas"`
	Metadata *ServiceMetadata `json:"metadata,omitempty"`
}

type ServiceMetadata added in v0.3.0

type ServiceMetadata struct {
	CommonMetadata
	FailureEligible    *bool       `json:"failure_eligible,omitempty" yaml:"failure_eligible,omitempty"`
	Placements         []Placement `json:"placements,omitempty" yaml:"placements,omitempty"`
	SharedResourceRefs []string    `json:"shared_resource_refs,omitempty" yaml:"shared_resource_refs,omitempty"`
}

func (ServiceMetadata) IsZero added in v0.3.0

func (m ServiceMetadata) IsZero() bool

func (*ServiceMetadata) Normalize added in v0.3.0

func (m *ServiceMetadata) Normalize()

Jump to

Keyboard shortcuts

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