code: func CompareServers(a, b Server) int {
  	if a.GetName() != b.GetName() {
  		return Different
  	}
  	if a.GetAddr() != b.GetAddr() {
  		return Different
  	}
  	if a.GetHostname() != b.GetHostname() {
  		return Different
  	}
  	if a.GetNamespace() != b.GetNamespace() {
  		return Different
  	}
  	if a.GetPublicAddr() != b.GetPublicAddr() {
  		return Different
  	}
  	r := a.GetRotation()
  	if !r.Matches(b.GetRotation()) {
  		return Different
  	}
  	if a.GetUseTunnel() != b.GetUseTunnel() {
  		return Different
  	}
  	if !utils.StringMapsEqual(a.GetLabels(), b.GetLabels()) {
  		return Different
  	}
  	if !CmdLabelMapsEqual(a.GetCmdLabels(), b.GetCmdLabels()) {
  		return Different
  	}
  	if !a.Expiry().Equal(b.Expiry()) {
  		return OnlyTimestampsDifferent
  	}
  	return Equal
  }
docs: // CompareServers returns difference between two server
  // objects, Equal (0) if identical, OnlyTimestampsDifferent(1) if only timestamps differ, Different(2) otherwise