public class MarathonConstraintParser
extends java.lang.Object
PlacementRule
s from Marathon-style constraint strings.Modifier and Type | Method and Description |
---|---|
(package private) static java.util.Collection<java.lang.String> |
escapedSplit(java.lang.String str,
char split)
Tokenizes the provided string using the provided split character.
|
static PlacementRule |
parse(java.lang.String podName,
java.lang.String marathonConstraints)
Creates and returns a new
PlacementRule against the provided marathon-style
constraint string. |
static PlacementRule |
parseWith(java.lang.String podName,
PlacementRule rule,
java.lang.String marathonConstraints)
ANDs the provided marathon-style constraint string onto the provided hard-coded
PlacementRule , or returns the provided PlacementRule as-is if the
marathon-style constraint is null or empty. |
(package private) static java.util.List<java.util.List<java.lang.String>> |
splitConstraints(java.lang.String marathonConstraints)
Splits the provided marathon constraint statement into elements.
|
public static PlacementRule parseWith(java.lang.String podName, PlacementRule rule, java.lang.String marathonConstraints) throws java.io.IOException
PlacementRule
, or returns the provided PlacementRule
as-is if the
marathon-style constraint is null
or empty.podName
- The task type these constraints apply to (e.g. "hello"). Applying a constraint to all tasks
in a service is not supported.rule
- The hard-coded PlacementRule
marathonConstraints
- the marathon-style constraint string, containing one or more
nested json list entries of the form [["multi","list","value"],["hello","hi"]]
,
or one or more colon-separated entries of the form multi:list:value,hello:hi
,
or a null
or empty value if no constraint is definedjava.io.IOException
- if marathonConstraints
couldn't be parsed, or if the parsed
content isn't valid or supportedpublic static PlacementRule parse(java.lang.String podName, java.lang.String marathonConstraints) throws java.io.IOException
PlacementRule
against the provided marathon-style
constraint string. Returns a PassthroughRule
if the provided constraint string is
null
or empty.podName
- The task type these constraints apply to (e.g. "hello"). Applying a constraint to all tasks
in a service is not supported.marathonConstraints
- the marathon-style constraint string, containing one or more
nested json list entries of the form [["multi","list","value"],["hello","hi"]]
,
or one or more colon-separated entries of the form multi:list:value,hello:hi
,
or a null
or empty value if no constraint is definedjava.io.IOException
- if marathonConstraints
couldn't be parsed, or if the parsed
content isn't valid or supportedstatic java.util.List<java.util.List<java.lang.String>> splitConstraints(java.lang.String marathonConstraints) throws java.io.IOException
java.io.IOException
static java.util.Collection<java.lang.String> escapedSplit(java.lang.String str, char split)
Splitter.on(split).trimResults().split(str)
, except
with the addition of support for escaping the 'split' value with backslashes.