pub struct LabelSelector {
pub match_labels: Labels,
pub match_expressions: Vec<SelectorRequirement>,
}Expand description
Label selector for matching any labeled object.
Both match_labels and match_expressions are ANDed together.
An empty selector matches every label set.
§Example
use solti_model::{Labels, LabelSelector, SelectorRequirement};
let selector = LabelSelector {
match_labels: {
let mut labels = Labels::new();
labels.insert("zone", "eu");
labels
},
match_expressions: vec![SelectorRequirement::exists("gpu")],
};
let mut labels = Labels::new();
labels.insert("zone", "eu");
labels.insert("gpu", "h100");
assert!(selector.matches(&labels));Fields§
§match_labels: LabelsExact key-value matches.
match_expressions: Vec<SelectorRequirement>Set-based requirements.
Implementations§
Source§impl LabelSelector
impl LabelSelector
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates an empty selector.
An empty selector matches every label set.
§Example
use solti_model::{Labels, LabelSelector};
assert!(LabelSelector::new().matches(&Labels::new()));Sourcepub fn from_labels(labels: Labels) -> Self
pub fn from_labels(labels: Labels) -> Self
Creates a selector from exact matches.
§Example
use solti_model::{Labels, LabelSelector};
let mut labels = Labels::new();
labels.insert("zone", "eu");
let selector = LabelSelector::from_labels(labels);
let mut labels = Labels::new();
labels.insert("zone", "eu");
assert!(selector.matches(&labels));Sourcepub fn from_expressions(expr: Vec<SelectorRequirement>) -> Self
pub fn from_expressions(expr: Vec<SelectorRequirement>) -> Self
Creates a selector from expressions.
§Example
use solti_model::{Labels, LabelSelector, SelectorRequirement};
let selector = LabelSelector::from_expressions(vec![
SelectorRequirement::exists("gpu"),
]);
let mut labels = Labels::new();
labels.insert("gpu", "a100");
assert!(selector.matches(&labels));Sourcepub fn validate(&self) -> ModelResult<()>
pub fn validate(&self) -> ModelResult<()>
Validates the selector.
§Errors
Returns ModelError::Invalid when a key, value, or requirement is invalid.
Sourcepub fn matches(&self, labels: &Labels) -> bool
pub fn matches(&self, labels: &Labels) -> bool
Returns whether labels satisfy every requirement.
match_labels and match_expressions are ANDed.
NotIn matches when the key is absent.
§Example
use solti_model::{Labels, LabelSelector, SelectorRequirement};
let selector = LabelSelector::from_expressions(vec![
SelectorRequirement::r#in("gpu", vec!["a100".into(), "h100".into()]),
]);
let mut labels = Labels::new();
labels.insert("gpu", "h100");
assert!(selector.matches(&labels));Trait Implementations§
Source§impl Clone for LabelSelector
impl Clone for LabelSelector
Source§fn clone(&self) -> LabelSelector
fn clone(&self) -> LabelSelector
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for LabelSelector
impl Debug for LabelSelector
Source§impl Default for LabelSelector
impl Default for LabelSelector
Source§fn default() -> LabelSelector
fn default() -> LabelSelector
Source§impl<'de> Deserialize<'de> for LabelSelector
impl<'de> Deserialize<'de> for LabelSelector
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Display for LabelSelector
impl Display for LabelSelector
impl Eq for LabelSelector
Source§impl FromStr for LabelSelector
impl FromStr for LabelSelector
Source§fn from_str(value: &str) -> ModelResult<Self>
fn from_str(value: &str) -> ModelResult<Self>
Parses Kubernetes label selector syntax.
Supported requirements are =, ==, !=, in, notin, key existence and !key non-existence. Top-level commas mean AND.
§Errors
Returns ModelError::Invalid when the syntax or a requirement is invalid.
Source§type Err = ModelError
type Err = ModelError
Source§impl JsonSchema for LabelSelector
impl JsonSchema for LabelSelector
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read more