Bug 1836042

Summary: [vsphere] folder in cloud-provider-config should be set as absolute path when customizing folder in install-config.yaml
Product: OpenShift Container Platform Reporter: jima
Component: InstallerAssignee: Patrick Dillon <padillon>
Installer sub component: openshift-installer QA Contact: jima
Status: CLOSED ERRATA Docs Contact:
Severity: medium    
Priority: medium CC: bleanhar, krapohl, padillon
Version: 4.5   
Target Milestone: ---   
Target Release: 4.5.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Cause: the folder value in the cloud-provider-config manifest was set to the relative path Consequence: when a cluster was installed to a nested subfolder, volume provisioning would fail with "folder not found" Fix: change the folder in the cloud provider config to the absolute path Result: volumes can be successfully provisioned
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-07-13 17:39:12 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 jima 2020-05-15 02:19:49 UTC
Description of problem:
After set "folder" option with one existing absolute path(which has already been created on vsphere server) in install-config and launch installation,"folder" in cloud-provider-config is set as relative path, it will let pvc creation failed with error of "Failed to provision volume with StorageClass "thin": folder 'jima/jima-upi' not found"

In install-config.yaml:
...
platform:
  vsphere:
    datacenter: dc1
    network: VM Network
    defaultDatastore: 10TB-GOLD
    password: 'xxxxxx'
    username: Administrator
    vCenter: vcsa2-qe.vmware.devcluster.openshift.com
    folder: /dc1/vm/jima/jima-upi
    cluster: devel
...

In cloud-provider-config:
# ../oc describe cm cloud-provider-config -n openshift-config
Name:         cloud-provider-config
Namespace:    openshift-config
Labels:       <none>
Annotations:  <none>
Data
====
config:
----
[Global]
secret-name = "vsphere-creds"
secret-namespace = "kube-system"
insecure-flag = "1"
[Workspace]
server = "vcsa-qe.vmware.devcluster.openshift.com"
datacenter = "dc1"
default-datastore = "nvme-ds1"
folder = "jima/jima-upi"
[VirtualCenter "vcsa-qe.vmware.devcluster.openshift.com"]
datacenters = "dc1"

When trying to create pvc, error is reported:
# oc describe pvc mypvc01
Name:          mypvc01
Namespace:     default
StorageClass:  thin
Status:        Pending
Volume:        
Labels:        <none>
Annotations:   volume.beta.kubernetes.io/storage-provisioner=kubernetes.io/vsphere-volume
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      
Access Modes:  
VolumeMode:    Filesystem
Events:
  Type     Reason              Age                            From                         Message
  ----     ------              ----                           ----                         -------
  Warning  ProvisioningFailed  <invalid> (x3 over <invalid>)  persistentvolume-controller  Failed to provision volume with StorageClass "thin": folder 'jima/jima-upi' not found


Version-Release number of the following components:
rpm -q openshift-ansible
rpm -q ansible
ansible --version

How reproducible:
Always

Steps to Reproduce:
1. Set "folder" in install-config.yaml with existing absolute path
2. install cluster
3. 

Actual results:
folder in cloud-provider-config is relative path

Expected results:
folder in cloud-provider-config should be set as absolute path

Additional info:

Comment 3 jima 2020-05-25 02:59:01 UTC
Issues has been verified with 4.5 nightly build: 4.5.0-0.nightly-2020-05-23-193013 on both upi and ipi installation.

folder in cm cloud-provider-config is set to absolute path.

$ oc describe cm cloud-provider-config -n openshift-config
Name:         cloud-provider-config
Namespace:    openshift-config
Labels:       <none>
Annotations:  <none>

Data
====
config:
----
[Global]
secret-name = "vsphere-creds"
secret-namespace = "kube-system"
insecure-flag = "1"

[Workspace]
server = "vcsa-qe.vmware.devcluster.openshift.com"
datacenter = "dc1"
default-datastore = "nvme-ds1"
folder = "/dc1/vm/test/jimaupi"

[VirtualCenter "vcsa-qe.vmware.devcluster.openshift.com"]
datacenters = "dc1"

Events:  <none>

Comment 4 krapohl 2020-06-03 19:11:22 UTC
Is there a fix going to be implemented that allows the folder value to not be absolute? This is the way it worked previously?

If it must from now on always be the absolute path then there is a fix needed to be put in the code that translates what is put in the install-config.yaml that automatically generates the cloud-provider-config data so it generates the absolute path for the folder parm.

Comment 5 errata-xmlrpc 2020-07-13 17:39:12 UTC
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/RHBA-2020:2409

Comment 6 Patrick Dillon 2020-07-15 12:06:42 UTC
> Is there a fix going to be implemented that allows the folder value to not be absolute? This is the way it worked previously?

It didn't really work previously, hence this bug... I think it would help me answer your questions if I understood the concern. Is this causing an issue? breaking some sort of workflow?

> If it must from now on always be the absolute path then there is a fix needed to be put in the code that translates what is put in the install-config.yaml that automatically generates the cloud-provider-config data so it generates the absolute path for the folder parm.

This commit shows the approach for validating folder path in the install config:

https://github.com/openshift/installer/commit/e93985366d224d023574e0359833c44162a2bdb5#diff-9cc79a09db6f5387dec9d985adf489f3R80-R95