kubernetes-models
Version:
45 lines (44 loc) • 3.06 kB
TypeScript
import { ModelData, Model } from "@kubernetes-models/base";
/**
* DeviceConstraint must have exactly one field set besides Requests.
*/
export interface IDeviceConstraint {
/**
* DistinctAttribute requires that all devices in question have this attribute and that its type and value are unique across those devices.
*
* When the DRAListTypeAttributes feature gate is enabled, comparison uses set semantics (i.e., element order and duplicates are ignored): list-valued attributes must be pairwise disjoint across devices. Scalar values are treated as singleton sets for backward compatibility.
*
* This acts as the inverse of MatchAttribute.
*
* This constraint is used to avoid allocating multiple requests to the same device by ensuring attribute-level differentiation.
*
* This is useful for scenarios where resource requests must be fulfilled by separate physical devices. For example, a container requests two network interfaces that must be allocated from two different physical NICs.
*/
"distinctAttribute"?: string;
/**
* MatchAttribute requires that all devices in question have this attribute and that its type and value are the same across those devices.
*
* For example, if you specified "dra.example.com/numa" (a hypothetical example!), then only devices in the same NUMA node will be chosen. A device which does not have that attribute will not be chosen. All devices should use a value of the same type for this attribute because that is part of its specification, but if one device doesn't, then it also will not be chosen.
*
* When the DRAListTypeAttributes feature gate is enabled, comparison uses set semantics(i.e., element order and duplicates are ignored): list-valued attributes match when the intersection across all devices is non-empty. Scalar values are treated as single-element lists for backward compatibility.
*
* Must include the domain qualifier.
*/
"matchAttribute"?: string;
/**
* Requests is a list of the one or more requests in this claim which must co-satisfy this constraint. If a request is fulfilled by multiple devices, then all of the devices must satisfy the constraint. If this is not specified, this constraint applies to all requests in this claim.
*
* References to subrequests must include the name of the main request and may include the subrequest using the format <main request>[/<subrequest>]. If just the main request is given, the constraint applies to all subrequests.
*/
"requests"?: Array<string>;
}
/**
* DeviceConstraint must have exactly one field set besides Requests.
*/
export declare class DeviceConstraint extends Model<IDeviceConstraint> implements IDeviceConstraint {
"distinctAttribute"?: string;
"matchAttribute"?: string;
"requests"?: Array<string>;
constructor(data?: ModelData<IDeviceConstraint>);
}
export type { IDeviceConstraint as IIoK8sApiResourceV1DeviceConstraint, DeviceConstraint as IoK8sApiResourceV1DeviceConstraint };