Documentation
      ¶
    
    
  
    
  
    Overview ¶
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Index ¶
- type CandidateAssessment
 - type CounterMetric
 - type Criterion
 - type CriterionAssessment
 - type Interval
 - type Metrics
 - type RatioMetric
 - type RatioStatistics
 - type Request
 - type Response
 - type Statistics
 - type Threshold
 - type ThresholdAssessment
 - type TrafficControl
 - type Version
 - type VersionAssessment
 - type WinnerAssessment
 
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CandidateAssessment ¶
type CandidateAssessment struct {
	VersionAssessment `json:",inline"`
	// A flag indicates whether traffic to this candidate should be cutoff
	Rollback bool `json:"rollback"`
}
    CandidateAssessment contains assessment for a candidate
func (*CandidateAssessment) DeepCopy ¶
func (in *CandidateAssessment) DeepCopy() *CandidateAssessment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CandidateAssessment.
func (*CandidateAssessment) DeepCopyInto ¶
func (in *CandidateAssessment) DeepCopyInto(out *CandidateAssessment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CounterMetric ¶
type CounterMetric struct {
	// Unique identifier
	Name string `json:"name"`
	// Direction indicating which values are "better"
	//+kubebuilder:validation:Enum={lower,higher}
	PreferredDirection *string `json:"preferred_direction,omitempty"`
	// Descriptive short name
	DescriptiveShortName *string `json:"descriptive_short_name,omitempty"`
	// Query template of this metric
	QueryTemplate string `json:"query_template"`
}
    CounterMetric is the definition of Counter Metric
type Criterion ¶
type Criterion struct {
	ID        string     `json:"id"`
	MetricID  string     `json:"metric_id"`
	IsReward  *bool      `json:"is_reward,omitempty"`
	Threshold *Threshold `json:"threshold,omitempty"`
}
    Criterion includes an assessment details for each version
type CriterionAssessment ¶
type CriterionAssessment struct {
	// Id of version
	ID string `json:"id"`
	// ID of metric
	MetricID string `json:"metric_id"`
	//Statistics for this metric
	Statistics *Statistics `json:"statistics,omitempty"`
	// Assessment of how well this metric is doing with respect to threshold.
	// Defined only for metrics with a threshold
	ThresholdAssessment *ThresholdAssessment `json:"threshold_assessment,omitempty"`
}
    CriterionAssessment contains assessment for a version
func (*CriterionAssessment) DeepCopy ¶
func (in *CriterionAssessment) DeepCopy() *CriterionAssessment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CriterionAssessment.
func (*CriterionAssessment) DeepCopyInto ¶
func (in *CriterionAssessment) DeepCopyInto(out *CriterionAssessment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Metrics ¶
type Metrics struct {
	CounterMetrics []CounterMetric `json:"counter_metrics"`
	RatioMetrics   []RatioMetric   `json:"ratio_metrics"`
}
    Metrics details
type RatioMetric ¶
type RatioMetric struct {
	// Unique identifier
	Name string `json:"name"`
	// Direction indicating which values are "better"
	//+kubebuilder:validation:Enum={lower,higher}
	PreferredDirection *string `json:"preferred_direction,omitempty"`
	// Descriptive short name
	DescriptiveShortName *string `json:"descriptive_short_name,omitempty"`
	// Counter metric used in numerator
	Numerator string `json:"numerator"`
	// Counter metric used in denominator
	Denominator string `json:"denominator"`
	// Boolean flag indicating if the value of this metric is always in the range 0 to 1
	// +optional
	ZeroToOne *bool `json:"zero_to_one,omitempty"`
}
    RatioMetric is the definiton of Ratio Metric
type RatioStatistics ¶
type RatioStatistics struct {
	ImprovementOverBaseline       Interval `json:"improvement_over_baseline"`
	ProbabilityOfBeatingBaseline  float32  `json:"probability_of_beating_baseline"`
	ProbabilityOfBeingBestVersion float32  `json:"probability_of_being_best_version"`
	CredibleInterval              Interval `json:"credible_interval"`
}
    RatioStatistics is statistics for a ratio metric
func (*RatioStatistics) DeepCopy ¶
func (in *RatioStatistics) DeepCopy() *RatioStatistics
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RatioStatistics.
func (*RatioStatistics) DeepCopyInto ¶
func (in *RatioStatistics) DeepCopyInto(out *RatioStatistics)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Request ¶
type Request struct {
	// Name of experiment
	Name string `json:"name"`
	// ISO8601 timestamp for the beginning of the time range of interest
	StartTime string `json:"start_time"`
	// Name of the service
	ServiceName string `json:"service_name"`
	// Current iteration of the experiment
	IterationNumber *int32 `json:"iteration_number,omitempty"`
	// All metric specification
	MetricSpecs Metrics `json:"metric_specs"`
	// Criteria to be assessed for each version in this experiment
	Criteria []Criterion `json:"criteria"`
	// Baseline verison details
	Baseline Version `json:"baseline"`
	// Candidate versions details
	Candidate []Version `json:"candidates"`
	// State returned by the server on the previous call
	LastState interface{} `json:"last_state,omitempty"`
	// Parameters controlling the behavior of the analytics
	TrafficControl *TrafficControl `json:"traffic_control,omitempty"`
}
    Request defines payload to analytics service
type Response ¶
type Response struct {
	// Timestamp when assessment is made
	Timestamp string `json:"timestamp"`
	// Assessment for baseline
	BaselineAssessment VersionAssessment `json:"baseline_assessment"`
	// Assessment for candidates
	CandidateAssessments []CandidateAssessment `json:"candidate_assessments"`
	// TrafficSplitRecommendation contains traffic split recommendations for versions from each algorithm
	// The map is interprted as {name_of_algorithm: {name_of_version: traffic_amount}}
	TrafficSplitRecommendation map[string]map[string]int32 `json:"traffic_split_recommendation"`
	// Assessment for winner
	WinnerAssessment `json:"winner_assessment"`
	// Status of analytics engine
	Status *[]string `json:"status,omitempty"`
	// Human-readable explanation of the status
	StatusInterpretations *map[string]string `json:"status_interpretations,omitempty"`
	// Last recorded state from analytics service
	LastState *interface{} `json:"last_state,omitempty"`
}
    Response from analytics
type Statistics ¶
type Statistics struct {
	Value           *float32         `json:"value,omitempty"`
	RatioStatistics *RatioStatistics `json:"ratio_statistics,omitempty"`
}
    Statistics for a metric
func (*Statistics) DeepCopy ¶
func (in *Statistics) DeepCopy() *Statistics
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Statistics.
func (*Statistics) DeepCopyInto ¶
func (in *Statistics) DeepCopyInto(out *Statistics)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ThresholdAssessment ¶
type ThresholdAssessment struct {
	// A flag indicating whether threshold is breached
	ThresholdBreached bool `json:"threshold_breached"`
	// Probability of satisfying the threshold.
	// Defined only for ratio metrics. This is currently computed based on Bayesian estimation
	ProbabilityOfSatisfyingTHreshold float32 `json:"probability_of_satisfying_threshold"`
}
    ThresholdAssessment is the assessment for a threshold
func (*ThresholdAssessment) DeepCopy ¶
func (in *ThresholdAssessment) DeepCopy() *ThresholdAssessment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThresholdAssessment.
func (*ThresholdAssessment) DeepCopyInto ¶
func (in *ThresholdAssessment) DeepCopyInto(out *ThresholdAssessment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TrafficControl ¶
type TrafficControl struct {
	// Maximum possible increment in a candidate's traffic during the initial phase of the experiment
	MaxIncrement float32 `json:"max_increment"`
	// Traffic split algorithm to use during the experiment
	Strategy string `json:"strategy"`
}
    TrafficControl details
type Version ¶
type Version struct {
	// Name of the version
	ID string `json:"id"`
	// labels for the version
	VersionLabels map[string]string `json:"version_labels"`
}
    Version specifies details of a version
type VersionAssessment ¶
type VersionAssessment struct {
	ID                   string                `json:"id"`
	WinProbability       float32               `json:"win_probability"`
	RequestCount         int32                 `json:"request_count"`
	CriterionAssessments []CriterionAssessment `json:"criterion_assessments,omitempty"`
}
    VersionAssessment contains assessment details for a version
func (*VersionAssessment) DeepCopy ¶
func (in *VersionAssessment) DeepCopy() *VersionAssessment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VersionAssessment.
func (*VersionAssessment) DeepCopyInto ¶
func (in *VersionAssessment) DeepCopyInto(out *VersionAssessment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type WinnerAssessment ¶
type WinnerAssessment struct {
	// Indicates whether or not a clear winner has emerged
	// This is currently computed based on Bayesian estimation and uses posterior_probability_for_winner from the iteration parameters
	WinnerFound bool `json:"winning_version_found"`
	// ID of the current winner with the maximum probability of winning.
	// This is currently computed based on Bayesian estimation
	Winner string `json:"current_best_version,omitempty"`
	//Posterior probability of the version declared as the current winner.
	// This is None if winner is None. This is currently computed based on Bayesian estimation
	Probability float32 `json:"probability_of_winning_for_best_version,omitempty"`
}
    WinnerAssessment contains assessment for a winner version
func (*WinnerAssessment) DeepCopy ¶
func (in *WinnerAssessment) DeepCopy() *WinnerAssessment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WinnerAssessment.
func (*WinnerAssessment) DeepCopyInto ¶
func (in *WinnerAssessment) DeepCopyInto(out *WinnerAssessment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.