Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OCPBUGS-10884: add multipath support for volume discovery #394

Merged
merged 8 commits into from May 9, 2023

Conversation

RomanBednar
Copy link
Contributor

@RomanBednar RomanBednar commented Apr 14, 2023

Adds multipath devices to discovery result.

Unrelated to discovery: we should expose multipath in console to improve user experience when creating LocalVolumeSet with multipath: openshift/console#12723

cc @openshift/storage

@openshift-ci-robot openshift-ci-robot added jira/severity-important Referenced Jira bug's severity is important for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Apr 14, 2023
@openshift-ci-robot
Copy link
Contributor

@RomanBednar: This pull request references Jira Issue OCPBUGS-10884, which is invalid:

  • expected the bug to target the "4.14.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

In response to this:

Old code assumed that all devices are under /dev which is wrong for multipath. There are two places where we fix the assumptions:

  1. When searching for block devices with ListBlockDevices(), the function tries to look up a filesystem type (if any) by device path in output of blkid. Any assumptions about device path are fragile and would require much broader code refactoring to fix it properly. But for fixing multipath, we can simply add one more assumption and try to look up devices under /dev/mapper also.

  2. When constructing DiscoveredDevice type with getDiscoverdDevices() we can do a symlink evaluation instead of assumptions. Similar to how GetPathByID() evaluates symlinks under /dev/disk/by-idwe can evaluate symlinks under /dev/mapper. For this purpose, GetDMPath() is added.

Unrelated to discovery: we should expose multipath in console to improve user experience when creating LocalVolumeSet with multipath: openshift/console#12723

cc @openshift/storage

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@openshift-ci-robot
Copy link
Contributor

@RomanBednar: This pull request references Jira Issue OCPBUGS-10884, which is invalid:

  • expected the bug to target the "4.14.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

In response to this:

/jira refresh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@openshift-ci-robot
Copy link
Contributor

@RomanBednar: This pull request references Jira Issue OCPBUGS-10884, which is invalid:

  • expected the bug to target the "4.14.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

In response to this:

/jira refresh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@RomanBednar
Copy link
Contributor Author

Here are my results from manual verification:

Multipath configuration on worker node:

sh-4.4# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
loop0         7:0    0   9.8G  0 loop
sda           8:0    0   9.8G  0 disk
`-mpatha    253:0    0   9.8G  0 mpath
sdb           8:16   0   9.8G  0 disk
`-mpatha    253:0    0   9.8G  0 mpath
nvme0n1     259:0    0   120G  0 disk
|-nvme0n1p1 259:1    0     1M  0 part
|-nvme0n1p2 259:2    0   127M  0 part
|-nvme0n1p3 259:3    0   384M  0 part  /boot
`-nvme0n1p4 259:4    0 119.5G  0 part  /sysroot

sh-4.4# multipath -ll
mpatha (333333330000007d1) dm-0 Linux,scsi_debug
size=9.8G features='0' hwhandler='1 alua' wp=rw
`-+- policy='service-time 0' prio=30 status=active
  |- 0:0:0:1 sda 8:0  active ready running
  `- 1:0:0:1 sdb 8:16 active ready running

Create LocalVolumeDiscovery in web console and check discovery result:

$ oc -n openshift-local-storage get localvolumediscoveryresults.local.storage.openshift.io/discovery-result-ip-10-0-139-122.ec2.internal -o yaml
apiVersion: local.storage.openshift.io/v1alpha1
kind: LocalVolumeDiscoveryResult
metadata:
  creationTimestamp: "2023-04-13T09:33:35Z"
  generation: 1
  labels:
    discovery-result-node: ip-10-0-139-122.ec2.internal
  name: discovery-result-ip-10-0-139-122.ec2.internal
  namespace: openshift-local-storage
  ownerReferences:
  - apiVersion: local.storage.openshift.io/v1alpha1
    kind: LocalVolumeDiscovery
    name: auto-discover-devices
    uid: 17b0f375-0618-46f7-ac04-09cf62a8370d
  resourceVersion: "100723"
  uid: 0e2fe533-0f98-40de-b4a4-9a68eeef7931
spec:
  nodeName: ip-10-0-139-122.ec2.internal
status:
  discoveredDevices:
  - deviceID: ""
    fstype: ""
    model: scsi_debug
    path: /dev/sda
    property: NonRotational
    serial: "2001"
    size: 10485760000
    status:
      state: NotAvailable
    type: disk
    vendor: Linux
  - deviceID: /dev/disk/by-id/dm-name-mpatha
    fstype: ""
    model: ""
    path: /dev/mapper/mpatha
    property: NonRotational
    serial: ""
    size: 10485760000
    status:
      state: NotAvailable
    type: mpath
    vendor: ""
  - deviceID: ""
    fstype: ""
    model: scsi_debug
    path: /dev/sdb
    property: NonRotational
    serial: "2001"
    size: 10485760000
    status:
      state: NotAvailable
    type: disk
    vendor: Linux
  - deviceID: /dev/disk/by-id/dm-name-mpatha
    fstype: ""
    model: ""
    path: /dev/mapper/mpatha
    property: NonRotational
    serial: ""
    size: 10485760000
    status:
      state: NotAvailable
    type: mpath
    vendor: ""
  - deviceID: /dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol03086c02c6249335e-part1
    fstype: ""
    model: ""
    path: /dev/nvme0n1p1
    property: NonRotational
    serial: ""
    size: 1048576
    status:
      state: NotAvailable
    type: part
    vendor: ""
  - deviceID: /dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol03086c02c6249335e-part2
    fstype: vfat
    model: ""
    path: /dev/nvme0n1p2
    property: NonRotational
    serial: ""
    size: 133169152
    status:
      state: NotAvailable
    type: part
    vendor: ""
  - deviceID: /dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol03086c02c6249335e-part3
    fstype: ext4
    model: ""
    path: /dev/nvme0n1p3
    property: NonRotational
    serial: ""
    size: 402653184
    status:
      state: NotAvailable
    type: part
    vendor: ""
  - deviceID: /dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol03086c02c6249335e-part4
    fstype: xfs
    model: ""
    path: /dev/nvme0n1p4
    property: NonRotational
    serial: ""
    size: 128311082496
    status:
      state: NotAvailable
    type: part
    vendor: ""
  discoveredTimeStamp: "2023-04-13T11:48:54Z"

Create LocalVolumeSet in web console and verify:

$ oc -n openshift-local-storage get lvset/lvset -o yaml
apiVersion: local.storage.openshift.io/v1alpha1
kind: LocalVolumeSet
metadata:
  creationTimestamp: "2023-04-13T11:19:35Z"
  finalizers:
  - storage.openshift.com/local-volume-protection
  generation: 2
  name: lvset
  namespace: openshift-local-storage
  resourceVersion: "90708"
  uid: b542bc4e-47b7-45c8-b13e-4df607bc0bf7
spec:
  deviceInclusionSpec:
    deviceTypes:
    - mpath
    minSize: 1Gi
  nodeSelector:
    nodeSelectorTerms:
    - matchExpressions:
      - key: kubernetes.io/hostname
        operator: In
        values:
        - ip-10-0-139-122.ec2.internal
  storageClassName: lvset
  volumeMode: Block
status:
  conditions:
  - lastTransitionTime: "2023-04-13T11:19:35Z"
    message: 'DiskMaker: Available'
    status: "True"
    type: DaemonSetsAvailable
  - lastTransitionTime: "2023-04-13T11:19:35Z"
    message: Operator reconciled successfully.
    status: "True"
    type: Available
  observedGeneration: 2
  totalProvisionedDeviceCount: 1

Create a PVC:

$ oc get pvc/pvc-1 -o yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
    pv.kubernetes.io/bind-completed: "yes"
    pv.kubernetes.io/bound-by-controller: "yes"
  creationTimestamp: "2023-04-13T11:22:52Z"
  finalizers:
  - kubernetes.io/pvc-protection
  name: pvc-1
  namespace: default
  resourceVersion: "91482"
  uid: 0ab38e6b-9e31-4188-aacb-ec030240df3a
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: lvset
  volumeMode: Block
  volumeName: local-pv-d260fe11
status:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 10000Mi
  phase: Bound

Schedule a Pod:

apiVersion: v1  
kind: Pod  
metadata:  
  name: example  
  labels:  
    app: httpd  
  namespace: default  
spec:  
  volumes:  
    - name: task-pv-storage  
      persistentVolumeClaim:  
        claimName: pvc-1  
  securityContext:  
    runAsNonRoot: true  
    seccompProfile:  
      type: RuntimeDefault  
  containers:  
    - name: httpd  
      image: 'image-registry.openshift-image-registry.svc:5000/openshift/httpd:latest'  
      ports:  
        - containerPort: 8080  
      volumeDevices:  
        - devicePath: /dev/block  
          name: task-pv-storage  
      securityContext:  
        allowPrivilegeEscalation: false  
        capabilities:  
          drop:  
            - ALL

Check pv, pvc and pod status:

$ oc get pvc/pvc-1 -o json | jq '.spec.storageClassName'
"lvset"

$ oc get pvc/pvc-1 -o json | jq '.spec.volumeName'
"local-pv-d260fe11"

$ oc get pod/example -o json | jq '.spec.volumes[0].persistentVolumeClaim.claimName'
"pvc-1"

$ oc get pod/example -o json | jq '.status.phase'
"Running"

Cross check block device on worker node with crio:

sh-4.4# crictl exec 4bc58ee52214c ls -la /dev/block
brw-rw-rw-. 1 root disk 253, 0 Apr 12 11:46 /dev/block

Inspect PersistentVolume and verify volume path:

$ oc get pv/local-pv-d260fe11 -o yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  annotations:
    pv.kubernetes.io/bound-by-controller: "yes"
    pv.kubernetes.io/provisioned-by: local-volume-provisioner-ip-10-0-139-122.ec2.internal
    storage.openshift.com/device-id: dm-name-mpatha
    storage.openshift.com/device-name: dm-0
  creationTimestamp: "2023-04-13T11:20:44Z"
  finalizers:
  - kubernetes.io/pv-protection
  labels:
    kubernetes.io/hostname: ip-10-0-139-122.ec2.internal
    storage.openshift.com/owner-kind: LocalVolumeSet
    storage.openshift.com/owner-name: lvset
    storage.openshift.com/owner-namespace: openshift-local-storage
  name: local-pv-d260fe11
  resourceVersion: "91480"
  uid: 4fd12d94-4530-481b-9a40-fc2adf438660
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 10000Mi
  claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: pvc-1
    namespace: default
    resourceVersion: "91478"
    uid: 0ab38e6b-9e31-4188-aacb-ec030240df3a
  local:
    path: /mnt/local-storage/lvset/dm-name-mpatha
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - ip-10-0-139-122.ec2.internal
  persistentVolumeReclaimPolicy: Delete
  storageClassName: lvset
  volumeMode: Block
status:
  phase: Bound

discoveredDevice := v1alpha1.DiscoveredDevice{
Path: fmt.Sprintf("/dev/%s", blockDevice.Name),
Path: path,
Copy link
Member

@gnufied gnufied Apr 14, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we just get away by changing this line to:

Path: fmt.Sprintf("/dev/%s", blockDevice.KName)

I am not sure why we need device mapper path from /dev/mapper for any of the stuff, except place where we are determining filesystem.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gnufied well, we probably don't want to report invalid path in discovery result. That's the only reason I believe. Without the patch you'll get /dev/mpath or something like that - such path will never exist for multipath.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, I meant if you used KName here, it will point to a valid device. Output of lsblk with KNAME always points to a valid device. Having said that, there are pros and cons of both the approaches:

Pro of using KName here is - we can use single device mechanism for every device type.

Pro of using mpath name is, users can easily tell system has selected an mpath device. But then how we show different devices becomes inconsistent. I also think that, mpath device names btw changes between reboots (so can KName to be fair), so in the end all of the code must use dev/disk/by-id path anyways. But symlink in /dev/disk/by-id always points to KName device in /dev/<kname> location.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, I meant if you used KName here, it will point to a valid device. Output of lsblk with KNAME always points to a valid device. Having said that, there are pros and cons of both the approaches:

Ah, I see. I misread that and though you're suggesting to use what the original code was using, so blockDevice.Name for the path.

Those are valid points, the reason I went with /dev/mapper was that the original code used Name instead of KName and I assumed we'd like to keep this naming - volume discovery result looked like this:

  - deviceID: /dev/disk/by-id/dm-name-mpatha
    fstype: ""
    model: ""
    path: /dev/mpatha

Pro of using KName here is - we can use single device mechanism for every device type.

Pro of using mpath name is, users can easily tell system has selected an mpath device. But then how we show different devices becomes inconsistent. I also think that, mpath device names btw changes between reboots (so can KName to be fair), so in the end all of the code must use dev/disk/by-id path anyways. But symlink in /dev/disk/by-id always points to KName device in /dev/<kname> location.

Not sure what you mean by "single device mechanism" but I assume it's the way we parse device paths in the code. So with KName approach the advantage would be simpler code for sure.

As for the inconsistency in showing the devices: without further refactoring the discovery is not optimal, regardless of which approach of showing path we choose. See the LocalVolumeDiscoveryResult I've posted above - we show all underlying devices of mpath (type: disk) along with multipath device (type: mpath) which is duplicated for every underlying device. Ideally it should show only one mpath? That means adding code that will reliably verify what mpath devices lead to exactly - wondering if it's even worth dealing with.

@openshift-merge-robot openshift-merge-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Apr 26, 2023
@openshift-merge-robot openshift-merge-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Apr 27, 2023
@openshift-ci-robot
Copy link
Contributor

@RomanBednar: This pull request references Jira Issue OCPBUGS-10884, which is invalid:

  • expected the bug to target the "4.14.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

In response to this:

Adds multipath devices to discovery result.

Unrelated to discovery: we should expose multipath in console to improve user experience when creating LocalVolumeSet with multipath: openshift/console#12723

cc @openshift/storage

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@RomanBednar
Copy link
Contributor Author

@gnufied I've updated to code to prevent duplicates in the discovery result and use kname path instead. See the current version is ok. We're expected to backport this to 4.12, I'll clone the Jiras and do the backports once we have a lgtm here.

One thing to note is that the duplicates are now resolved by removing duplicate device IDs, while this works fine it would make much more sense to use lsblk -M once this flag becomes available in our base images.

I've tested the patch again, the discovery result now contains only one device mapper device using KNAME (/dev/dm-0).

$ oc -n openshift-local-storage get localvolumediscoveryresults.local.storage.openshift.io/discovery-result-ip-10-0-154-173.ec2.internal -o yaml
apiVersion: local.storage.openshift.io/v1alpha1
kind: LocalVolumeDiscoveryResult
metadata:
  creationTimestamp: "2023-04-27T13:20:31Z"
  generation: 1
  labels:
    discovery-result-node: ip-10-0-154-173.ec2.internal
  name: discovery-result-ip-10-0-154-173.ec2.internal
  namespace: openshift-local-storage
  ownerReferences:
  - apiVersion: local.storage.openshift.io/v1alpha1
    kind: LocalVolumeDiscovery
    name: auto-discover-devices
    uid: 8540b196-4c2d-46ea-a364-cb61a6a5adb5
  resourceVersion: "110630"
  uid: 36b8b9f8-a84b-484d-b5a4-7f1a14aef35b
spec:
  nodeName: ip-10-0-154-173.ec2.internal
status:
  discoveredDevices:
  - deviceID: /dev/disk/by-id/scsi-1Linux_scsi_debug_2001
    fstype: ""
    model: scsi_debug
    path: /dev/sda
    property: NonRotational
    serial: "2001"
    size: 10485760000
    status:
      state: NotAvailable
    type: disk
    vendor: Linux
  - deviceID: /dev/disk/by-id/dm-name-mpatha
    fstype: ""
    model: ""
    path: /dev/dm-0
    property: NonRotational
    serial: ""
    size: 10485760000
    status:
      state: Available
    type: mpath
    vendor: ""
  - deviceID: ""
    fstype: ""
    model: scsi_debug
    path: /dev/sdb
    property: NonRotational
    serial: "2001"
    size: 10485760000
    status:
      state: NotAvailable
    type: disk
    vendor: Linux
  - deviceID: /dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol0e04d020ab89fcce2-part1
    fstype: ""
    model: ""
    path: /dev/nvme0n1p1
    property: NonRotational
    serial: ""
    size: 1048576
    status:
      state: NotAvailable
    type: part
    vendor: ""
  - deviceID: /dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol0e04d020ab89fcce2-part2
    fstype: vfat
    model: ""
    path: /dev/nvme0n1p2
    property: NonRotational
    serial: ""
    size: 133169152
    status:
      state: NotAvailable
    type: part
    vendor: ""
  - deviceID: /dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol0e04d020ab89fcce2-part3
    fstype: ext4
    model: ""
    path: /dev/nvme0n1p3
    property: NonRotational
    serial: ""
    size: 402653184
    status:
      state: NotAvailable
    type: part
    vendor: ""
  - deviceID: /dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol0e04d020ab89fcce2-part4
    fstype: xfs
    model: ""
    path: /dev/nvme0n1p4
    property: NonRotational
    serial: ""
    size: 128311082496
    status:
      state: NotAvailable
    type: part
    vendor: ""
  discoveredTimeStamp: "2023-04-27T13:20:32Z"

@RomanBednar
Copy link
Contributor Author

/assign @gnufied

for _, v := range sample {
k := key{v.DeviceID}
if i, ok := m[k]; ok {
unique[i] = v
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: why did we make a key and type for it? Couldn't we have just used DeviceId via something like map[string]int ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But another thing is - deviceID may not be available always. Could we not have used v.path for uniqueness?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: why did we make a key and type for it? Couldn't we have just used DeviceId via something like map[string]int ?

Sure, but if we would need more criteria for uniqueness instead of just one string using custom type would allow that, like this:

...
	type key struct{ value string; value2 string }
	m := make(map[key]int)
	for _, v := range sample {
		k := key{v.DeviceID, v.Path}
...

But another thing is - deviceID may not be available always. Could we not have used v.path for uniqueness?

Correct, deviceID can be set to "" - I missed that. That's even worse with this unique filter because that would hide all devices (except one) that have deviceID set to "". I think it makes sense to use what I described above and let uniqueDevices() use both v.Path and v.DeviceID?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should work.

Commands executed use CombinedOutput() which returns stdout and stderr
in one output value. In order to efficiently debug failed commands
we must preserve the output and log it if the command fails. Otherwise
we get useless messages/events like this:

failed to discover devices. Error: exit status 1 failed to list all the block devices in the node. github.com/openshift/local-storage-operator/diskmaker/discovery.getValidBlockDevices /go/src/github.com/openshift/local-storage-operator/diskmaker/discovery/discovery.go:153
We can eliminate duplicates in discovery result by:

1) adding -M flag to lsblk
2) filtering out devices so we get unique device by-id paths only

Option 1 is not available in current base image because it's using
old version of lsblk which does not have -M flag.
@openshift-ci
Copy link
Contributor

openshift-ci bot commented May 4, 2023

@RomanBednar: all tests passed!

Full PR test history. Your PR dashboard.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@RomanBednar
Copy link
Contributor Author

/jira refresh

@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. bugzilla/valid-bug Indicates that a referenced Bugzilla bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels May 9, 2023
@openshift-ci-robot
Copy link
Contributor

@RomanBednar: This pull request references Jira Issue OCPBUGS-10884, which is valid. The bug has been moved to the POST state.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.14.0) matches configured target version for branch (4.14.0)
  • bug is in the state ASSIGNED, which is one of the valid states (NEW, ASSIGNED, POST)

No GitHub users were found matching the public email listed for the QA contact in Jira (wduan@redhat.com), skipping review request.

In response to this:

/jira refresh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@RomanBednar
Copy link
Contributor Author

/cherry-pick release-4.13

@openshift-cherrypick-robot

@RomanBednar: once the present PR merges, I will cherry-pick it on top of release-4.13 in a new PR and assign it to you.

In response to this:

/cherry-pick release-4.13

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@RomanBednar
Copy link
Contributor Author

/cherry-pick release-4.12

@openshift-cherrypick-robot

@RomanBednar: once the present PR merges, I will cherry-pick it on top of release-4.12 in a new PR and assign it to you.

In response to this:

/cherry-pick release-4.12

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@gnufied
Copy link
Member

gnufied commented May 9, 2023

/lgtm
/approve

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label May 9, 2023
@openshift-ci
Copy link
Contributor

openshift-ci bot commented May 9, 2023

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: gnufied, RomanBednar

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label May 9, 2023
@openshift-merge-robot openshift-merge-robot merged commit 1a1d24a into openshift:master May 9, 2023
5 checks passed
@openshift-ci-robot
Copy link
Contributor

@RomanBednar: Jira Issue OCPBUGS-10884: Some pull requests linked via external trackers have merged:

The following pull requests linked via external trackers have not merged:

These pull request must merge or be unlinked from the Jira bug in order for it to move to the next state. Once unlinked, request a bug refresh with /jira refresh.

Jira Issue OCPBUGS-10884 has not been moved to the MODIFIED state.

In response to this:

Adds multipath devices to discovery result.

Unrelated to discovery: we should expose multipath in console to improve user experience when creating LocalVolumeSet with multipath: openshift/console#12723

cc @openshift/storage

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@openshift-cherrypick-robot

@RomanBednar: #394 failed to apply on top of branch "release-4.12":

Applying: do not drop output when command fails
Using index info to reconstruct a base tree...
M	diskmaker/discovery/discovery.go
M	internal/diskutil.go
Falling back to patching base and 3-way merge...
Auto-merging internal/diskutil.go
Auto-merging diskmaker/discovery/discovery.go
CONFLICT (content): Merge conflict in diskmaker/discovery/discovery.go
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 do not drop output when command fails
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

In response to this:

/cherry-pick release-4.12

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@openshift-cherrypick-robot

@RomanBednar: new pull request created: #407

In response to this:

/cherry-pick release-4.13

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. bugzilla/valid-bug Indicates that a referenced Bugzilla bug is valid for the branch this PR is targeting. jira/severity-important Referenced Jira bug's severity is important for the branch this PR is targeting. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants