// Update satisfies the RESTStorage interface. func (rs *REST) Update(ctx api.Context, obj runtime.Object) (<-chan apiserver.RESTResult, error) { minion, ok := obj.(*api.Node) if !ok { return nil, fmt.Errorf("not a minion: %#v", obj) } // This is hacky, but minions don't really have a namespace, but kubectl currently automatically // stuffs one in there. Fix it here temporarily until we fix kubectl if minion.Namespace == api.NamespaceDefault { minion.Namespace = api.NamespaceNone } // Clear out the self link, if specified, since it's not in the registry either. minion.SelfLink = "" // TODO: GetMinion will health check the minion, but we shouldn't require the minion to be // running for updating labels. oldMinion, err := rs.registry.GetMinion(ctx, minion.Name) if err != nil { return nil, err } if errs := validation.ValidateMinionUpdate(oldMinion, minion); len(errs) > 0 { return nil, kerrors.NewInvalid("minion", minion.Name, errs) } return apiserver.MakeAsync(func() (runtime.Object, error) { err := rs.registry.UpdateMinion(ctx, minion) if err != nil { return nil, err } return rs.registry.GetMinion(ctx, minion.Name) }), nil }
// Update satisfies the RESTStorage interface. func (rs *REST) Update(ctx api.Context, obj runtime.Object) (runtime.Object, bool, error) { minion, ok := obj.(*api.Node) if !ok { return nil, false, fmt.Errorf("not a minion: %#v", obj) } // This is hacky, but minions don't really have a namespace, but kubectl currently automatically // stuffs one in there. Fix it here temporarily until we fix kubectl if minion.Namespace == api.NamespaceDefault { minion.Namespace = api.NamespaceNone } // Clear out the self link, if specified, since it's not in the registry either. minion.SelfLink = "" oldMinion, err := rs.registry.GetMinion(ctx, minion.Name) if err != nil { return nil, false, err } if errs := validation.ValidateMinionUpdate(oldMinion, minion); len(errs) > 0 { return nil, false, kerrors.NewInvalid("minion", minion.Name, errs) } if err := rs.registry.UpdateMinion(ctx, minion); err != nil { return nil, false, err } out, err := rs.registry.GetMinion(ctx, minion.Name) return out, false, err }
func (rs *REST) Update(ctx api.Context, obj runtime.Object) (<-chan apiserver.RESTResult, error) { minion, ok := obj.(*api.Minion) if !ok { return nil, fmt.Errorf("not a minion: %#v", obj) } // TODO: GetMinion will health check the minion, but we shouldn't require the minion to be // running for updating labels. oldMinion, err := rs.registry.GetMinion(ctx, minion.Name) if err != nil { return nil, err } if errs := validation.ValidateMinionUpdate(oldMinion, minion); len(errs) > 0 { return nil, kerrors.NewInvalid("minion", minion.Name, errs) } return apiserver.MakeAsync(func() (runtime.Object, error) { err := rs.registry.UpdateMinion(ctx, minion) if err != nil { return nil, err } return rs.registry.GetMinion(ctx, minion.Name) }), nil }