Bug 1490768
Summary: | Failed to provision cinder volume, got http response code 300 | ||
---|---|---|---|
Product: | OpenShift Container Platform | Reporter: | Jianwei Hou <jhou> |
Component: | Storage | Assignee: | Pavel Pospisil <ppospisi> |
Status: | CLOSED ERRATA | QA Contact: | Jianwei Hou <jhou> |
Severity: | high | Docs Contact: | |
Priority: | high | ||
Version: | 3.7.0 | CC: | aos-bugs, aos-storage-staff, asimonel, bchilds, hchen, jhou, jokerman, lxia, mmccomas, ppospisi, xtian |
Target Milestone: | --- | ||
Target Release: | 3.7.0 | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: |
Cause: Gophercloud library used by OpenShift to communicate with OpenStack API does not accept HTTP status 300 in pagination.
Consequence: It is not possible to dynamically provision Cinder persistent volumes. Error "Error creating cinder volume: Expected HTTP response code [200 204] when accessing [GET https://ci-rhos.centralci.eng.rdu2.redhat.com:13776/], but got 300 instead" is reported.
Fix: Gophercloud library accepts HTTP status 300 in pagination.
Result: It is possible to dynamically provision Cinder persistent volumes.
|
Story Points: | --- |
Clone Of: | Environment: | ||
Last Closed: | 2017-11-28 22:10:32 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Jianwei Hou
2017-09-12 08:20:14 UTC
I assume that the OpenShift cloud.conf file has Cinder version automatic detection configured. Such configuration looks like: [BlockStorage] bs-version = auto Please, can you confirm this? There's a workaround for this bug: configure in cloud.conf a specific Cinder version, e.g. V2: [BlockStorage] bs-version = v2 IMO, the problem is that in case OpenShift is configured to auto-detect Cider version it uses Cinder V1 to query for available Cinder versions, however, as the Cinder V1 is deprecated in the used OpenStack cluster the autodetection fails. @ppospisi Thank you, that fixed the problem! I'll transfer its component to docs to have this configuration item documented. Sorry move back to storage to decide if we want to fix it first. I looked into the issue again an found out that the issue is fixed in gophercloud library [1] and in Kubernetes [2] for K8s 1.8 release. So upgrading the gophercloud library to commit [3] in OpenShift vendor directory should fix the problem. [1] https://github.com/gophercloud/gophercloud/pull/383 [2] https://github.com/kubernetes/kubernetes/pull/47602 [3] https://github.com/gophercloud/gophercloud/commit/ed590d9afe113c6107cd60717b196155e6579e78 I backported the gophercloud library fix [1] and created PR [2]. [1] https://github.com/gophercloud/gophercloud/pull/383 [2] https://github.com/openshift/origin/pull/16321 The PR https://github.com/openshift/origin/pull/16321 was merged. Verified this is fixed in 3.7.0-0.127. Cinder volume provisioned successfully without the additional config from comment 1. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2017:3188 I just hit this on a brand new OCP 3.7 plus OSP 12. Did this with advanced install so not sure where to update cloud.conf with bs-version=v2 as i installed with openshift-ansible pointing at an inventory file. Can I add bs-version=v2 to the inventory at install time? Does it go under a subsection? [BlockStorage] ? Please refer to this doc [1]. Add to cloud.conf with the following: [BlockStorage] bs-version = v2 1. https://docs.openshift.com/container-platform/3.6/install_config/configuring_openstack.html#configuring-openstack-variables With an advanced install of OCP 3.7 there is no cloud.conf. So you need this: https://github.com/openshift/openshift-ansible/pull/6611/files Basically you need to set the ansible variable: openshift_cloudprovider_openstack_blockstorage_version but it won't work without a change to the jinja2 template as well roles/openshift_cloud_provider/templates/openstack.conf.j2 See link. Also the link you shared doesn't mention the value required, so could be confusing. |