pub struct RoutingPolicyRules {
pub allowed_models: Vec<String>,
pub model_ceiling_groups: Vec<Vec<String>>,
pub forbid_downgrade_for: Vec<String>,
pub blocked_model_origins: Vec<String>,
pub blocked_host_countries: Vec<String>,
pub vendor_direct_cn: Option<bool>,
}Expand description
The [routing] section — org gateway routing governance (enterprise#25,
Doc 08 §4.3). Enforced in the gateway forward path when this pack arrives
via a signed, trusted, enforced = true org::OrgPolicyV1.
Fields§
§allowed_models: Vec<String>Model allowlist patterns ("claude-*", "gpt-4o-mini"). A request for
a model matching none of them is refused org-wide. Empty = no
restriction. Accumulates down the extends chain (union — the floor
merge then intersects org vs. local, see floor).
model_ceiling_groups: Vec<Vec<String>>Additional conjunctive ceilings. Every group must match; an empty group denies every model. Preserves glob intersections without turning a disjoint intersection into the unrestricted empty primary list.
forbid_downgrade_for: Vec<String>Projects whose requests the router must never downgrade to a cheaper
tier (["security", "prod"]). Accumulates down the chain.
blocked_model_origins: Vec<String>Countries of origin (ISO 3166-1 alpha-2, the model catalog’s
origin_country) whose model weights are never used, whatever the
host (mz14). Accumulates (union) down the chain and across the floor.
blocked_host_countries: Vec<String>Countries where no model request is processed: a catalog host’s
host_country, and a vendor’s own API ([[direct]]). Union.
vendor_direct_cn: Option<bool>Some(false) voids the local [proxy] allow_vendor_direct_cn opt-in.
false wins over true in every merge; true grants nothing by
itself (the opt-in stays local).
Implementations§
Source§impl RoutingPolicyRules
impl RoutingPolicyRules
Sourcepub fn origin_blocked(&self, country: &str) -> bool
pub fn origin_blocked(&self, country: &str) -> bool
Whether country is a blocked model origin.
Sourcepub fn host_blocked(&self, country: &str) -> bool
pub fn host_blocked(&self, country: &str) -> bool
Whether country is a blocked host country.
Sourcepub fn model_allowed(&self, model: &str) -> bool
pub fn model_allowed(&self, model: &str) -> bool
Apply all inherited ceilings to one explicitly selected model.
Trait Implementations§
Source§impl Clone for RoutingPolicyRules
impl Clone for RoutingPolicyRules
Source§impl Debug for RoutingPolicyRules
impl Debug for RoutingPolicyRules
Source§impl Default for RoutingPolicyRules
impl Default for RoutingPolicyRules
Source§impl<'de> Deserialize<'de> for RoutingPolicyRules
impl<'de> Deserialize<'de> for RoutingPolicyRules
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>,
Auto Trait Implementations§
impl Forget for RoutingPolicyRules
impl Freeze for RoutingPolicyRules
impl Move for RoutingPolicyRules
impl RefUnwindSafe for RoutingPolicyRules
impl Send for RoutingPolicyRules
impl Sync for RoutingPolicyRules
impl Unpin for RoutingPolicyRules
impl UnsafeUnpin for RoutingPolicyRules
impl UnwindSafe for RoutingPolicyRules
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more