in pkg/cloud/rgraph/rnode/forwardingrule/actions.go [121:173]
func (act *forwardingRuleUpdateAction) Run(ctx context.Context, cl cloud.Cloud) (exec.EventList, error) {
// TODO: project routing.
if act.labels != nil {
switch act.id.Key.Type() {
case meta.Global:
err := cl.GlobalForwardingRules().SetLabels(ctx, act.id.Key, &compute.GlobalSetLabelsRequest{
LabelFingerprint: act.labelFingerprint,
Labels: act.labels,
})
if err != nil {
return nil, fmt.Errorf("forwardingRuleUpdateAction Run(%s): SetLabels: %w", act.id, err)
}
case meta.Regional:
err := cl.ForwardingRules().SetLabels(ctx, act.id.Key, &compute.RegionSetLabelsRequest{
LabelFingerprint: act.labelFingerprint,
Labels: act.labels,
})
if err != nil {
return nil, fmt.Errorf("forwardingRuleUpdateAction Run(%s): SetLabels: %w", act.id, err)
}
default:
return nil, fmt.Errorf("forwardingRuleUpdateAction Run(%s): invalid key type", act.id)
}
}
if act.target != nil {
switch act.id.Key.Type() {
case meta.Global:
err := cl.GlobalForwardingRules().SetTarget(ctx, act.id.Key, &compute.TargetReference{
Target: act.target.SelfLink(meta.VersionGA),
})
if err != nil {
return nil, fmt.Errorf("forwardingRuleUpdateAction Run(%s): SetTarget: %w", act.id, err)
}
case meta.Regional:
err := cl.GlobalForwardingRules().SetTarget(ctx, act.id.Key, &compute.TargetReference{
Target: act.target.SelfLink(meta.VersionGA),
})
if err != nil {
return nil, fmt.Errorf("forwardingRuleUpdateAction Run(%s): SetTarget: %w", act.id, err)
}
default:
return nil, fmt.Errorf("forwardingRuleUpdateAction Run(%s): invalid key type", act.id)
}
}
var events exec.EventList
if act.oldTarget != nil && !act.target.Equal(act.oldTarget) {
events = append(events, exec.NewDropRefEvent(act.id, act.oldTarget))
}
return events, nil
}