From: r.kuralamudhan Date: Thu, 14 May 2020 19:47:04 +0000 (-0700) Subject: bug fix for baremetal operator X-Git-Tag: v0.4.0~28 X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=commitdiff_plain;h=359ec3af72e96dae6d31dfaaeff70bfda092be89;p=icn.git bug fix for baremetal operator Fixes the following minor bugs: - Fix the bpa restapi end2end testing - Fix the dhcp start and reset timings - Fix the cleanup scripts for docker Signed-off-by: Kural Ramakrishnan Change-Id: I400b9aa9eb27d81dc4cf591a91253bab59caf49e --- diff --git a/Makefile b/Makefile index d0e5b33..a1bcb25 100644 --- a/Makefile +++ b/Makefile @@ -39,6 +39,12 @@ bmh_clean: bmh_clean_host: pushd $(BMDIR) && ./06_host_cleanup.sh && popd +dhcp_start: + pushd $(BMDIR) && ./03_launch_prereq.sh --dhcp-start && popd + +dhcp_reset: + pushd $(BMDIR) && ./03_launch_prereq.sh --dhcp-reset && popd + clean_packages: pushd $(BOOTLOADER_ENV) && \ ./02_clean_bootloader_package_req.sh --only-packages && popd @@ -138,8 +144,10 @@ prerequisite: bm_verifer: package_prerequisite \ kud_bm_deploy_mini \ bmh_all \ + dhcp_start \ bpa_op_bmh_verifier \ bpa_rest_api_verifier \ + dhcp_reset \ clean_all verify_all: prerequisite \ diff --git a/cmd/bpa-operator/e2etest/test_bmh_provisioning_cr.yaml b/cmd/bpa-operator/e2etest/test_bmh_provisioning_cr.yaml index 4e6f128..bfedde3 100644 --- a/cmd/bpa-operator/e2etest/test_bmh_provisioning_cr.yaml +++ b/cmd/bpa-operator/e2etest/test_bmh_provisioning_cr.yaml @@ -11,6 +11,6 @@ spec: mac-address: 00:1e:67:f8:6a:78 workers: - worker-1: - mac-address: 00:1e:67:f8:69:80 + mac-address: 00:1e:67:f8:6a:58 KUDPlugins: - onap4k8s diff --git a/cmd/bpa-restapi-agent/e2e_test.sh b/cmd/bpa-restapi-agent/e2e_test.sh index b998f40..48c8f30 100755 --- a/cmd/bpa-restapi-agent/e2e_test.sh +++ b/cmd/bpa-restapi-agent/e2e_test.sh @@ -55,7 +55,7 @@ while [[ $cur_status != "Running" ]]; do sleep 10 done -sleep 10 +sleep 30 #Get CLusterIP IP=$(kubectl get services | grep bpa-api-service | awk '{print $3}') diff --git a/deploy/metal3-vm/02_configure_host.sh b/deploy/metal3-vm/02_configure_host.sh index e2d3c77..80ee984 100755 --- a/deploy/metal3-vm/02_configure_host.sh +++ b/deploy/metal3-vm/02_configure_host.sh @@ -145,7 +145,7 @@ if [[ "$MANAGE_BR_BRIDGE" == "y" && $OS == "centos" ]] ; then fi fi -for name in ironic ironic-inspector dnsmasq httpd mariadb ipa-downloader; do +for name in ironic ironic-inspector dnsmasq httpd mariadb ipa-downloader; do sudo "${CONTAINER_RUNTIME}" ps | grep -w "$name$" && sudo "${CONTAINER_RUNTIME}" kill $name sudo "${CONTAINER_RUNTIME}" ps --all | grep -w "$name$" && sudo "${CONTAINER_RUNTIME}" rm $name -f done diff --git a/deploy/metal3/scripts/01_metal3.sh b/deploy/metal3/scripts/01_metal3.sh index b922a90..d631e57 100755 --- a/deploy/metal3/scripts/01_metal3.sh +++ b/deploy/metal3/scripts/01_metal3.sh @@ -93,44 +93,22 @@ function create_userdata { } 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 { diff --git a/deploy/metal3/scripts/bmo/crds/metal3.io_baremetalhosts_crd.yaml b/deploy/metal3/scripts/bmo/crds/metal3.io_baremetalhosts_crd.yaml new file mode 100644 index 0000000..b4d599a --- /dev/null +++ b/deploy/metal3/scripts/bmo/crds/metal3.io_baremetalhosts_crd.yaml @@ -0,0 +1,562 @@ +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 diff --git a/deploy/metal3/scripts/bmo/namespace/namespace.yaml b/deploy/metal3/scripts/bmo/namespace/namespace.yaml new file mode 100644 index 0000000..5dd639a --- /dev/null +++ b/deploy/metal3/scripts/bmo/namespace/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: metal3 diff --git a/deploy/metal3/scripts/bmo/operator/no_ironic/operator.yaml b/deploy/metal3/scripts/bmo/operator/no_ironic/operator.yaml new file mode 100644 index 0000000..706b635 --- /dev/null +++ b/deploy/metal3/scripts/bmo/operator/no_ironic/operator.yaml @@ -0,0 +1,52 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: metal3-baremetal-operator +spec: + replicas: 1 + selector: + matchLabels: + name: metal3-baremetal-operator + template: + metadata: + labels: + name: metal3-baremetal-operator + spec: + serviceAccountName: metal3-baremetal-operator + containers: + - name: baremetal-operator + image: integratedcloudnative/baremetal-operator:v1.0-icn + ports: + - containerPort: 60000 + name: metrics + command: + - /baremetal-operator + imagePullPolicy: Always + env: + - name: WATCH_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: OPERATOR_NAME + value: "baremetal-operator" + - name: DEPLOY_KERNEL_URL + value: "http://172.22.0.1/images/ironic-python-agent.kernel" + - name: DEPLOY_RAMDISK_URL + value: "http://172.22.0.1/images/ironic-python-agent.initramfs" + - name: IRONIC_ENDPOINT + value: "http://localhost:6385/v1/" + - name: IRONIC_INSPECTOR_ENDPOINT + value: "http://localhost:5050/v1/" + # Temporary workaround to talk to an external Ironic process until Ironic is running in this pod. + - name: ironic-proxy + image: alpine/socat + command: ["socat", "tcp-listen:6385,fork,reuseaddr", "tcp-connect:172.22.0.1:6385"] + imagePullPolicy: Always + - name: ironic-inspector-proxy + image: alpine/socat + command: ["socat", "tcp-listen:5050,fork,reuseaddr", "tcp-connect:172.22.0.1:5050"] + imagePullPolicy: Always diff --git a/deploy/metal3/scripts/bmo/rbac/role.yaml b/deploy/metal3/scripts/bmo/rbac/role.yaml new file mode 100644 index 0000000..11c674c --- /dev/null +++ b/deploy/metal3/scripts/bmo/rbac/role.yaml @@ -0,0 +1,62 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + creationTimestamp: null + name: metal3-baremetal-operator +rules: +- apiGroups: + - "" + resources: + - configmaps + verbs: + - list + - get + - create + - update +- apiGroups: + - "" + resources: + - secrets + verbs: + - watch + - list + - update +- apiGroups: + - "" + resources: + - events + verbs: + - create +- apiGroups: + - "" + resources: + - namespaces + verbs: + - get +- apiGroups: + - monitoring.coreos.com + resources: + - servicemonitors + verbs: + - get + - create +- apiGroups: + - metal3.io + resources: + - baremetalhosts + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - metal3.io + resources: + - baremetalhosts/status + verbs: + - get + - patch + - update diff --git a/deploy/metal3/scripts/bmo/rbac/role_binding.yaml b/deploy/metal3/scripts/bmo/rbac/role_binding.yaml new file mode 100644 index 0000000..d34e96c --- /dev/null +++ b/deploy/metal3/scripts/bmo/rbac/role_binding.yaml @@ -0,0 +1,14 @@ +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: metal3-baremetal-operator +subjects: +- kind: ServiceAccount + name: metal3-baremetal-operator + namespace: metal3 +- kind: User + name: developer +roleRef: + kind: ClusterRole + name: metal3-baremetal-operator + apiGroup: rbac.authorization.k8s.io diff --git a/deploy/metal3/scripts/bmo/rbac/service_account.yaml b/deploy/metal3/scripts/bmo/rbac/service_account.yaml new file mode 100644 index 0000000..b5000fe --- /dev/null +++ b/deploy/metal3/scripts/bmo/rbac/service_account.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: metal3-baremetal-operator diff --git a/deploy/metal3/scripts/nodes.json.sample b/deploy/metal3/scripts/nodes.json.sample index c9edd01..3b26917 100644 --- a/deploy/metal3/scripts/nodes.json.sample +++ b/deploy/metal3/scripts/nodes.json.sample @@ -18,7 +18,7 @@ "ipmi_driver_info": { "username": "root", "password": "root", - "address": "10.10.110.13" + "address": "10.10.110.14" }, "os": { "image_name": "bionic-server-cloudimg-amd64.img", diff --git a/env/metal3/01_install_package.sh b/env/metal3/01_install_package.sh index ef82f46..56b65d3 100755 --- a/env/metal3/01_install_package.sh +++ b/env/metal3/01_install_package.sh @@ -32,7 +32,7 @@ function install_essential_packages { add-apt-repository -y ppa:longsleep/golang-backports apt-get update - apt-get install golang-go + apt-get install golang-go -y } function install_ironic_packages { diff --git a/env/metal3/03_launch_prereq.sh b/env/metal3/03_launch_prereq.sh index 3f6fc6e..0d81e5a 100755 --- a/env/metal3/03_launch_prereq.sh +++ b/env/metal3/03_launch_prereq.sh @@ -147,6 +147,13 @@ function install_dhcp { kubectl create -f $PWD/04_dhcp.yaml } +function reset_dhcp { + kubectl delete -f $PWD/04_dhcp.yaml + if [ -d $BS_DHCP_DIR ]; then + rm -rf $BS_DHCP_DIR + fi +} + function create_ironic_env { cat < ${PWD}/ironic.env PROVISIONING_INTERFACE=provisioning @@ -173,7 +180,6 @@ function install { #Todo - error handling mechanism create_ironic_env install_ironic_container - install_dhcp } if [ "$1" == "-o" ]; then @@ -181,4 +187,18 @@ if [ "$1" == "-o" ]; then exit 0 fi +if [ "$1" == "--dhcp-start" ]; then + install_dhcp + echo "wait for 320s for nodes to be assigned" + sleep 6m + exit 0 +fi + +if [ "$1" == "--dhcp-reset" ]; then + reset_dhcp + echo "wait for 320s for nodes to be re-assigned" + sleep 6m + exit 0 +fi + install diff --git a/env/metal3/06_host_cleanup.sh b/env/metal3/06_host_cleanup.sh index 641e31e..4085718 100755 --- a/env/metal3/06_host_cleanup.sh +++ b/env/metal3/06_host_cleanup.sh @@ -16,7 +16,6 @@ brctl delbr provisioning ip link set dhcp0 down brctl delbr dhcp0 -rm -rf ${BS_DHCP_DIR} rm -rf ${IRONIC_DATA_DIR} #Kubeadm usage is deprecated in v1.0.0 diff --git a/env/ubuntu/bootloader-env/02_clean_bootloader_package_req.sh b/env/ubuntu/bootloader-env/02_clean_bootloader_package_req.sh index caea9db..a2130a0 100755 --- a/env/ubuntu/bootloader-env/02_clean_bootloader_package_req.sh +++ b/env/ubuntu/bootloader-env/02_clean_bootloader_package_req.sh @@ -53,19 +53,15 @@ function clean_docker_packages { $(lsb_release -cs) \ stable" apt-get update + docker rmi -f $(docker image ls -a -q) apt-get remove docker-ce -y - #for package in apt-transport-https ca-certificates gnupg-agent \ - # software-properties-common; do - # apt-get remove $package -y - #done - apt-get remove -y docker \ docker-engine \ docker.io \ containerd \ runc \ docker-ce - + apt-get purge docker-* -y --allow-change-held-packages apt-get update } @@ -146,7 +142,7 @@ function clean_dir { if [ "$1" == "--only-packages" ]; then check_prerequisite - clean_docker_packages + clean_docker_packages || true #clean_ironic_packages autoremove exit 0