equality.go 788 B

1234567891011121314151617181920212223242526272829
  1. package equality
  2. import (
  3. "reflect"
  4. "github.com/docker/swarmkit/api"
  5. )
  6. // TasksEqualStable returns true if the tasks are functionally equal, ignoring status,
  7. // version and other superfluous fields.
  8. //
  9. // This used to decide whether or not to propagate a task update to a controller.
  10. func TasksEqualStable(a, b *api.Task) bool {
  11. // shallow copy
  12. copyA, copyB := *a, *b
  13. copyA.Status, copyB.Status = api.TaskStatus{}, api.TaskStatus{}
  14. copyA.Meta, copyB.Meta = api.Meta{}, api.Meta{}
  15. return reflect.DeepEqual(&copyA, &copyB)
  16. }
  17. // TaskStatusesEqualStable compares the task status excluding timestamp fields.
  18. func TaskStatusesEqualStable(a, b *api.TaskStatus) bool {
  19. copyA, copyB := *a, *b
  20. copyA.Timestamp, copyB.Timestamp = nil, nil
  21. return reflect.DeepEqual(&copyA, &copyB)
  22. }