models

package
v0.0.0-...-10c222e Latest Latest
Warning

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

Go to latest
Published: Dec 18, 2019 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BadThreeScaleHandlerJson = "bad ThreeScaleHandler JSON"
	BadThreeScaleRuleJson    = "bad ThreeScaleHandler JSON"
)

Variables

View Source
var ObjectTypeSingular = map[string]string{
	"gateways":            "gateway",
	"virtualservices":     "virtualservice",
	"destinationrules":    "destinationrule",
	"serviceentries":      "serviceentry",
	"rules":               "rule",
	"quotaspecs":          "quotaspec",
	"quotaspecbindings":   "quotaspecbinding",
	"meshpolicies":        "meshpolicy",
	"policies":            "policy",
	"serviceroles":        "servicerole",
	"servicerolebindings": "servicerolebinding",
	"clusterrbacconfigs":  "clusterrbacconfig",
}

Functions

func CheckMessage

func CheckMessage(checkId string) string

func ConvertAggregations

func ConvertAggregations(from v1alpha1.MonitoringDashboardSpec) []kmodel.Aggregation

ConvertAggregations converts a k8s aggregations (from MonitoringDashboard k8s resource) into this models aggregations Results are sorted by DisplayName

func ConvertHistogram

func ConvertHistogram(from prometheus.Histogram) map[string][]*kmodel.SampleStream

func ConvertMatrix

func ConvertMatrix(from pmod.Matrix) []*kmodel.SampleStream

func PrepareIstioDashboard

func PrepareIstioDashboard(direction, local, remote string) kmodel.MonitoringDashboard

PrepareIstioDashboard prepares the Istio dashboard title and aggregations dynamically for input values

Types

type Address

type Address struct {
	Kind string `json:"kind"`
	Name string `json:"name"`
	IP   string `json:"ip"`
}

func (*Address) Parse

func (address *Address) Parse(a core_v1.EndpointAddress)

type Addresses

type Addresses []Address

func (*Addresses) Parse

func (addresses *Addresses) Parse(as []core_v1.EndpointAddress)

type App

type App struct {
	// Namespace where the app lives in
	// required: true
	// example: bookinfo
	Namespace Namespace `json:"namespace"`

	// Name of the application
	// required: true
	// example: reviews
	Name string `json:"name"`

	// Workloads for a given application
	// required: true
	Workloads []WorkloadItem `json:"workloads"`

	// List of service names linked with an application
	// required: true
	ServiceNames []string `json:"serviceNames"`

	// Runtimes and associated dashboards
	Runtimes []kmodel.Runtime `json:"runtimes"`
}

type AppHealth

type AppHealth struct {
	WorkloadStatuses []WorkloadStatus `json:"workloadStatuses"`
	Requests         RequestHealth    `json:"requests"`
}

AppHealth contains aggregated health from various sources, for a given app

func EmptyAppHealth

func EmptyAppHealth() AppHealth

EmptyAppHealth create an empty AppHealth

type AppList

type AppList struct {
	// Namespace where the apps live in
	// required: true
	// example: bookinfo
	Namespace Namespace `json:"namespace"`

	// Applications for a given namespace
	// required: true
	Apps []AppListItem `json:"applications"`
}

type AppListItem

type AppListItem struct {
	// Name of the application
	// required: true
	// example: reviews
	Name string `json:"name"`

	// Define if all Pods related to the Workloads of this app has an IstioSidecar deployed
	// required: true
	// example: true
	IstioSidecar bool `json:"istioSidecar"`
}

AppListItem has the necessary information to display the console app list

type Autoscaler

type Autoscaler struct {
	Name      string            `json:"name"`
	Labels    map[string]string `json:"labels"`
	CreatedAt string            `json:"createdAt"`
	// Spec
	MinReplicas                    int32 `json:"minReplicas"`
	MaxReplicas                    int32 `json:"maxReplicas"`
	TargetCPUUtilizationPercentage int32 `json:"targetCPUUtilizationPercentage"`
	// Status
	ObservedGeneration              int64  `json:"observedGeneration,omitempty"`
	LastScaleTime                   string `json:"lastScaleTime,omitempty"`
	CurrentReplicas                 int32  `json:"currentReplicas"`
	DesiredReplicas                 int32  `json:"desiredReplicas"`
	CurrentCPUUtilizationPercentage int32  `json:"currentCPUUtilizationPercentage,omitempty"`
}

func (*Autoscaler) Parse

func (autoscaler *Autoscaler) Parse(d *autoscaling_v1.HorizontalPodAutoscaler)

type ClusterRbacConfig

type ClusterRbacConfig struct {
	meta_v1.TypeMeta
	Metadata meta_v1.ObjectMeta `json:"metadata"`
	Spec     struct {
		Mode      interface{} `json:"mode"`
		Inclusion interface{} `json:"inclusion"`
		Exclusion interface{} `json:"exclusion"`
	} `json:"spec"`
}

func (*ClusterRbacConfig) Parse

func (rc *ClusterRbacConfig) Parse(clusterRbacConfig kubernetes.IstioObject)

type ClusterRbacConfigs

type ClusterRbacConfigs []ClusterRbacConfig

func (*ClusterRbacConfigs) Parse

func (rcs *ClusterRbacConfigs) Parse(clusterRbacConfigs []kubernetes.IstioObject)

type ContainerInfo

type ContainerInfo struct {
	Name  string `json:"name"`
	Image string `json:"image"`
}

ContainerInfo holds container name and image

type DestinationRule

type DestinationRule struct {
	meta_v1.TypeMeta
	Metadata meta_v1.ObjectMeta `json:"metadata"`
	Spec     struct {
		Host          interface{} `json:"host"`
		TrafficPolicy interface{} `json:"trafficPolicy"`
		Subsets       interface{} `json:"subsets"`
	} `json:"spec"`
}

DestinationRule destinationRule

This is used for returning a DestinationRule

swagger:model destinationRule

func (*DestinationRule) HasCircuitBreaker

func (dRule *DestinationRule) HasCircuitBreaker(namespace string, serviceName string, version string) bool

func (*DestinationRule) Parse

func (dRule *DestinationRule) Parse(destinationRule kubernetes.IstioObject)

type DestinationRules

type DestinationRules struct {
	Permissions ResourcePermissions `json:"permissions"`
	Items       []DestinationRule   `json:"items"`
}

DestinationRules destinationRules

This is used for returning an array of DestinationRules

swagger:model destinationRules An array of destinationRule swagger:allOf

func (*DestinationRules) Parse

func (dRules *DestinationRules) Parse(destinationRules []kubernetes.IstioObject)

type Endpoint

type Endpoint struct {
	Addresses Addresses `json:"addresses"`
	Ports     Ports     `json:"ports"`
}

func (*Endpoint) Parse

func (endpoint *Endpoint) Parse(s core_v1.EndpointSubset)

type Endpoints

type Endpoints []Endpoint

func (*Endpoints) Parse

func (endpoints *Endpoints) Parse(es *core_v1.Endpoints)

type Gateway

type Gateway struct {
	meta_v1.TypeMeta
	Metadata meta_v1.ObjectMeta `json:"metadata"`
	Spec     struct {
		Servers  interface{} `json:"servers"`
		Selector interface{} `json:"selector"`
	} `json:"spec"`
}

func (*Gateway) Parse

func (gw *Gateway) Parse(gateway kubernetes.IstioObject)

type Gateways

type Gateways []Gateway

func (*Gateways) Parse

func (gws *Gateways) Parse(gateways []kubernetes.IstioObject)

type GrafanaInfo

type GrafanaInfo struct {
	URL                   string `json:"url"`
	ServiceDashboardPath  string `json:"serviceDashboardPath"`
	WorkloadDashboardPath string `json:"workloadDashboardPath"`
	MeshDashboardPath     string `json:"meshDashboardPath"`
}

GrafanaInfo provides information to access Grafana dashboards

type IstioAdapter

type IstioAdapter struct {
	meta_v1.TypeMeta
	Metadata meta_v1.ObjectMeta `json:"metadata"`
	Spec     interface{}        `json:"spec"`
	Adapter  string             `json:"adapter"`
	// We need to bring the plural to use it from the UI to build the API
	Adapters string `json:"adapters"`
}

IstioAdapter istioAdapter

This type type is used for returning a IstioAdapter

swagger:model istioAdapter

func CastIstioAdapter

func CastIstioAdapter(adapter kubernetes.IstioObject) IstioAdapter

type IstioAdapters

type IstioAdapters []IstioAdapter

IstioAdapters istioAdapters

This type type is used for returning an array of IstioAdapters

swagger:model istioAdapters An array of istioAdapter swagger:allOf

func CastIstioAdaptersCollection

func CastIstioAdaptersCollection(adapters []kubernetes.IstioObject) IstioAdapters

type IstioCheck

type IstioCheck struct {
	// Description of the check
	// required: true
	// example: Weight sum should be 100
	Message string `json:"message"`

	// Indicates the level of importance: error or warning
	// required: true
	// example: error
	Severity SeverityLevel `json:"severity"`

	// String that describes where in the yaml file is the check located
	// example: spec/http[0]/route
	Path string `json:"path"`
}

IstioCheck represents an individual check. swagger:model

func Build

func Build(checkId string, path string) IstioCheck

type IstioConfigDetails

type IstioConfigDetails struct {
	Namespace          Namespace           `json:"namespace"`
	ObjectType         string              `json:"objectType"`
	Gateway            *Gateway            `json:"gateway"`
	VirtualService     *VirtualService     `json:"virtualService"`
	DestinationRule    *DestinationRule    `json:"destinationRule"`
	ServiceEntry       *ServiceEntry       `json:"serviceEntry"`
	Rule               *IstioRule          `json:"rule"`
	Adapter            *IstioAdapter       `json:"adapter"`
	Template           *IstioTemplate      `json:"template"`
	QuotaSpec          *QuotaSpec          `json:"quotaSpec"`
	QuotaSpecBinding   *QuotaSpecBinding   `json:"quotaSpecBinding"`
	Policy             *Policy             `json:"policy"`
	MeshPolicy         *MeshPolicy         `json:"meshPolicy"`
	ClusterRbacConfig  *ClusterRbacConfig  `json:"clusterRbacConfig"`
	RbacConfig         *RbacConfig         `json:"rbacConfig"`
	ServiceRole        *ServiceRole        `json:"serviceRole"`
	ServiceRoleBinding *ServiceRoleBinding `json:"serviceRoleBinding"`
	Sidecar            *Sidecar            `json:"sidecar"`
	Permissions        ResourcePermissions `json:"permissions"`
	IstioValidation    *IstioValidation    `json:"validation"`
}

type IstioConfigList

type IstioConfigList struct {
	// The namespace of istioConfiglist
	//
	// required: true
	Namespace           Namespace           `json:"namespace"`
	Gateways            Gateways            `json:"gateways"`
	VirtualServices     VirtualServices     `json:"virtualServices"`
	DestinationRules    DestinationRules    `json:"destinationRules"`
	ServiceEntries      ServiceEntries      `json:"serviceEntries"`
	Rules               IstioRules          `json:"rules"`
	Adapters            IstioAdapters       `json:"adapters"`
	Templates           IstioTemplates      `json:"templates"`
	QuotaSpecs          QuotaSpecs          `json:"quotaSpecs"`
	QuotaSpecBindings   QuotaSpecBindings   `json:"quotaSpecBindings"`
	Policies            Policies            `json:"policies"`
	MeshPolicies        MeshPolicies        `json:"meshPolicies"`
	ClusterRbacConfigs  ClusterRbacConfigs  `json:"clusterRbacConfigs"`
	RbacConfigs         RbacConfigs         `json:"rbacConfigs"`
	ServiceRoles        ServiceRoles        `json:"serviceRoles"`
	ServiceRoleBindings ServiceRoleBindings `json:"serviceRoleBindings"`
	Sidecars            Sidecars            `json:"sidecars"`
	IstioValidations    IstioValidations    `json:"validations"`
}

IstioConfigList istioConfigList

This type is used for returning a response of IstioConfigList

swagger:model IstioConfigList

type IstioRule

type IstioRule struct {
	meta_v1.TypeMeta
	Metadata meta_v1.ObjectMeta `json:"metadata"`
	Spec     struct {
		Match   interface{} `json:"match"`
		Actions interface{} `json:"actions"`
	} `json:"spec"`
}

IstioRule istioRule

This type type is used for returning a IstioRule

swagger:model istioRule

func CastIstioRule

func CastIstioRule(rule kubernetes.IstioObject) IstioRule

type IstioRuleList

type IstioRuleList struct {
	Namespace Namespace   `json:"namespace"`
	Rules     []IstioRule `json:"rules"`
}

type IstioRules

type IstioRules []IstioRule

IstioRules istioRules

This type type is used for returning an array of IstioRules

swagger:model istioRules An array of istioRule swagger:allOf

func CastIstioRulesCollection

func CastIstioRulesCollection(rules []kubernetes.IstioObject) IstioRules

type IstioTemplate

type IstioTemplate struct {
	meta_v1.TypeMeta
	Metadata meta_v1.ObjectMeta `json:"metadata"`
	Spec     interface{}        `json:"spec"`
	Template string             `json:"template"`
	// We need to bring the plural to use it from the UI to build the API
	Templates string `json:"templates"`
}

IstioTemplate istioTemplate

This type type is used for returning a IstioTemplate

swagger:model istioTemplate

func CastIstioTemplate

func CastIstioTemplate(template kubernetes.IstioObject) IstioTemplate

type IstioTemplates

type IstioTemplates []IstioTemplate

IstioTemplates istioTemplates

This type type is used for returning an array of IstioTemplates

swagger:model istioTemplates An array of istioTemplates swagger:allOf

func CastIstioTemplatesCollection

func CastIstioTemplatesCollection(templates []kubernetes.IstioObject) IstioTemplates

type IstioValidation

type IstioValidation struct {
	// Name of the object itself
	// required: true
	// example: reviews
	Name string `json:"name"`

	// Type of the object
	// required: true
	// example: virtualservice
	ObjectType string `json:"objectType"`

	// Represents validity of the object: in case of warning, validity remains as true
	// required: true
	// example: false
	Valid bool `json:"valid"`

	// Array of checks. It might be empty.
	Checks []*IstioCheck `json:"checks"`
}

IstioValidation represents a list of checks associated to an Istio object. swagger:model

type IstioValidationKey

type IstioValidationKey struct {
	ObjectType string
	Name       string
}

IstioValidationKey is the key value composed of an Istio ObjectType and Name.

func BuildKey

func BuildKey(objectType, name string) IstioValidationKey

type IstioValidations

type IstioValidations map[IstioValidationKey]*IstioValidation

IstioValidations represents a set of IstioValidation grouped by IstioValidationKey.

func (IstioValidations) FilterByKey

func (iv IstioValidations) FilterByKey(objectType, name string) IstioValidations

func (IstioValidations) FilterBySingleType

func (iv IstioValidations) FilterBySingleType(objectType, name string) IstioValidations

func (IstioValidations) FilterByTypes

func (iv IstioValidations) FilterByTypes(objectTypes []string) IstioValidations

FilterByTypes takes an input as ObjectTypes, transforms to singular types and filters the validations

func (IstioValidations) MarshalJSON

func (iv IstioValidations) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface.

func (IstioValidations) MergeValidations

func (iv IstioValidations) MergeValidations(validations IstioValidations) IstioValidations

type JaegerInfo

type JaegerInfo struct {
	URL string `json:"url"`
}

JaegerInfo provides information to access Jaeger UI

type MTLSStatus

type MTLSStatus struct {
	// mTLS status: MTLS_ENABLED, MTLS_PARTIALLY_ENABLED, MTLS_NOT_ENABLED
	// required: true
	// example: MTLS_ENABLED
	Status string `json:"status"`
}

MTLSStatus describes the current mTLS status of a mesh entity

type MeshPolicies

type MeshPolicies []MeshPolicy

func (*MeshPolicies) Parse

func (mps *MeshPolicies) Parse(meshPolicies []kubernetes.IstioObject)

type MeshPolicy

type MeshPolicy struct {
	meta_v1.TypeMeta
	Metadata meta_v1.ObjectMeta `json:"metadata"`
	Spec     struct {
		Targets          interface{} `json:"targets"`
		Peers            interface{} `json:"peers"`
		PeerIsOptional   interface{} `json:"peerIsOptional"`
		Origins          interface{} `json:"origins"`
		OriginIsOptional interface{} `json:"originIsOptional"`
		PrincipalBinding interface{} `json:"principalBinding"`
	} `json:"spec"`
}

func (*MeshPolicy) Parse

func (mp *MeshPolicy) Parse(meshPolicy kubernetes.IstioObject)

type Namespace

type Namespace struct {
	// The id of the namespace.
	//
	// example:  istio-system
	// required: true
	Name string `json:"name"`

	// Creation date of the namespace.
	// There is no need to export this through the API. So, this is
	// set to be ignored by JSON package.
	//
	// required: true
	CreationTimestamp time.Time `json:"-"`
}

A Namespace provide a scope for names This type is used to describe a set of objects.

swagger:model namespace

func CastNamespace

func CastNamespace(ns core_v1.Namespace) Namespace

func CastNamespaceCollection

func CastNamespaceCollection(ns []core_v1.Namespace) []Namespace

func CastProject

func CastProject(p osproject_v1.Project) Namespace

func CastProjectCollection

func CastProjectCollection(ps []osproject_v1.Project) []Namespace

type NamespaceAppHealth

type NamespaceAppHealth map[string]*AppHealth

NamespaceAppHealth is an alias of map of app name x health

type NamespaceServiceHealth

type NamespaceServiceHealth map[string]*ServiceHealth

NamespaceServiceHealth is an alias of map of service name x health

type NamespaceValidations

type NamespaceValidations map[string]IstioValidations

NamespaceValidations represents a set of IstioValidations grouped by namespace

type NamespaceWorkloadHealth

type NamespaceWorkloadHealth map[string]*WorkloadHealth

NamespaceWorkloadHealth is an alias of map of workload name x health

type Pod

type Pod struct {
	Name                string            `json:"name"`
	Labels              map[string]string `json:"labels"`
	CreatedAt           string            `json:"createdAt"`
	CreatedBy           []Reference       `json:"createdBy"`
	Containers          []*ContainerInfo  `json:"containers"`
	IstioContainers     []*ContainerInfo  `json:"istioContainers"`
	IstioInitContainers []*ContainerInfo  `json:"istioInitContainers"`
	Status              string            `json:"status"`
	AppLabel            bool              `json:"appLabel"`
	VersionLabel        bool              `json:"versionLabel"`
	Annotations         map[string]string `json:"annotations"`
}

Pod holds a subset of v1.Pod data that is meaningful in Kiali

func (*Pod) GetAnnotations

func (pod *Pod) GetAnnotations() map[string]string

GetAnnotations is needed by k-charted

func (Pod) HasIstioSidecar

func (pod Pod) HasIstioSidecar() bool

HasIstioSidecar returns true if the pod has an Isio proxy sidecar

func (*Pod) Parse

func (pod *Pod) Parse(p *core_v1.Pod)

Parse extracts desired information from k8s Pod info

type Pods

type Pods []*Pod

Pods alias for list of Pod structs

func (Pods) HasIstioSidecar

func (pods Pods) HasIstioSidecar() bool

HasIstioSidecar returns true if there are no pods or all pods have a sidecar

func (*Pods) Parse

func (pods *Pods) Parse(list []core_v1.Pod)

ParseDeployment extracts desired information from k8s []Pod info

type Policies

type Policies []Policy

func (*Policies) Parse

func (ps *Policies) Parse(policies []kubernetes.IstioObject)

type Policy

type Policy struct {
	meta_v1.TypeMeta
	Metadata meta_v1.ObjectMeta `json:"metadata"`
	Spec     struct {
		Targets          interface{} `json:"targets"`
		Peers            interface{} `json:"peers"`
		PeerIsOptional   interface{} `json:"peerIsOptional"`
		Origins          interface{} `json:"origins"`
		OriginIsOptional interface{} `json:"originIsOptional"`
		PrincipalBinding interface{} `json:"principalBinding"`
	} `json:"spec"`
}

func (*Policy) Parse

func (p *Policy) Parse(policy kubernetes.IstioObject)

type Port

type Port struct {
	Name     string `json:"name"`
	Protocol string `json:"protocol"`
	Port     int32  `json:"port"`
}

func (*Port) Parse

func (port *Port) Parse(p core_v1.ServicePort)

func (*Port) ParseEndpointPort

func (port *Port) ParseEndpointPort(p core_v1.EndpointPort)

type Ports

type Ports []Port

func (*Ports) Parse

func (ports *Ports) Parse(ps []core_v1.ServicePort)

func (*Ports) ParseEndpointPorts

func (ports *Ports) ParseEndpointPorts(ps []core_v1.EndpointPort)

type QuotaSpec

type QuotaSpec struct {
	meta_v1.TypeMeta
	Metadata meta_v1.ObjectMeta `json:"metadata"`
	Spec     struct {
		Rules interface{} `json:"rules"`
	} `json:"spec"`
}

func (*QuotaSpec) Parse

func (qs *QuotaSpec) Parse(quotaSpec kubernetes.IstioObject)

type QuotaSpecBinding

type QuotaSpecBinding struct {
	meta_v1.TypeMeta
	Metadata meta_v1.ObjectMeta `json:"metadata"`
	Spec     struct {
		QuotaSpecs interface{} `json:"quotaSpecs"`
		Services   interface{} `json:"services"`
	} `json:"spec"`
}

func (*QuotaSpecBinding) Parse

func (qsb *QuotaSpecBinding) Parse(quotaSpecBinding kubernetes.IstioObject)

type QuotaSpecBindings

type QuotaSpecBindings []QuotaSpecBinding

func (*QuotaSpecBindings) Parse

func (qsbs *QuotaSpecBindings) Parse(quotaSpecBindings []kubernetes.IstioObject)

type QuotaSpecs

type QuotaSpecs []QuotaSpec

func (*QuotaSpecs) Parse

func (qss *QuotaSpecs) Parse(quotaSpecs []kubernetes.IstioObject)

type RbacConfig

type RbacConfig struct {
	meta_v1.TypeMeta
	Metadata meta_v1.ObjectMeta `json:"metadata"`
	Spec     struct {
		Mode      interface{} `json:"mode"`
		Inclusion interface{} `json:"inclusion"`
		Exclusion interface{} `json:"exclusion"`
	} `json:"spec"`
}

func (*RbacConfig) Parse

func (rc *RbacConfig) Parse(rbacConfig kubernetes.IstioObject)

type RbacConfigs

type RbacConfigs []RbacConfig

func (*RbacConfigs) Parse

func (rcs *RbacConfigs) Parse(rbacConfigs []kubernetes.IstioObject)

type Reference

type Reference struct {
	Name string `json:"name"`
	Kind string `json:"kind"`
}

Reference holds some information on the pod creator

type RequestHealth

type RequestHealth struct {
	ErrorRatio         float64 `json:"errorRatio"`
	InboundErrorRatio  float64 `json:"inboundErrorRatio"`
	OutboundErrorRatio float64 `json:"outboundErrorRatio"`
	// contains filtered or unexported fields
}

RequestHealth holds several stats about recent request errors

func NewEmptyRequestHealth

func NewEmptyRequestHealth() RequestHealth

func (*RequestHealth) AggregateInbound

func (in *RequestHealth) AggregateInbound(sample *model.Sample)

AggregateInbound adds the provided metric sample to internal inbound counters and updates error ratios

func (*RequestHealth) AggregateOutbound

func (in *RequestHealth) AggregateOutbound(sample *model.Sample)

AggregateOutbound adds the provided metric sample to internal outbound counters and updates error ratios

type ResourcePermissions

type ResourcePermissions struct {
	Create bool `json:"create"`
	Update bool `json:"update"`
	Delete bool `json:"delete"`
}

ResourcePermissions holds permission flags for an object type True means allowed.

type Service

type Service struct {
	Name            string            `json:"name"`
	CreatedAt       string            `json:"createdAt"`
	ResourceVersion string            `json:"resourceVersion"`
	Namespace       Namespace         `json:"namespace"`
	Labels          map[string]string `json:"labels"`
	Selectors       map[string]string `json:"selectors"`
	Type            string            `json:"type"`
	Ip              string            `json:"ip"`
	Ports           Ports             `json:"ports"`
	ExternalName    string            `json:"externalName"`
}

func (*Service) Parse

func (s *Service) Parse(service *core_v1.Service)

type ServiceDetails

type ServiceDetails struct {
	Service          Service           `json:"service"`
	IstioSidecar     bool              `json:"istioSidecar"`
	Endpoints        Endpoints         `json:"endpoints"`
	VirtualServices  VirtualServices   `json:"virtualServices"`
	DestinationRules DestinationRules  `json:"destinationRules"`
	Workloads        WorkloadOverviews `json:"workloads"`
	Health           ServiceHealth     `json:"health"`
	Validations      IstioValidations  `json:"validations"`
	ErrorTraces      int               `json:"errorTraces"`
	NamespaceMTLS    MTLSStatus        `json:"namespaceMTLS"`
}

func (*ServiceDetails) SetDestinationRules

func (s *ServiceDetails) SetDestinationRules(dr []kubernetes.IstioObject, canCreate, canUpdate, canDelete bool)

func (*ServiceDetails) SetEndpoints

func (s *ServiceDetails) SetEndpoints(eps *core_v1.Endpoints)

func (*ServiceDetails) SetErrorTraces

func (s *ServiceDetails) SetErrorTraces(errorTraces int)

func (*ServiceDetails) SetPods

func (s *ServiceDetails) SetPods(pods []core_v1.Pod)

func (*ServiceDetails) SetService

func (s *ServiceDetails) SetService(svc *core_v1.Service)

func (*ServiceDetails) SetVirtualServices

func (s *ServiceDetails) SetVirtualServices(vs []kubernetes.IstioObject, canCreate, canUpdate, canDelete bool)

type ServiceEntries

type ServiceEntries []ServiceEntry

func (*ServiceEntries) Parse

func (ses *ServiceEntries) Parse(serviceEntries []kubernetes.IstioObject)

type ServiceEntry

type ServiceEntry struct {
	meta_v1.TypeMeta
	Metadata meta_v1.ObjectMeta `json:"metadata"`
	Spec     struct {
		Hosts           interface{} `json:"hosts"`
		Addresses       interface{} `json:"addresses"`
		Ports           interface{} `json:"ports"`
		Location        interface{} `json:"location"`
		Resolution      interface{} `json:"resolution"`
		Endpoints       interface{} `json:"endpoints"`
		ExportTo        interface{} `json:"exportTo"`
		SubjectAltNames interface{} `json:"subjectAltNames"`
	} `json:"spec"`
}

func (*ServiceEntry) Parse

func (se *ServiceEntry) Parse(serviceEntry kubernetes.IstioObject)

type ServiceHealth

type ServiceHealth struct {
	Requests RequestHealth `json:"requests"`
}

ServiceHealth contains aggregated health from various sources, for a given service

func EmptyServiceHealth

func EmptyServiceHealth() ServiceHealth

EmptyServiceHealth create an empty ServiceHealth

type ServiceList

type ServiceList struct {
	Namespace   Namespace         `json:"namespace"`
	Services    []ServiceOverview `json:"services"`
	Validations IstioValidations  `json:"validations"`
}

type ServiceOverview

type ServiceOverview struct {
	// Name of the Service
	// required: true
	// example: reviews-v1
	Name string `json:"name"`
	// Define if Pods related to this Service has an IstioSidecar deployed
	// required: true
	// example: true
	IstioSidecar bool `json:"istioSidecar"`
	// Has label app
	// required: true
	// example: true
	AppLabel bool `json:"appLabel"`
}

type ServiceRole

type ServiceRole struct {
	meta_v1.TypeMeta
	Metadata meta_v1.ObjectMeta `json:"metadata"`
	Spec     struct {
		Rules interface{} `json:"rules"`
	} `json:"spec"`
}

func (*ServiceRole) Parse

func (sr *ServiceRole) Parse(serviceRole kubernetes.IstioObject)

type ServiceRoleBinding

type ServiceRoleBinding struct {
	meta_v1.TypeMeta
	Metadata meta_v1.ObjectMeta `json:"metadata"`
	Spec     struct {
		Subjects interface{} `json:"subjects"`
		RoleRef  interface{} `json:"roleRef"`
	} `json:"spec"`
}

func (*ServiceRoleBinding) Parse

func (srb *ServiceRoleBinding) Parse(serviceRoleBinding kubernetes.IstioObject)

type ServiceRoleBindings

type ServiceRoleBindings []ServiceRoleBinding

func (*ServiceRoleBindings) Parse

func (srbs *ServiceRoleBindings) Parse(serviceRoleBindings []kubernetes.IstioObject)

type ServiceRoles

type ServiceRoles []ServiceRole

func (*ServiceRoles) Parse

func (srs *ServiceRoles) Parse(serviceRoles []kubernetes.IstioObject)

type Services

type Services []*Service

func (*Services) Parse

func (ss *Services) Parse(services []core_v1.Service)

type SeverityLevel

type SeverityLevel string
const (
	ErrorSeverity   SeverityLevel = "error"
	WarningSeverity SeverityLevel = "warning"
	Unknown         SeverityLevel = "unknown"
)

type Sidecar

type Sidecar struct {
	meta_v1.TypeMeta
	Metadata meta_v1.ObjectMeta `json:"metadata"`
	Spec     struct {
		WorkloadSelector interface{} `json:"workloadSelector"`
		Ingress          interface{} `json:"ingress"`
		Egress           interface{} `json:"egress"`
	} `json:"spec"`
}

func (*Sidecar) Parse

func (sc *Sidecar) Parse(sidecar kubernetes.IstioObject)

type Sidecars

type Sidecars []Sidecar

func (*Sidecars) Parse

func (scs *Sidecars) Parse(sidecars []kubernetes.IstioObject)

type ThreeScaleHandler

type ThreeScaleHandler struct {
	Name        string `json:"name"`
	ServiceId   string `json:"serviceId"`
	SystemUrl   string `json:"systemUrl"`
	AccessToken string `json:"accessToken"`
}

ThreeScaleHAndler represents the minimal info that a user needs to know from the UI to link a service with 3Scale site

func CastThreeScaleHandler

func CastThreeScaleHandler(handler kubernetes.IstioObject) ThreeScaleHandler

type ThreeScaleHandlers

type ThreeScaleHandlers []ThreeScaleHandler

func CastThreeScaleHandlers

func CastThreeScaleHandlers(handlers []kubernetes.IstioObject) ThreeScaleHandlers

type ThreeScaleInfo

type ThreeScaleInfo struct {
	Enabled     bool                `json:"enabled"`
	Permissions ResourcePermissions `json:"permissions"`
}

ThreeScaleInfo shows if 3scale adapter is enabled in cluster and if user has permissions on adapter's configuration

type ThreeScaleServiceRule

type ThreeScaleServiceRule struct {
	ServiceName           string `json:"serviceName"`
	ServiceNamespace      string `json:"serviceNamespace"`
	ThreeScaleHandlerName string `json:"threeScaleHandlerName"`
}

type VirtualService

type VirtualService struct {
	meta_v1.TypeMeta
	Metadata meta_v1.ObjectMeta `json:"metadata"`
	Spec     struct {
		Hosts    interface{} `json:"hosts"`
		Gateways interface{} `json:"gateways"`
		Http     interface{} `json:"http"`
		Tcp      interface{} `json:"tcp"`
		Tls      interface{} `json:"tls"`
		ExportTo interface{} `json:"exportTo"`
	} `json:"spec"`
}

VirtualService virtualService

This type is used for returning a VirtualService

swagger:model virtualService

func (*VirtualService) IsValidHost

func (vService *VirtualService) IsValidHost(namespace string, serviceName string) bool

IsValidHost returns true if VirtualService hosts applies to the service

func (*VirtualService) Parse

func (vService *VirtualService) Parse(virtualService kubernetes.IstioObject)

type VirtualServices

type VirtualServices struct {
	Permissions ResourcePermissions `json:"permissions"`
	Items       []VirtualService    `json:"items"`
}

VirtualServices virtualServices

This type is used for returning an array of VirtualServices with some permission flags

swagger:model virtualServices An array of virtualService swagger:allOf

func (*VirtualServices) Parse

func (vServices *VirtualServices) Parse(virtualServices []kubernetes.IstioObject)

type Workload

type Workload struct {
	WorkloadListItem

	// Number of desired replicas defined by the user in the controller Spec
	// required: true
	// example: 2
	DesiredReplicas int32 `json:"desiredReplicas"`

	// Number of current replicas pods that matches controller selector labels
	// required: true
	// example: 2
	CurrentReplicas int32 `json:"currentReplicas"`

	// Number of available replicas
	// required: true
	// example: 1
	AvailableReplicas int32 `json:"availableReplicas"`

	// Pods bound to the workload
	Pods Pods `json:"pods"`

	// Services that match workload selector
	Services Services `json:"services"`

	// Runtimes and associated dashboards
	Runtimes []kmodel.Runtime `json:"runtimes"`
}

Workload has the details of a workload

func (*Workload) HasIstioSidecar

func (workload *Workload) HasIstioSidecar() bool

HasIstioSidecar return true if there is at least one pod and all pods have sidecars

func (*Workload) ParseCronJob

func (workload *Workload) ParseCronJob(cnjb *batch_v1beta1.CronJob)

func (*Workload) ParseDeployment

func (workload *Workload) ParseDeployment(d *apps_v1.Deployment)

func (*Workload) ParseDeploymentConfig

func (workload *Workload) ParseDeploymentConfig(dc *osapps_v1.DeploymentConfig)

func (*Workload) ParseJob

func (workload *Workload) ParseJob(job *batch_v1.Job)

func (*Workload) ParsePod

func (workload *Workload) ParsePod(pod *core_v1.Pod)

func (*Workload) ParsePods

func (workload *Workload) ParsePods(controllerName string, controllerType string, pods []core_v1.Pod)

func (*Workload) ParseReplicaSet

func (workload *Workload) ParseReplicaSet(r *apps_v1.ReplicaSet)

func (*Workload) ParseReplicationController

func (workload *Workload) ParseReplicationController(r *core_v1.ReplicationController)

func (*Workload) ParseStatefulSet

func (workload *Workload) ParseStatefulSet(s *apps_v1.StatefulSet)

func (*Workload) SetPods

func (workload *Workload) SetPods(pods []core_v1.Pod)

func (*Workload) SetServices

func (workload *Workload) SetServices(svcs []core_v1.Service)

type WorkloadHealth

type WorkloadHealth struct {
	WorkloadStatus WorkloadStatus `json:"workloadStatus"`
	Requests       RequestHealth  `json:"requests"`
}

WorkloadHealth contains aggregated health from various sources, for a given workload

type WorkloadItem

type WorkloadItem struct {
	// Name of a workload member of an application
	// required: true
	// example: reviews-v1
	WorkloadName string `json:"workloadName"`

	// Define if all Pods related to the Workload has an IstioSidecar deployed
	// required: true
	// example: true
	IstioSidecar bool `json:"istioSidecar"`
}

type WorkloadList

type WorkloadList struct {
	// Namespace where the workloads live in
	// required: true
	// example: bookinfo
	Namespace Namespace `json:"namespace"`

	// Workloads for a given namespace
	// required: true
	Workloads []WorkloadListItem `json:"workloads"`
}

type WorkloadListItem

type WorkloadListItem struct {
	// Name of the workload
	// required: true
	// example: reviews-v1
	Name string `json:"name"`

	// Type of the workload
	// required: true
	// example: deployment
	Type string `json:"type"`

	// Creation timestamp (in RFC3339 format)
	// required: true
	// example: 2018-07-31T12:24:17Z
	CreatedAt string `json:"createdAt"`

	// Kubernetes ResourceVersion
	// required: true
	// example: 192892127
	ResourceVersion string `json:"resourceVersion"`

	// Define if Pods related to this Workload has an IstioSidecar deployed
	// required: true
	// example: true
	IstioSidecar bool `json:"istioSidecar"`

	// Workload labels
	Labels map[string]string `json:"labels"`

	// Define if Pods related to this Workload has the label App
	// required: true
	// example: true
	AppLabel bool `json:"appLabel"`

	// Define if Pods related to this Workload has the label Version
	// required: true
	// example: true
	VersionLabel bool `json:"versionLabel"`

	// Number of current workload pods
	// required: true
	// example: 1
	PodCount int `json:"podCount"`
}

WorkloadListItem has the necessary information to display the console workload list

func (*WorkloadListItem) ParseWorkload

func (workload *WorkloadListItem) ParseWorkload(w *Workload)

type WorkloadOverviews

type WorkloadOverviews []*WorkloadListItem

type WorkloadStatus

type WorkloadStatus struct {
	Name              string `json:"name"`
	DesiredReplicas   int32  `json:"desiredReplicas"`
	CurrentReplicas   int32  `json:"currentReplicas"`
	AvailableReplicas int32  `json:"availableReplicas"`
}

WorkloadStatus gives - number of desired replicas defined in the Spec of a controller - number of current replicas that matches selector of a controller - number of available replicas for a given workload In healthy scenarios all variables should point same value. When something wrong happens the different values can indicate an unhealthy situation. i.e.

	desired = 1, current = 10, available = 0 would means that a user scaled down a workload from 10 to 1
 but in the operaton 10 pods showed problems, so no pod is available/ready but user will see 10 pods under a workload

type Workloads

type Workloads []*Workload

Jump to

Keyboard shortcuts

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