}
function launch_baremetal_operator {
- if [ -d $GOPATH/src/github.com/metal3-io/baremetal-operator ]; then
- rm -rf $GOPATH/src/github.com/metal3-io/baremetal-operator
- fi
-
docker pull integratedcloudnative/baremetal-operator:v1.0-icn
- docker tag integratedcloudnative/baremetal-operator:v1.0-icn \
- quay.io/metal3-io/baremetal-operator:master
-
- mkdir -p $GOPATH/src/github.com/metal3-io
- pushd $GOPATH/src/github.com/metal3-io
- git clone --single-branch --branch v1.0-icn \
- https://github.com/akraino-icn/baremetal-operator.git
- kubectl apply -f baremetal-operator/deploy/namespace/namespace.yaml
- kubectl apply -f baremetal-operator/deploy/rbac/service_account.yaml -n metal3
- kubectl apply -f baremetal-operator/deploy/rbac/role.yaml -n metal3
- kubectl apply -f baremetal-operator/deploy/rbac/role_binding.yaml
- kubectl apply -f baremetal-operator/deploy/crds/metal3.io_baremetalhosts_crd.yaml
- kubectl apply -f baremetal-operator/deploy/operator/no_ironic/operator.yaml -n metal3
- popd
+ kubectl apply -f bmo/namespace/namespace.yaml
+ kubectl apply -f bmo/rbac/service_account.yaml -n metal3
+ kubectl apply -f bmo/rbac/role.yaml -n metal3
+ kubectl apply -f bmo/rbac/role_binding.yaml
+ kubectl apply -f bmo/crds/metal3.io_baremetalhosts_crd.yaml
+ kubectl apply -f bmo/operator/no_ironic/operator.yaml -n metal3
}
function remove_baremetal_operator {
- if [ ! -d $GOPATH/src/github.com/metal3-io/baremetal-operator ]; then
- pushd $GOPATH/src/github.com/metal3-io
- git clone --single-branch --branch v1.0-icn \
- https://github.com/akraino-icn/baremetal-operator.git
- popd
- fi
-
- pushd $GOPATH/src/github.com/metal3-io
- kubectl delete -f baremetal-operator/deploy/operator/no_ironic/operator.yaml -n metal3
- kubectl delete -f baremetal-operator/deploy/crds/metal3.io_baremetalhosts_crd.yaml
- kubectl delete -f baremetal-operator/deploy/rbac/role_binding.yaml
- kubectl delete -f baremetal-operator/deploy/rbac/role.yaml -n metal3
- kubectl delete -f baremetal-operator/deploy/rbac/service_account.yaml -n metal3
- kubectl delete -f baremetal-operator/deploy/namespace/namespace.yaml
- popd
- rm -rf $GOPATH/src/github.com/metal3-io/baremetal-operator
+ kubectl delete -f bmo/operator/no_ironic/operator.yaml -n metal3
+ kubectl delete -f bmo/crds/metal3.io_baremetalhosts_crd.yaml
+ kubectl delete -f bmo/rbac/role_binding.yaml
+ kubectl delete -f bmo/rbac/role.yaml -n metal3
+ kubectl delete -f bmo/rbac/service_account.yaml -n metal3
+ kubectl delete -f bmo/namespace/namespace.yaml
}
function network_config_files {
--- /dev/null
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+ name: baremetalhosts.metal3.io
+spec:
+ additionalPrinterColumns:
+ - JSONPath: .status.operationalStatus
+ description: Operational status
+ name: Status
+ type: string
+ - JSONPath: .status.provisioning.state
+ description: Provisioning status
+ name: Provisioning Status
+ type: string
+ - JSONPath: .spec.consumerRef.name
+ description: Consumer using this host
+ name: Consumer
+ type: string
+ - JSONPath: .spec.bmc.address
+ description: Address of management controller
+ name: BMC
+ type: string
+ - JSONPath: .status.hardwareProfile
+ description: The type of hardware detected
+ name: Hardware Profile
+ type: string
+ - JSONPath: .spec.online
+ description: Whether the host is online or not
+ name: Online
+ type: string
+ - JSONPath: .status.errorMessage
+ description: Most recent error
+ name: Error
+ type: string
+ group: metal3.io
+ names:
+ kind: BareMetalHost
+ listKind: BareMetalHostList
+ plural: baremetalhosts
+ shortNames:
+ - bmh
+ - bmhost
+ singular: baremetalhost
+ scope: Namespaced
+ subresources:
+ status: {}
+ validation:
+ openAPIV3Schema:
+ description: BareMetalHost is the Schema for the baremetalhosts 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: BareMetalHostSpec defines the desired state of BareMetalHost
+ properties:
+ bmc:
+ description: How do we connect to the BMC?
+ properties:
+ address:
+ description: Address holds the URL for accessing the controller
+ on the network.
+ type: string
+ credentialsName:
+ description: The name of the secret containing the BMC credentials
+ (requires keys "username" and "password").
+ type: string
+ disableCertificateVerification:
+ description: DisableCertificateVerification disables verification
+ of server certificates when using HTTPS to connect to the BMC.
+ This is required when the server certificate is self-signed, but
+ is insecure because it allows a man-in-the-middle to intercept
+ the connection.
+ type: boolean
+ required:
+ - address
+ - credentialsName
+ type: object
+ bootMACAddress:
+ description: Which MAC address will PXE boot? This is optional for some
+ types, but required for libvirt VMs driven by vbmc.
+ pattern: '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'
+ type: string
+ consumerRef:
+ description: ConsumerRef can be used to store information about something
+ that is using a host. When it is not empty, the host is considered
+ "in use".
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of an
+ entire object, this string should contain a valid JSON/Go field
+ access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container within
+ a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container that triggered
+ the event) or if no container name is specified "spec.containers[2]"
+ (container with index 2 in this pod). This syntax is chosen only
+ to have some well-defined way of referencing a part of an object.
+ TODO: this design is not final and this field is subject to change
+ in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference is
+ made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ description:
+ description: Description is a human-entered text used to help identify
+ the host
+ type: string
+ externallyProvisioned:
+ description: ExternallyProvisioned means something else is managing
+ the image running on the host and the operator should only manage
+ the power status and hardware inventory inspection. If the Image field
+ is filled in, this field is ignored.
+ type: boolean
+ hardwareProfile:
+ description: What is the name of the hardware profile for this host?
+ It should only be necessary to set this when inspection cannot automatically
+ determine the profile.
+ type: string
+ image:
+ description: Image holds the details of the image to be provisioned.
+ properties:
+ checksum:
+ description: Checksum is the checksum for the image.
+ type: string
+ url:
+ description: URL is a location of an image to deploy.
+ type: string
+ required:
+ - checksum
+ - url
+ type: object
+ networkData:
+ description: NetworkData holds the reference to the Secret containing
+ content of network_data.json which is passed to Config Drive
+ 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
+ online:
+ description: Should the server be online?
+ type: boolean
+ taints:
+ description: Taints is the full, authoritative list of taints to apply
+ to the corresponding Machine. This list will overwrite any modifications
+ made to the Machine on an ongoing basis.
+ items:
+ description: The node this Taint is attached to has the "effect" on
+ any pod that does not tolerate the Taint.
+ properties:
+ effect:
+ description: Required. The effect of the taint on pods that do
+ not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule
+ and NoExecute.
+ type: string
+ key:
+ description: Required. The taint key to be applied to a node.
+ type: string
+ timeAdded:
+ description: TimeAdded represents the time at which the taint
+ was added. It is only written for NoExecute taints.
+ format: date-time
+ type: string
+ value:
+ description: Required. The taint value corresponding to the taint
+ key.
+ type: string
+ required:
+ - effect
+ - key
+ type: object
+ type: array
+ userData:
+ description: UserData holds the reference to the Secret containing the
+ user data to be passed to the host before it boots.
+ 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
+ required:
+ - online
+ type: object
+ status:
+ description: BareMetalHostStatus defines the observed state of BareMetalHost
+ properties:
+ errorMessage:
+ description: the last error message reported by the provisioning subsystem
+ type: string
+ errorType:
+ description: ErrorType indicates the type of failure encountered when
+ the OperationalStatus is OperationalStatusError
+ enum:
+ - registration error
+ - inspection error
+ - provisioning error
+ - power management error
+ type: string
+ goodCredentials:
+ description: the last credentials we were able to validate as working
+ properties:
+ credentials:
+ 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
+ credentialsVersion:
+ type: string
+ type: object
+ hardware:
+ description: The hardware discovered to exist on the host.
+ properties:
+ cpu:
+ description: CPU describes one processor on the host.
+ properties:
+ arch:
+ type: string
+ clockMegahertz:
+ description: ClockSpeed is a clock speed in MHz
+ count:
+ type: integer
+ flags:
+ items:
+ type: string
+ type: array
+ model:
+ type: string
+ required:
+ - arch
+ - clockMegahertz
+ - count
+ - flags
+ - model
+ type: object
+ firmware:
+ description: Firmware describes the firmware on the host.
+ properties:
+ bios:
+ description: The BIOS for this firmware
+ properties:
+ date:
+ description: The release/build date for this BIOS
+ type: string
+ vendor:
+ description: The vendor name for this BIOS
+ type: string
+ version:
+ description: The version of the BIOS
+ type: string
+ required:
+ - date
+ - vendor
+ - version
+ type: object
+ required:
+ - bios
+ type: object
+ hostname:
+ type: string
+ nics:
+ items:
+ description: NIC describes one network interface on the host.
+ properties:
+ ip:
+ description: The IP address of the device
+ type: string
+ mac:
+ description: The device MAC addr
+ pattern: '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'
+ type: string
+ model:
+ description: The name of the model, e.g. "virt-io"
+ type: string
+ name:
+ description: The name of the NIC, e.g. "nic-1"
+ type: string
+ pxe:
+ description: Whether the NIC is PXE Bootable
+ type: boolean
+ speedGbps:
+ description: The speed of the device
+ type: integer
+ vlanId:
+ description: The untagged VLAN ID
+ format: int32
+ type: integer
+ vlans:
+ description: The VLANs available
+ items:
+ description: VLAN represents the name and ID of a VLAN
+ properties:
+ id:
+ description: VLANID is a 12-bit 802.1Q VLAN identifier
+ format: int32
+ type: integer
+ name:
+ type: string
+ required:
+ - id
+ type: object
+ type: array
+ required:
+ - ip
+ - mac
+ - model
+ - name
+ - pxe
+ - speedGbps
+ - vlanId
+ type: object
+ type: array
+ ramMebibytes:
+ type: integer
+ storage:
+ items:
+ description: Storage describes one storage device (disk, SSD,
+ etc.) on the host.
+ properties:
+ hctl:
+ description: The SCSI location of the device
+ type: string
+ model:
+ description: Hardware model
+ type: string
+ name:
+ description: A name for the disk, e.g. "disk 1 (boot)"
+ type: string
+ rotational:
+ description: Whether this disk represents rotational storage
+ type: boolean
+ serialNumber:
+ description: The serial number of the device
+ type: string
+ sizeBytes:
+ description: The size of the disk in Bytes
+ format: int64
+ type: integer
+ vendor:
+ description: The name of the vendor of the device
+ type: string
+ wwn:
+ description: The WWN of the device
+ type: string
+ wwnVendorExtension:
+ description: The WWN Vendor extension of the device
+ type: string
+ wwnWithExtension:
+ description: The WWN with the extension
+ type: string
+ required:
+ - name
+ - rotational
+ - serialNumber
+ - sizeBytes
+ type: object
+ type: array
+ systemVendor:
+ description: HardwareSystemVendor stores details about the whole
+ hardware system.
+ properties:
+ manufacturer:
+ type: string
+ productName:
+ type: string
+ serialNumber:
+ type: string
+ required:
+ - manufacturer
+ - productName
+ - serialNumber
+ type: object
+ required:
+ - cpu
+ - firmware
+ - hostname
+ - nics
+ - ramMebibytes
+ - storage
+ - systemVendor
+ type: object
+ hardwareProfile:
+ description: The name of the profile matching the hardware details.
+ type: string
+ lastUpdated:
+ description: LastUpdated identifies when this status was last observed.
+ format: date-time
+ type: string
+ operationHistory:
+ description: OperationHistory holds information about operations performed
+ on this host.
+ properties:
+ deprovision:
+ description: OperationMetric contains metadata about an operation
+ (inspection, provisioning, etc.) used for tracking metrics.
+ properties:
+ end:
+ format: date-time
+ nullable: true
+ type: string
+ start:
+ format: date-time
+ nullable: true
+ type: string
+ type: object
+ inspect:
+ description: OperationMetric contains metadata about an operation
+ (inspection, provisioning, etc.) used for tracking metrics.
+ properties:
+ end:
+ format: date-time
+ nullable: true
+ type: string
+ start:
+ format: date-time
+ nullable: true
+ type: string
+ type: object
+ provision:
+ description: OperationMetric contains metadata about an operation
+ (inspection, provisioning, etc.) used for tracking metrics.
+ properties:
+ end:
+ format: date-time
+ nullable: true
+ type: string
+ start:
+ format: date-time
+ nullable: true
+ type: string
+ type: object
+ register:
+ description: OperationMetric contains metadata about an operation
+ (inspection, provisioning, etc.) used for tracking metrics.
+ properties:
+ end:
+ format: date-time
+ nullable: true
+ type: string
+ start:
+ format: date-time
+ nullable: true
+ type: string
+ type: object
+ type: object
+ operationalStatus:
+ description: OperationalStatus holds the status of the host
+ enum:
+ - ""
+ - OK
+ - discovered
+ - error
+ type: string
+ poweredOn:
+ description: indicator for whether or not the host is powered on
+ type: boolean
+ provisioning:
+ description: Information tracked by the provisioner.
+ properties:
+ ID:
+ description: The machine's UUID from the underlying provisioning
+ tool
+ type: string
+ image:
+ description: Image holds the details of the last image successfully
+ provisioned to the host.
+ properties:
+ checksum:
+ description: Checksum is the checksum for the image.
+ type: string
+ url:
+ description: URL is a location of an image to deploy.
+ type: string
+ required:
+ - checksum
+ - url
+ type: object
+ state:
+ description: An indiciator for what the provisioner is doing with
+ the host.
+ type: string
+ required:
+ - ID
+ - state
+ type: object
+ triedCredentials:
+ description: the last credentials we sent to the provisioning backend
+ properties:
+ credentials:
+ 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
+ credentialsVersion:
+ type: string
+ type: object
+ required:
+ - errorMessage
+ - hardwareProfile
+ - operationHistory
+ - operationalStatus
+ - poweredOn
+ - provisioning
+ type: object
+ type: object
+ version: v1alpha1
+ versions:
+ - name: v1alpha1
+ served: true
+ storage: true