/* tslint:disable */ /* eslint-disable */ /** * Kubernetes * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: unversioned * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ import { exists, mapValues } from '../runtime'; import { IoK8sApiCoreV1NodeSelector, IoK8sApiCoreV1NodeSelectorFromJSON, IoK8sApiCoreV1NodeSelectorToJSON, IoK8sApiResourceV1beta2DeviceAttribute, IoK8sApiResourceV1beta2DeviceAttributeFromJSON, IoK8sApiResourceV1beta2DeviceAttributeToJSON, IoK8sApiResourceV1beta2DeviceCapacity, IoK8sApiResourceV1beta2DeviceCapacityFromJSON, IoK8sApiResourceV1beta2DeviceCapacityToJSON, IoK8sApiResourceV1beta2DeviceCounterConsumption, IoK8sApiResourceV1beta2DeviceCounterConsumptionFromJSON, IoK8sApiResourceV1beta2DeviceCounterConsumptionToJSON, IoK8sApiResourceV1beta2DeviceTaint, IoK8sApiResourceV1beta2DeviceTaintFromJSON, IoK8sApiResourceV1beta2DeviceTaintToJSON, } from './'; /** * Device represents one individual hardware instance that can be selected based on its attributes. Besides the name, exactly one field must be set. * @export * @interface IoK8sApiResourceV1beta2Device */ export interface IoK8sApiResourceV1beta2Device { /** * AllNodes indicates that all nodes have access to the device. * * Must only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set. * @type {boolean} * @memberof IoK8sApiResourceV1beta2Device */ allNodes?: boolean; /** * Attributes defines the set of attributes for this device. The name of each attribute must be unique in that set. * * The maximum number of attributes and capacities combined is 32. * @type {{ [key: string]: IoK8sApiResourceV1beta2DeviceAttribute; }} * @memberof IoK8sApiResourceV1beta2Device */ attributes?: { [key: string]: IoK8sApiResourceV1beta2DeviceAttribute }; /** * Capacity defines the set of capacities for this device. The name of each capacity must be unique in that set. * * The maximum number of attributes and capacities combined is 32. * @type {{ [key: string]: IoK8sApiResourceV1beta2DeviceCapacity; }} * @memberof IoK8sApiResourceV1beta2Device */ capacity?: { [key: string]: IoK8sApiResourceV1beta2DeviceCapacity }; /** * ConsumesCounters defines a list of references to sharedCounters and the set of counters that the device will consume from those counter sets. * * There can only be a single entry per counterSet. * * The total number of device counter consumption entries must be <= 32. In addition, the total number in the entire ResourceSlice must be <= 1024 (for example, 64 devices with 16 counters each). * @type {Array} * @memberof IoK8sApiResourceV1beta2Device */ consumesCounters?: Array; /** * Name is unique identifier among all devices managed by the driver in the pool. It must be a DNS label. * @type {string} * @memberof IoK8sApiResourceV1beta2Device */ name: string; /** * NodeName identifies the node where the device is available. * * Must only be set if Spec.PerDeviceNodeSelection is set to true. At most one of NodeName, NodeSelector and AllNodes can be set. * @type {string} * @memberof IoK8sApiResourceV1beta2Device */ nodeName?: string; /** * * @type {IoK8sApiCoreV1NodeSelector} * @memberof IoK8sApiResourceV1beta2Device */ nodeSelector?: IoK8sApiCoreV1NodeSelector; /** * If specified, these are the driver-defined taints. * * The maximum number of taints is 4. * * This is an alpha field and requires enabling the DRADeviceTaints feature gate. * @type {Array} * @memberof IoK8sApiResourceV1beta2Device */ taints?: Array; } export function IoK8sApiResourceV1beta2DeviceFromJSON(json: any): IoK8sApiResourceV1beta2Device { return IoK8sApiResourceV1beta2DeviceFromJSONTyped(json, false); } export function IoK8sApiResourceV1beta2DeviceFromJSONTyped( json: any, _ignoreDiscriminator: boolean, ): IoK8sApiResourceV1beta2Device { if (json === undefined || json === null) { return json; } return { allNodes: !exists(json, 'allNodes') ? undefined : json['allNodes'], attributes: !exists(json, 'attributes') ? undefined : mapValues(json['attributes'], IoK8sApiResourceV1beta2DeviceAttributeFromJSON), capacity: !exists(json, 'capacity') ? undefined : mapValues(json['capacity'], IoK8sApiResourceV1beta2DeviceCapacityFromJSON), consumesCounters: !exists(json, 'consumesCounters') ? undefined : (json['consumesCounters'] as Array).map( IoK8sApiResourceV1beta2DeviceCounterConsumptionFromJSON, ), name: json['name'], nodeName: !exists(json, 'nodeName') ? undefined : json['nodeName'], nodeSelector: !exists(json, 'nodeSelector') ? undefined : IoK8sApiCoreV1NodeSelectorFromJSON(json['nodeSelector']), taints: !exists(json, 'taints') ? undefined : (json['taints'] as Array).map(IoK8sApiResourceV1beta2DeviceTaintFromJSON), }; } export function IoK8sApiResourceV1beta2DeviceToJSON( value?: IoK8sApiResourceV1beta2Device | null, ): any { if (value === undefined) { return undefined; } if (value === null) { return null; } return { allNodes: value.allNodes, attributes: value.attributes === undefined ? undefined : mapValues(value.attributes, IoK8sApiResourceV1beta2DeviceAttributeToJSON), capacity: value.capacity === undefined ? undefined : mapValues(value.capacity, IoK8sApiResourceV1beta2DeviceCapacityToJSON), consumesCounters: value.consumesCounters === undefined ? undefined : (value.consumesCounters as Array).map( IoK8sApiResourceV1beta2DeviceCounterConsumptionToJSON, ), name: value.name, nodeName: value.nodeName, nodeSelector: IoK8sApiCoreV1NodeSelectorToJSON(value.nodeSelector), taints: value.taints === undefined ? undefined : (value.taints as Array).map(IoK8sApiResourceV1beta2DeviceTaintToJSON), }; }