func NewNetworkChaos()

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
}