{
  "description": "CapacityReservation is the Schema for the CapacityReservations API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "CapacityReservationSpec defines the desired state of CapacityReservation.\n\nDescribes a Capacity Reservation.",
      "properties": {
        "additionalInfo": {
          "description": "Reserved for future use.",
          "type": "string"
        },
        "availabilityZone": {
          "description": "The Availability Zone in which to create the Capacity Reservation.",
          "type": "string"
        },
        "availabilityZoneID": {
          "description": "The ID of the Availability Zone in which to create the Capacity Reservation.",
          "type": "string"
        },
        "commitmentDuration": {
          "description": "Required for future-dated Capacity Reservations only. To create a Capacity\nReservation for immediate use, omit this parameter.\n\nSpecify a commitment duration, in seconds, for the future-dated Capacity\nReservation.\n\nThe commitment duration is a minimum duration for which you commit to having\nthe future-dated Capacity Reservation in the active state in your account\nafter it has been delivered.\n\nFor more information, see Commitment duration (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cr-concepts.html#cr-commitment-duration).",
          "format": "int64",
          "type": "integer"
        },
        "deliveryPreference": {
          "description": "Required for future-dated Capacity Reservations only. To create a Capacity\nReservation for immediate use, omit this parameter.\n\nIndicates that the requested capacity will be delivered in addition to any\nrunning instances or reserved capacity that you have in your account at the\nrequested date and time.\n\nThe only supported value is incremental.",
          "type": "string"
        },
        "ebsOptimized": {
          "description": "Indicates whether the Capacity Reservation supports EBS-optimized instances.\nThis optimization provides dedicated throughput to Amazon EBS and an optimized\nconfiguration stack to provide optimal I/O performance. This optimization\nisn't available with all instance types. Additional usage charges apply when\nusing an EBS- optimized instance.",
          "type": "boolean"
        },
        "endDate": {
          "description": "The date and time at which the Capacity Reservation expires. When a Capacity\nReservation expires, the reserved capacity is released and you can no longer\nlaunch instances into it. The Capacity Reservation's state changes to expired\nwhen it reaches its end date and time.\n\nYou must provide an EndDate value if EndDateType is limited. Omit EndDate\nif EndDateType is unlimited.\n\nIf the EndDateType is limited, the Capacity Reservation is cancelled within\nan hour from the specified time. For example, if you specify 5/31/2019, 13:30:55,\nthe Capacity Reservation is guaranteed to end between 13:30:55 and 14:30:55\non 5/31/2019.\n\nIf you are requesting a future-dated Capacity Reservation, you can't specify\nan end date and time that is within the commitment duration.",
          "format": "date-time",
          "type": "string"
        },
        "endDateType": {
          "description": "Indicates the way in which the Capacity Reservation ends. A Capacity Reservation\ncan have one of the following end types:\n\n  - unlimited - The Capacity Reservation remains active until you explicitly\n    cancel it. Do not provide an EndDate if the EndDateType is unlimited.\n\n  - limited - The Capacity Reservation expires automatically at a specified\n    date and time. You must provide an EndDate value if the EndDateType value\n    is limited.",
          "type": "string"
        },
        "ephemeralStorage": {
          "description": "Deprecated.",
          "type": "boolean"
        },
        "instanceCount": {
          "description": "The number of instances for which to reserve capacity.\n\nYou can request future-dated Capacity Reservations for an instance count\nwith a minimum of 100 VPUs. For example, if you request a future-dated Capacity\nReservation for m5.xlarge instances, you must request at least 25 instances\n(25 * m5.xlarge = 100 vCPUs).\n\nValid range: 1 - 1000",
          "format": "int64",
          "type": "integer"
        },
        "instanceMatchCriteria": {
          "description": "Indicates the type of instance launches that the Capacity Reservation accepts.\nThe options include:\n\n  - open - The Capacity Reservation automatically matches all instances\n    that have matching attributes (instance type, platform, and Availability\n    Zone). Instances that have matching attributes run in the Capacity Reservation\n    automatically without specifying any additional parameters.\n\n  - targeted - The Capacity Reservation only accepts instances that have\n    matching attributes (instance type, platform, and Availability Zone),\n    and explicitly target the Capacity Reservation. This ensures that only\n    permitted instances can use the reserved capacity.\n\nIf you are requesting a future-dated Capacity Reservation, you must specify\ntargeted.\n\nDefault: open",
          "type": "string"
        },
        "instancePlatform": {
          "description": "The type of operating system for which to reserve capacity.",
          "type": "string"
        },
        "instanceType": {
          "description": "The instance type for which to reserve capacity.\n\nYou can request future-dated Capacity Reservations for instance types in\nthe C, M, R, I, and T instance families only.\n\nFor more information, see Instance types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)\nin the Amazon EC2 User Guide.",
          "type": "string"
        },
        "outpostARN": {
          "description": "Not supported for future-dated Capacity Reservations.\n\nThe Amazon Resource Name (ARN) of the Outpost on which to create the Capacity\nReservation.",
          "type": "string"
        },
        "placementGroupARN": {
          "description": "Not supported for future-dated Capacity Reservations.\n\nThe Amazon Resource Name (ARN) of the cluster placement group in which to\ncreate the Capacity Reservation. For more information, see Capacity Reservations\nfor cluster placement groups (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cr-cpg.html)\nin the Amazon EC2 User Guide.",
          "type": "string"
        },
        "startDate": {
          "description": "Required for future-dated Capacity Reservations only. To create a Capacity\nReservation for immediate use, omit this parameter.\n\nThe date and time at which the future-dated Capacity Reservation should become\navailable for use, in the ISO8601 format in the UTC time zone (YYYY-MM-DDThh:mm:ss.sssZ).\n\nYou can request a future-dated Capacity Reservation between 5 and 120 days\nin advance.",
          "format": "date-time",
          "type": "string"
        },
        "tags": {
          "description": "The tags. The value parameter is required, but if you don't want the tag\nto have a value, specify the parameter with no value, and we set the value\nto an empty string.",
          "items": {
            "description": "Describes a tag.",
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "tenancy": {
          "description": "Indicates the tenancy of the Capacity Reservation. A Capacity Reservation\ncan have one of the following tenancy settings:\n\n  - default - The Capacity Reservation is created on hardware that is shared\n    with other Amazon Web Services accounts.\n\n  - dedicated - The Capacity Reservation is created on single-tenant hardware\n    that is dedicated to a single Amazon Web Services account.",
          "type": "string"
        }
      },
      "required": [
        "instanceCount",
        "instancePlatform",
        "instanceType"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "CapacityReservationStatus defines the observed state of CapacityReservation",
      "properties": {
        "ackResourceMetadata": {
          "description": "All CRs managed by ACK have a common `Status.ACKResourceMetadata` member\nthat is used to contain resource sync state, account ownership,\nconstructed ARN for the resource",
          "properties": {
            "arn": {
              "description": "ARN is the Amazon Resource Name for the resource. This is a\nglobally-unique identifier and is set only by the ACK service controller\nonce the controller has orchestrated the creation of the resource OR\nwhen it has verified that an \"adopted\" resource (a resource where the\nARN annotation was set by the Kubernetes user on the CR) exists and\nmatches the supplied CR's Spec field values.\nhttps://github.com/aws/aws-controllers-k8s/issues/270",
              "type": "string"
            },
            "ownerAccountID": {
              "description": "OwnerAccountID is the AWS Account ID of the account that owns the\nbackend AWS service API resource.",
              "type": "string"
            },
            "region": {
              "description": "Region is the AWS region in which the resource exists or will exist.",
              "type": "string"
            }
          },
          "required": [
            "ownerAccountID",
            "region"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "availableInstanceCount": {
          "description": "The remaining capacity. Indicates the number of instances that can be launched\nin the Capacity Reservation.",
          "format": "int64",
          "type": "integer"
        },
        "capacityAllocations": {
          "description": "Information about instance capacity usage.",
          "items": {
            "description": "Information about instance capacity usage for a Capacity Reservation.",
            "properties": {
              "allocationType": {
                "type": "string"
              },
              "count": {
                "format": "int64",
                "type": "integer"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "capacityReservationFleetID": {
          "description": "The ID of the Capacity Reservation Fleet to which the Capacity Reservation\nbelongs. Only valid for Capacity Reservations that were created by a Capacity\nReservation Fleet.",
          "type": "string"
        },
        "capacityReservationID": {
          "description": "The ID of the Capacity Reservation.",
          "type": "string"
        },
        "commitmentInfo": {
          "description": "Information about your commitment for a future-dated Capacity Reservation.",
          "properties": {
            "commitmentEndDate": {
              "format": "date-time",
              "type": "string"
            },
            "committedInstanceCount": {
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "conditions": {
          "description": "All CRs managed by ACK have a common `Status.Conditions` member that\ncontains a collection of `ackv1alpha1.Condition` objects that describe\nthe various terminal states of the CR and its backend AWS service API\nresource",
          "items": {
            "description": "Condition is the common struct used by all CRDs managed by ACK service\ncontrollers to indicate terminal states  of the CR and its backend AWS\nservice API resource",
            "properties": {
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "A human readable message indicating details about the transition.",
                "type": "string"
              },
              "reason": {
                "description": "The reason for the condition's last transition.",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type is the type of the Condition",
                "type": "string"
              }
            },
            "required": [
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "createDate": {
          "description": "The date and time at which the Capacity Reservation was created.",
          "format": "date-time",
          "type": "string"
        },
        "ownerID": {
          "description": "The ID of the Amazon Web Services account that owns the Capacity Reservation.",
          "type": "string"
        },
        "reservationType": {
          "description": "The type of Capacity Reservation.",
          "type": "string"
        },
        "state": {
          "description": "The current state of the Capacity Reservation. A Capacity Reservation can\nbe in one of the following states:\n\n   * active - The capacity is available for use.\n\n   * expired - The Capacity Reservation expired automatically at the date\n   and time specified in your reservation request. The reserved capacity\n   is no longer available for your use.\n\n   * cancelled - The Capacity Reservation was canceled. The reserved capacity\n   is no longer available for your use.\n\n   * pending - The Capacity Reservation request was successful but the capacity\n   provisioning is still pending.\n\n   * failed - The Capacity Reservation request has failed. A request can\n   fail due to request parameters that are not valid, capacity constraints,\n   or instance limit constraints. You can view a failed request for 60 minutes.\n\n   * scheduled - (Future-dated Capacity Reservations only) The future-dated\n   Capacity Reservation request was approved and the Capacity Reservation\n   is scheduled for delivery on the requested start date.\n\n   * assessing - (Future-dated Capacity Reservations only) Amazon EC2 is\n   assessing your request for a future-dated Capacity Reservation.\n\n   * delayed - (Future-dated Capacity Reservations only) Amazon EC2 encountered\n   a delay in provisioning the requested future-dated Capacity Reservation.\n   Amazon EC2 is unable to deliver the requested capacity by the requested\n   start date and time.\n\n   * unsupported - (Future-dated Capacity Reservations only) Amazon EC2 can't\n   support the future-dated Capacity Reservation request due to capacity\n   constraints. You can view unsupported requests for 30 days. The Capacity\n   Reservation will not be delivered.",
          "type": "string"
        },
        "totalInstanceCount": {
          "description": "The total number of instances for which the Capacity Reservation reserves\ncapacity.",
          "format": "int64",
          "type": "integer"
        },
        "unusedReservationBillingOwnerID": {
          "description": "The ID of the Amazon Web Services account to which billing of the unused\ncapacity of the Capacity Reservation is assigned.",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
