in shardingsphere-operator/pkg/kubernetes/chaosmesh/builder.go [244:315]
func NewNetworkChaos(ssChao *v1alpha1.Chaos) (NetworkChaos, error) {
chao := ssChao.Spec.NetworkChaos
ncb := NewNetworkChaosBuilder()
ncb.SetName(ssChao.Name).SetNamespace(ssChao.Namespace).SetLabels(ssChao.Labels).
SetAction(string(chao.Action)).
SetDuration(chao.Duration).
SetDirection(string(chao.Direction))
tcParams := &chaosmeshv1alpha1.TcParameter{}
switch chao.Action {
case v1alpha1.Delay:
tcParams.Delay = &chaosmeshv1alpha1.DelaySpec{
Latency: chao.Params.Delay.Latency,
Jitter: chao.Params.Delay.Jitter,
}
case v1alpha1.Corruption:
tcParams.Corrupt = &chaosmeshv1alpha1.CorruptSpec{
Corrupt: chao.Params.Corruption.Corruption,
}
case v1alpha1.Duplication:
tcParams.Duplicate = &chaosmeshv1alpha1.DuplicateSpec{
Duplicate: chao.Params.Duplication.Duplication,
}
case v1alpha1.Loss:
tcParams.Loss = &chaosmeshv1alpha1.LossSpec{
Loss: chao.Params.Loss.Loss,
}
case v1alpha1.Bandwidth:
bwab := NewBandWidthActionBuilder()
bwab.SetRate(getAnnotation(ssChao.Annotations, AnnoNetworkBandwidthRate))
bwab.SetLimit(getAnnotation(ssChao.Annotations, AnnoNetworkBandwidthLimit))
bwab.SetBuffer(getAnnotation(ssChao.Annotations, AnnoNetworkBandwidthBuffer))
bwab.SetPeakRate(getAnnotation(ssChao.Annotations, AnnoNetworkBandwidthPeakrate))
bwab.SetMinBurst(getAnnotation(ssChao.Annotations, AnnoNetworkBandwidthMinBurst))
tcParams.Bandwidth = bwab.Build()
case v1alpha1.Partition:
}
psb := NewPodSelectorBuilder()
psb.SetNamespaces(chao.Source.Namespaces).
SetExpressionSelectors(chao.Source.ExpressionSelectors).
SetNodes(chao.Source.Nodes).
SetNodeSelector(chao.Source.NodeSelectors).
SetAnnotationSelectors(chao.Source.AnnotationSelectors).
SetLabelSelector(chao.Source.LabelSelectors).
SetPods(chao.Source.Pods)
psb.SetSelectMode(ssChao.Annotations[AnnoPodSelectorMode]).
SetValue(ssChao.Annotations[AnnoPodSelectorValue])
ncb.SetPodSelector(psb.Build())
tpsb := NewPodSelectorBuilder()
tpsb.SetNamespaces(chao.Target.Namespaces).
SetExpressionSelectors(chao.Target.ExpressionSelectors).
SetNodes(chao.Target.Nodes).
SetNodeSelector(chao.Target.NodeSelectors).
SetAnnotationSelectors(chao.Target.AnnotationSelectors).
SetLabelSelector(chao.Target.LabelSelectors).
SetPods(chao.Target.Pods).
SetSelectMode(ssChao.Annotations[AnnoTargetPodSelectorMode]).
SetValue(ssChao.Annotations[AnnoTargetPodSelectorValue])
ncb.SetTarget(tpsb.Build()).
SetDevice(ssChao.Annotations[AnnoNetworkDevice]).
SetTargetDevice(ssChao.Annotations[AnnoNetworkTargetDevice]).
SetTcParameter(*tcParams)
networkChao := ncb.Build()
return networkChao, nil
}