Commit Graph

900 Commits

Author SHA1 Message Date
Kubernetes Prow Robot 1dddc9ee64
Merge pull request #508 from karlkfi/karl-multierror
feat: MultiError for invalid annotations
2022-01-12 15:43:08 -08:00
Karl Isenberg f67aaa87ac feat: MultiError for invalid annotations
- Move Validator to pkg/object/validation
- Replace ValidationError with validation.Error
- Replace MultiValidationError with generic MultiError
- Update Validator & SortObjs to use MultiError
- Add ResourceReferenceFromObjMetadata
- Rename NewResourceReference -> ResourceReferenceFromUnstructured
- Delete duplicate ResourceReference.ObjMetadata()
- Modify some error messages for consistency and clarity
- Use templating to generate some test artifacts

BREAKING CHANGE: apply-time-mutation namespace required for namespace-scoped resources
2022-01-12 15:24:53 -08:00
Kubernetes Prow Robot 0c9b214db3
Merge pull request #500 from mortent/ApplyReconcileFailedError
feat: Return a specific error type from the printers when resources fail to apply/delete/reconcile
2022-01-10 16:19:16 -08:00
Morten Torkildsen 66c63637b4 feat: Return a specific error type from the printers when resources fail to apply/delete/reconcile 2022-01-10 14:00:02 -08:00
Kubernetes Prow Robot d7d63f4b62
Merge pull request #505 from karlkfi/karl-no-die
fix: Don't panic when ObjMetadata is invalid (missing kind/name)
2022-01-07 19:27:03 -08:00
Kubernetes Prow Robot 473b46a0e3
Merge pull request #507 from karlkfi/karl-field-builder
fix: Clean up object.FieldPath
2022-01-07 18:57:04 -08:00
Karl Isenberg 242b6aa83e fix: Don't panic when ObjMetadata is invalid
- UnstructuredToObjMetaOrDie -> UnstructuredToObjMetadata
- UnstructuredToObjMeta -> UnstructuredToObjectMetadata
- UnstructuredsToObjMetasOrDie -> UnstructuredSetToObjMetadataSet
- UnstructuredsToObjMetas -> UnstructuredSetToObjMetadataSet
- Remove CreateObjMetadata (Validator performs validation)
2022-01-07 18:50:30 -08:00
Karl Isenberg a0743e6912 fix: Clean up object.FieldPath
- Use string.Builder to be slightly more efficient
- Format invalid types with Go syntax, wrapped with brackets
- Test that invalid types don't panic
2022-01-07 18:27:57 -08:00
Kubernetes Prow Robot 476197d25b
Merge pull request #506 from karlkfi/karl-field-errors
fix: Handle more validation errors as field errors
2022-01-07 17:45:05 -08:00
Kubernetes Prow Robot 6e629daf4c
Merge pull request #501 from mortent/NoPreviewInEventOutput
fix: Remove preview/dry-run type from events output
2022-01-07 15:35:33 -08:00
Morten Torkildsen 1b68c32813 fix: Remove preview/dry-run type from events output 2022-01-07 14:55:21 -08:00
Kubernetes Prow Robot b7ca8e70c8
Merge pull request #504 from mortent/AlignJsonOutputWithEvents
json printer should only print stats after last action group per type
2022-01-07 13:34:35 -08:00
Karl Isenberg fb98bc7877 fix: Handle more validation errors as field errors
- Using field.Error allows more errors to be wrapped as a
  ValidationError, instead of interrupting validation and exiting
  early.
- Add explicit validation for kind (clearer error).
- Move NestedField from testutil to object, so it can be used at
  runtime.
2022-01-07 12:06:43 -08:00
Morten Torkildsen 8c0597363b json printer should only print summary after last action group per type 2022-01-05 21:41:45 -08:00
Kubernetes Prow Robot b88d9e21a0
Merge pull request #498 from mortent/RemovePrintStatusEvents
Don't print status for all events for reach WaitEvent
2021-12-22 16:10:37 -08:00
Morten Torkildsen df4fca5066 Don't print status for all events for reach WaitEvent 2021-12-22 17:13:38 +01:00
Kubernetes Prow Robot 830d33a4f5
Merge pull request #496 from mortent/AllowForCustomStatusReaders
Remove StatusPoller factory and support custom status readers
2021-12-16 14:46:52 -08:00
Morten Torkildsen f33a0cdb32 Remove StatusPoller factory and support custom status readers 2021-12-16 19:38:10 +01:00
Kubernetes Prow Robot 3064f8b728
Merge pull request #495 from mortent/BetterStatusReaderMapping
More flexible resource type to StatusReader mapping
2021-12-15 11:53:51 -08:00
Morten Torkildsen bab47d977a More flexible resource type to StatusReader mapping 2021-12-15 17:32:53 +01:00
Kubernetes Prow Robot 9877151bdf
Merge pull request #494 from mortent/VerifyOutputFlag
Validate the value of the output flag
2021-12-09 15:21:05 -08:00
Morten Torkildsen 9caaf2a225 Validate the value of the output flag 2021-12-09 19:35:19 +01:00
Kubernetes Prow Robot 5b83428a27
Merge pull request #490 from mortent/ReconcileFailedE2eTests
Add e2e tests for reconciliation failure and timeout
2021-12-07 15:45:11 -08:00
Kubernetes Prow Robot 50f9ac8d87
Merge pull request #492 from mortent/ReconcileFailedForPrinters
Support ReconcileFailed status in printers
2021-12-07 15:26:36 -08:00
Kubernetes Prow Robot 99884712c2
Merge pull request #493 from mortent/RemoveTimeoutError
Remove unused TimeoutError code
2021-12-07 13:40:36 -08:00
Kubernetes Prow Robot 3ee66c1fa8
Merge pull request #491 from mortent/FixTableOutputAction
Fix missing action value in table output
2021-12-07 13:18:36 -08:00
Morten Torkildsen 602301ecfa Remove unused TimeoutError code 2021-12-07 18:49:34 +01:00
Morten Torkildsen ab7b47b086 Fix missing action value in table output 2021-12-07 17:37:38 +01:00
Morten Torkildsen 6c2de94a5d Support ReconcileFailed status in printers 2021-12-07 15:12:52 +01:00
Morten Torkildsen a95e9f43ca Add e2e tests for reconciliation failure and timeout 2021-12-06 00:51:52 -08:00
Kubernetes Prow Robot 9e462c333d
Merge pull request #486 from mortent/HandleStalledResources
Avoid waiting for failed resources
2021-12-02 09:41:33 -08:00
Morten Torkildsen 703535fa6d Avoid waiting for stalled resources 2021-12-02 09:17:44 -08:00
Kubernetes Prow Robot 29c8e1cfd1
Merge pull request #489 from mortent/ReuseStatusReaders
Allow status readers to be reused between invocations
2021-12-01 17:27:33 -08:00
Morten Torkildsen bc9e8c1721 Allow status readers to be reused between invocations 2021-11-30 10:03:55 -08:00
Kubernetes Prow Robot 45a0b5b7e6
Merge pull request #479 from karlkfi/karl-error-string
fix: Make UnknownTypesError error more readable
2021-11-12 20:00:46 -08:00
Karl Isenberg c5452a84c9 fix: Make UnknownTypesError error more readable
- Fix regression from switch to GroupVersionKind from GroupKind
- New error string format: G/V/K, G/V/K
- Avoid K.G/V, which looks like but isn't R.G/V
2021-11-12 11:29:07 -08:00
Kubernetes Prow Robot 39f77432ba
Merge pull request #478 from karlkfi/karl-matcher-fix
fix: Make testutil.AssertEqual more like testify
2021-11-11 14:51:14 -08:00
Karl Isenberg 2ca6f199e4 fix: Make testutil.AssertEqual more like testify
- Swap actual and expected arguments
- Add optional Sprintf arguments
- Add messages to existing usages
2021-11-11 12:59:22 -08:00
Kubernetes Prow Robot 899a44405e
Merge pull request #471 from karlkfi/karl-example-test-failure
fix: Colorize example tests
2021-11-10 16:07:50 -08:00
Karl Isenberg de8f67c0a5 fix: Colorize example tests
- Exit on first test failure for each file
2021-11-10 13:52:31 -08:00
Kubernetes Prow Robot 65a56627e9
Merge pull request #449 from karlkfi/karl-wait-forever
feat: Always wait for reconciliation
2021-11-10 13:47:27 -08:00
Karl Isenberg c5636c0243 feat: Always wait for reconciliation
- Converted WaitTask to use a context for timeout/cancellation, to
  improve readability and reduce error cases. Now it only sends
  TaskResult events from one place, removing the need for a token to
  silence subsequent complete() calls.
- Add pending object tracking to WaitTask to ensure all objects are
  accounted for at least one WaitEvent.
- Upgraded applier tests to use full event comparison, for better signal
  on breaking changes.
- Enhanced task tests to consume all events before validating and test
  actual event output.
- Add set sorting to graph.SortObjs, to make wait event ordering more
  consistent, to make testing easier.

BREAKING CHANGE: wait tasks always execute after apply/prune/delete (except dry runs)
BREAKING CHANGE: wait tasks default to waiting until cancelled (previously 1m default)
2021-11-10 12:34:54 -08:00
Kubernetes Prow Robot d2c4aa9b88
Merge pull request #476 from karlkfi/karl-test-context
fix: Add context & timeouts to e2e tests
2021-11-10 10:19:27 -08:00
Kubernetes Prow Robot a910f40412
Merge pull request #477 from karlkfi/karl-update-status-fix
fix: Ensure WaitTask gets StatusUpdate
2021-11-10 09:55:27 -08:00
Kubernetes Prow Robot 1d5cee4751
Merge pull request #475 from karlkfi/karl-task-logs
fix: Improve task & event logging
2021-11-09 19:33:26 -08:00
Karl Isenberg 99f9626ce6 fix: Ensure WaitTask gets StatusUpdate
This fixes a flakey test failure in the inventory policy test.

The failure was caused by the Deployment becoming reconciled
imediately after apply, before the WaitTask has started. Normally,
this should be fine, but the task runner was "de-duping" status
events without checking for generation changes. So when the status
went from NotFound (gen 1) to Current (gen 2), it was sent to the
still running ApplyTask. And when the status went from Current
(gen 2) to Current (gen 3), it was being de-duped and not sent to
the WaitTask.

Since the inventory test is the only e2e test performing an update,
it's the only one that was failing, and only sometimes.

The fix is to remove de-duping from the task runner, because the
status poller already performs its own deduping:
statusPollerRunner.isUpdatedResourceStatus.
2021-11-09 18:12:37 -08:00
Karl Isenberg 5f80d35a70 fix: Add context & timeouts to e2e tests
Tests will now each have a context that is cancelled on timeout.
BeforeEach and AfterEach blocks have their own timeouts, to allow
bounded setup and cleanup.

- Test Timeout: 5m
- Before Test Timeout: 30s
- After Test Timeout: 30s
2021-11-09 17:50:03 -08:00
Karl Isenberg ab5a4dc294 fix: Improve task & event logging
- Log tasks at start and end
- Log events before sending
- Add String funcs for readable event logs
2021-11-09 16:43:25 -08:00
Kubernetes Prow Robot b7f3c2a936
Merge pull request #472 from ash2k/ash2k/info-helper-for-client
Consistently use InfoHelper to get rest client
2021-11-08 11:11:19 -08:00
Kubernetes Prow Robot 4c8a09e142
Merge pull request #470 from karlkfi/karl-status-printing
feat: Add apply/destroy --status-events flag
2021-11-05 11:52:41 -07:00