The filter package is designed to allow you to define filters, primarily by yaml to be able to filter resources. This is
used in the nuke
package to filter resources based on a set of criteria.
Filter's can be optionally added to a group
filters within a group
are combined with an AND
operation. Filters in
different group
are combined with an OR
operation.
There is also the concept of a global
filter that is applied to all resources.
You can define a global filter that will be applied to all resources. This is useful for defining a set of filters that should be applied to all resources.
It has a special key called __global__
.
This only works when you are defining it as a resource type as part of the Filters
map[string][]Filter
type.
There are multiple filter types that can be used to filter the resources. These types are used to match against the property.
- empty
- exact
- glob
- regex
- contains
- dateOlderThan
- dateOlderThanNow
- suffix
- prefix
- In
- NotIn
These are identical, if you leave your type empty, it will choose exact. Exact will only match if values are identical.
A glob allows for matching values using asterisk for a wild card, you may have more than one asterisk.
A regex allows for matching values with any valid regular expression.
A contains type allows for matching a value if it has the value contained within the property value.
This allows you to filter a property's value based on whether it is older
This allows you to filter a properties value based on whether it is older than the current time in UTC with an addition or subtraction of a duration value.
For example if the property is CreatedDate
and the value is 2024-04-14T12:00:00Z
and the current time is
2024-04-14T18:00:00Z
then you can set a negative duration like -12h
. In this case it would not match, as the
CreatedDate
would be after the adjusted time.
If you adjusted it -4h
then it would match as the CreatedDate
would be before the adjusted time.
This allows you to match a value if the value being filtered on is the suffix of the property value.
This allows you to match a value if the value being filtered on is the prefix of the property value.
This allows you to match a value if it is in a list of values.
This allows you to match a value if it is not in a list of values.