---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.13.0
    helm.sh/resource-policy: keep
  name: machines.bmc.tinkerbell.org
  labels:
    clusterctl.cluster.x-k8s.io: ""
    clusterctl.cluster.x-k8s.io/move: ""
spec:
  group: bmc.tinkerbell.org
  names:
    categories:
    - tinkerbell
    kind: Machine
    listKind: MachineList
    plural: machines
    singular: machine
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: Machine is the Schema for the machines API.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More 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. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: MachineSpec defines desired machine state.
            properties:
              connection:
                description: Connection contains connection data for a Baseboard Management
                  Controller.
                properties:
                  authSecretRef:
                    description: AuthSecretRef is the SecretReference that contains
                      authentication information of the Machine. The Secret must contain
                      username and password keys. This is optional as it is not required
                      when using the RPC provider.
                    properties:
                      name:
                        description: name is unique within a namespace to reference
                          a secret resource.
                        type: string
                      namespace:
                        description: namespace defines the space within which the
                          secret name must be unique.
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  host:
                    description: Host is the host IP address or hostname of the Machine.
                    minLength: 1
                    type: string
                  insecureTLS:
                    description: InsecureTLS specifies trusted TLS connections.
                    type: boolean
                  port:
                    default: 623
                    description: Port is the port number for connecting with the Machine.
                    type: integer
                  providerOptions:
                    description: ProviderOptions contains provider specific options.
                    properties:
                      intelAMT:
                        description: IntelAMT contains the options to customize the
                          IntelAMT provider.
                        properties:
                          port:
                            description: Port that intelAMT will use for calls.
                            type: integer
                        required:
                        - port
                        type: object
                      ipmitool:
                        description: IPMITOOL contains the options to customize the
                          Ipmitool provider.
                        properties:
                          cipherSuite:
                            description: CipherSuite that ipmitool will use for calls.
                            type: string
                          port:
                            description: Port that ipmitool will use for calls.
                            type: integer
                        type: object
                      redfish:
                        description: Redfish contains the options to customize the
                          Redfish provider.
                        properties:
                          port:
                            description: Port that redfish will use for calls.
                            type: integer
                        required:
                        - port
                        type: object
                      rpc:
                        description: RPC contains the options to customize the RPC
                          provider.
                        properties:
                          consumerURL:
                            description: ConsumerURL is the URL where an rpc consumer/listener
                              is running and to which we will send and receive all
                              notifications.
                            type: string
                          experimental:
                            description: Experimental options.
                            properties:
                              customRequestPayload:
                                description: CustomRequestPayload must be in json.
                                type: string
                              dotPath:
                                description: 'DotPath is the path to the json object
                                  where the bmclib RequestPayload{} struct will be
                                  embedded. For example: object.data.body'
                                type: string
                            type: object
                          hmac:
                            description: HMAC is the options used to create a HMAC
                              signature.
                            properties:
                              prefixSigDisabled:
                                description: 'PrefixSigDisabled determines whether
                                  the algorithm will be prefixed to the signature.
                                  Example: sha256=abc123'
                                type: boolean
                              secrets:
                                additionalProperties:
                                  items:
                                    description: SecretReference represents a Secret
                                      Reference. It has enough information to retrieve
                                      secret in any namespace
                                    properties:
                                      name:
                                        description: name is unique within a namespace
                                          to reference a secret resource.
                                        type: string
                                      namespace:
                                        description: namespace defines the space within
                                          which the secret name must be unique.
                                        type: string
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  type: array
                                description: Secrets are a map of algorithms to secrets
                                  used for signing.
                                type: object
                            type: object
                          logNotificationsDisabled:
                            description: LogNotificationsDisabled determines whether
                              responses from rpc consumer/listeners will be logged
                              or not.
                            type: boolean
                          request:
                            description: Request is the options used to create the
                              rpc HTTP request.
                            properties:
                              httpContentType:
                                description: HTTPContentType is the content type to
                                  use for the rpc request notification.
                                type: string
                              httpMethod:
                                description: HTTPMethod is the HTTP method to use
                                  for the rpc request notification.
                                type: string
                              staticHeaders:
                                additionalProperties:
                                  items:
                                    type: string
                                  type: array
                                description: StaticHeaders are predefined headers
                                  that will be added to every request.
                                type: object
                              timestampFormat:
                                description: TimestampFormat is the time format for
                                  the timestamp header.
                                type: string
                              timestampHeader:
                                description: 'TimestampHeader is the header name that
                                  should contain the timestamp. Example: X-BMCLIB-Timestamp'
                                type: string
                            type: object
                          signature:
                            description: Signature is the options used for adding
                              an HMAC signature to an HTTP request.
                            properties:
                              appendAlgoToHeaderDisabled:
                                description: 'AppendAlgoToHeaderDisabled decides whether
                                  to append the algorithm to the signature header
                                  or not. Example: X-BMCLIB-Signature becomes X-BMCLIB-Signature-256
                                  When set to true, a header will be added for each
                                  algorithm. Example: X-BMCLIB-Signature-256 and X-BMCLIB-Signature-512'
                                type: boolean
                              headerName:
                                description: 'HeaderName is the header name that should
                                  contain the signature(s). Example: X-BMCLIB-Signature'
                                type: string
                              includedPayloadHeaders:
                                description: 'IncludedPayloadHeaders are headers whose
                                  values will be included in the signature payload.
                                  Example: X-BMCLIB-My-Custom-Header All headers will
                                  be deduplicated.'
                                items:
                                  type: string
                                type: array
                            type: object
                        required:
                        - consumerURL
                        type: object
                    type: object
                required:
                - host
                - insecureTLS
                type: object
            required:
            - connection
            type: object
          status:
            description: MachineStatus defines the observed state of Machine.
            properties:
              conditions:
                description: Conditions represents the latest available observations
                  of an object's current state.
                items:
                  description: MachineCondition defines an observed condition of a
                    Machine.
                  properties:
                    lastUpdateTime:
                      description: LastUpdateTime of the condition.
                      format: date-time
                      type: string
                    message:
                      description: Message is a human readable message indicating
                        with details of the last transition.
                      type: string
                    status:
                      description: Status of the condition.
                      type: string
                    type:
                      description: Type of the Machine condition.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              powerState:
                description: Power is the current power state of the Machine.
                enum:
                - "on"
                - "off"
                - unknown
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
