Issues icon indicating copy to clipboard operation
Issues copied to clipboard

Filtering on the machines endpoint incorrectly filters on `IsDisabled`

Open benPearce1 opened this issue 1 year ago • 1 comments

Severity

Blocking some customers, no workaround available

Version

Didn't check earlier versions

Latest Version

I could reproduce the problem in the latest build

What happened?

When calling the Machines List endpoint and filtering by IsDisabled the results are incorrect when setting IsDisabled=false.

Reproduction

For my current test setup: image

http://localhost:8066/api/Spaces-1/machines?skip=0&take=2147483647&isDisabled=false returns all six targets

{
  ItemType: "Machine",
  TotalResults: 6,
  ItemsPerPage: 2147483647,
  NumberOfPages: 1,
  LastPageNumber: 0,
  Items: [ ... ]
}

http://localhost:8066/api/Spaces-1/machines?skip=0&take=2147483647&isDisabled=true returns just the two disabled ones:

{
  ItemType: "Machine",
  TotalResults: 2,
  ItemsPerPage: 2147483647,
  NumberOfPages: 1,
  LastPageNumber: 0,
  Items: [ ... ]

Error and Stacktrace

None errors produced

More Information

This is affecting the use of the Target Datasources in Terraform https://github.com/OctopusDeployLabs/terraform-provider-octopusdeploy/issues/624

Workaround

Filter on the client side, if possible.

benPearce1 avatar Jul 18 '24 00:07 benPearce1

This seems to be a result of the way the Deployment Targets page was designed, which has the following behaviour:

  • Return all machines by default (which currently includes a default querystring value of isDisabled=false in the API request)
  • Returns only disabled machines if the "Disabled Only" filter is set (querystring isDisabled=true in the API request)

The API handler was written - probably many years ago - to mirror this behaviour, even though we have the isDisabled property as nullable, we always treat a false value the same way as null.

Fix would be to update the frontend to provide no querystring value when the filter is unticked, and to update the backend to respect the nullability of the property.

mjhilton avatar Sep 02 '24 05:09 mjhilton

Release Note: Infrastructure APIs which use isDisabled parameter will now return all enabled items when isDisabled=false

octoreleasebot avatar Oct 15 '24 06:10 octoreleasebot

:tada: The fix for this issue has been released in:

Release stream Release
2024.4 2024.4.4330
2025.1+ all releases

Octobob avatar Nov 08 '24 05:11 Octobob