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

Use WCP FSS configmap in CSI driver for features dependent on WCP service #2780

Merged

Conversation

shalini-b
Copy link
Collaborator

@shalini-b shalini-b commented Jan 30, 2024

What this PR does / why we need it: Use WCP FSS instead of CSI specific FSS when a CSI feature has dependency on WCP services.

Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #

Testing done:
Tested CreateVolume & DeleteVolume in stretched supervisor after removing FSS from csi-feature-states configmap:

{"level":"info","time":"2024-01-31T22:26:16.003851953Z","caller":"wcp/controller.go:905","msg":"CreateVolume: called with args {Name:pvc-04ddb25e-72c9-4b46-8fb2-27720f09b30f CapacityRange:required_bytes:104857600  VolumeCapabilities:[mount:<fs_type:\"ext4\" > access_mode:<mode:SINGLE_NODE_WRITER > ] Parameters:map[StorageTopologyType:Zonal csi.storage.k8s.io/pv/name:pvc-04ddb25e-72c9-4b46-8fb2-27720f09b30f csi.storage.k8s.io/pvc/name:pvc1 csi.storage.k8s.io/pvc/namespace:shalini-ns csi.storage.k8s.io/sc/name:zonal-policy storagePolicyID:92b1f1d7-fd8b-4aec-aa6f-651d79dfa533] Secrets:map[] VolumeContentSource:<nil> AccessibilityRequirements:requisite:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-2\" > > requisite:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-1\" > > requisite:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-3\" > > preferred:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-1\" > > preferred:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-2\" > > preferred:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-3\" > >  MutableParameters:map[] XXX_NoUnkeyedLiteral:{} XXX_unrecognized:[] XXX_sizecache:0}","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:16.009240446Z","caller":"wcp/controller.go:487","msg":"Topology aware environment detected with requirement: requisite:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-2\" > > requisite:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-1\" > > requisite:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-3\" > > preferred:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-1\" > > preferred:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-2\" > > preferred:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-3\" > > ","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:16.010312361Z","caller":"k8sorchestrator/topology.go:1602","msg":"Clusters matching topology requirement map[topology.kubernetes.io/zone:zone-1] are [domain-c92]","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:16.105947896Z","caller":"vsphere/utils.go:454","msg":"Found shared datastores: [Datastore: Datastore:datastore-89, datastore URL: ds:///vmfs/volumes/65b7ed9e-63370c58-dacc-0200ab0eecc9/] and vSAN Direct datastores: []","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:16.106569113Z","caller":"k8sorchestrator/topology.go:1602","msg":"Clusters matching topology requirement map[topology.kubernetes.io/zone:zone-2] are [domain-c101]","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:16.192915235Z","caller":"vsphere/utils.go:454","msg":"Found shared datastores: [Datastore: Datastore:datastore-154, datastore URL: ds:///vmfs/volumes/3e22e60a-2de98570-0000-000000000000/ Datastore: Datastore:datastore-89, datastore URL: ds:///vmfs/volumes/65b7ed9e-63370c58-dacc-0200ab0eecc9/] and vSAN Direct datastores: []","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:16.193257196Z","caller":"k8sorchestrator/topology.go:1602","msg":"Clusters matching topology requirement map[topology.kubernetes.io/zone:zone-3] are [domain-c109]","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:16.265268241Z","caller":"vsphere/utils.go:454","msg":"Found shared datastores: [Datastore: Datastore:datastore-89, datastore URL: ds:///vmfs/volumes/65b7ed9e-63370c58-dacc-0200ab0eecc9/] and vSAN Direct datastores: []","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:16.266440011Z","caller":"k8sorchestrator/topology.go:1574","msg":"Shared datastores [Datastore: Datastore:datastore-89, datastore URL: ds:///vmfs/volumes/65b7ed9e-63370c58-dacc-0200ab0eecc9/ Datastore: Datastore:datastore-154, datastore URL: ds:///vmfs/volumes/3e22e60a-2de98570-0000-000000000000/ Datastore: Datastore:datastore-89, datastore URL: ds:///vmfs/volumes/65b7ed9e-63370c58-dacc-0200ab0eecc9/ Datastore: Datastore:datastore-89, datastore URL: ds:///vmfs/volumes/65b7ed9e-63370c58-dacc-0200ab0eecc9/] for topologyRequirement: requisite:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-2\" > > requisite:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-1\" > > requisite:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-3\" > > preferred:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-1\" > > preferred:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-2\" > > preferred:<segments:<key:\"topology.kubernetes.io/zone\" value:\"zone-3\" > > ","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:16.270108022Z","caller":"vsphere/utils.go:590","msg":"Filtered list of datastores after removing suspended ones are: [Datastore: Datastore:datastore-89, datastore URL: ds:///vmfs/volumes/65b7ed9e-63370c58-dacc-0200ab0eecc9/ Datastore: Datastore:datastore-154, datastore URL: ds:///vmfs/volumes/3e22e60a-2de98570-0000-000000000000/ Datastore: Datastore:datastore-89, datastore URL: ds:///vmfs/volumes/65b7ed9e-63370c58-dacc-0200ab0eecc9/ Datastore: Datastore:datastore-89, datastore URL: ds:///vmfs/volumes/65b7ed9e-63370c58-dacc-0200ab0eecc9/]","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:17.028163941Z","caller":"volume/manager.go:534","msg":"QuotaInfo during CreateVolume call: {Reserved:100Mi StoragePolicyId:92b1f1d7-fd8b-4aec-aa6f-651d79dfa533 StorageClassName:zonal-policy Namespace:shalini-ns}","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:17.130426279Z","caller":"volume/listview.go:124","msg":"AddTask called for Task:task-636","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:17.151105466Z","caller":"volume/listview.go:159","msg":"task Task:task-636 added to listView","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:17.151320946Z","caller":"volume/listview.go:296","msg":"processTaskUpdate for property change update: {DynamicData:{} Name:info Op:assign Val:{DynamicData:{} Key:task-636 Task:Task:task-636 Description:<nil> Name: DescriptionId:com.vmware.cns.tasks.createvolume Entity:Folder:group-d1 EntityName:Datacenters Locked:[] State:running Cancelled:false Cancelable:false Error:<nil> Result:<nil> Progress:0 ProgressDetails:[] Reason:0xc00055f6e0 QueueTime:2024-01-31 22:26:17.107259 +0000 UTC StartTime:2024-01-31 22:26:17.113227 +0000 UTC CompleteTime:<nil> EventChainId:28028 ChangeTag: ParentTaskKey: RootTaskKey: ActivationId:ca852500}}","TraceId":"bc467eae-9249-4372-bf46-c41ef8d4312b"}
{"level":"info","time":"2024-01-31T22:26:18.530264414Z","caller":"volume/listview.go:296","msg":"processTaskUpdate for property change update: {DynamicData:{} Name:info Op:assign Val:{DynamicData:{} Key:task-636 Task:Task:task-636 Description:<nil> Name: DescriptionId:com.vmware.cns.tasks.createvolume Entity:Folder:group-d1 EntityName:Datacenters Locked:[] State:running Cancelled:false Cancelable:false Error:<nil> Result:<nil> Progress:0 ProgressDetails:[] Reason:0xc00055faf0 QueueTime:2024-01-31 22:26:17.107259 +0000 UTC StartTime:2024-01-31 22:26:17.113227 +0000 UTC CompleteTime:<nil> EventChainId:28028 ChangeTag: ParentTaskKey: RootTaskKey: ActivationId:ca852500}}","TraceId":"bc467eae-9249-4372-bf46-c41ef8d4312b"}
{"level":"info","time":"2024-01-31T22:26:18.554104761Z","caller":"volume/listview.go:296","msg":"processTaskUpdate for property change update: {DynamicData:{} Name:info Op:assign Val:{DynamicData:{} Key:task-636 Task:Task:task-636 Description:<nil> Name: DescriptionId:com.vmware.cns.tasks.createvolume Entity:Folder:group-d1 EntityName:Datacenters Locked:[] State:success Cancelled:false Cancelable:false Error:<nil> Result:{DynamicData:{} VolumeResults:[0xc000ac3ec0]} Progress:0 ProgressDetails:[] Reason:0xc000733800 QueueTime:2024-01-31 22:26:17.107259 +0000 UTC StartTime:2024-01-31 22:26:17.113227 +0000 UTC CompleteTime:2024-01-31 22:26:18.547205 +0000 UTC EventChainId:28028 ChangeTag: ParentTaskKey: RootTaskKey: ActivationId:ca852500}}","TraceId":"bc467eae-9249-4372-bf46-c41ef8d4312b"}
{"level":"info","time":"2024-01-31T22:26:18.560227066Z","caller":"volume/listview.go:178","msg":"task Task:task-636 removed from listView","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:18.560975158Z","caller":"volume/manager.go:445","msg":"CreateVolume: VolumeName: \"pvc-04ddb25e-72c9-4b46-8fb2-27720f09b30f\", opId: \"ca852500\"","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:18.563957838Z","caller":"volume/util.go:329","msg":"Volume created successfully. VolumeName: \"pvc-04ddb25e-72c9-4b46-8fb2-27720f09b30f\", volumeID: \"e08273d9-3ff8-4e73-ae9d-8a1babb03e54\"","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:18.564066862Z","caller":"volume/manager.go:595","msg":"Setting the reserved field for VolumeOperationDetails instance pvc-04ddb25e-72c9-4b46-8fb2-27720f09b30f to 0","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:18.686487703Z","caller":"k8sorchestrator/topology.go:1721","msg":"Topology of the provisioned volume detected as [map[topology.kubernetes.io/zone:zone-2]]","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:18.68734891Z","caller":"cnsvolumeinfo/cnsvolumeinfoservice.go:204","msg":"creating cnsvolumeinfo for volumeID: \"e08273d9-3ff8-4e73-ae9d-8a1babb03e54\", StoragePolicyID: \"92b1f1d7-fd8b-4aec-aa6f-651d79dfa533\", StorageClassName: \"zonal-policy\", vCenter: \"sc2-10-186-198-133.eng.vmware.com\", Capacity: {i:{value:104857600 scale:0} d:{Dec:<nil>} s: Format:BinarySI} in the namespace: \"vmware-system-csi\"","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:18.701420587Z","caller":"cnsvolumeinfo/cnsvolumeinfoservice.go:233","msg":"Successfully created CNSVolumeInfo CR for volumeID: \"e08273d9-3ff8-4e73-ae9d-8a1babb03e54\", StoragePolicyID: \"92b1f1d7-fd8b-4aec-aa6f-651d79dfa533\", StorageClassName: \"zonal-policy\", vCenter: \"sc2-10-186-198-133.eng.vmware.com\", Capacity: {i:{value:104857600 scale:0} d:{Dec:<nil>} s: Format:BinarySI} mapping in the namespace: \"vmware-system-csi\"","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}
{"level":"info","time":"2024-01-31T22:26:18.701544722Z","caller":"wcp/controller.go:956","msg":"Volume created successfully. Volume Handle: \"e08273d9-3ff8-4e73-ae9d-8a1babb03e54\", PV Name: \"pvc-04ddb25e-72c9-4b46-8fb2-27720f09b30f\"","TraceId":"511ea4a8-e71a-4eb8-9e5f-a59c374ed325"}

Special notes for your reviewer:

Release note:

Use WCP FSS configmap in CSI driver for features dependent on WCP service

@k8s-ci-robot k8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Jan 30, 2024
@k8s-ci-robot k8s-ci-robot added approved Indicates a PR has been approved by an approver from all required OWNERS files. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Jan 30, 2024
@shalini-b
Copy link
Collaborator Author

/ok-to-test

@k8s-ci-robot k8s-ci-robot added the ok-to-test Indicates a non-member PR verified by an org member that is safe to test. label Jan 30, 2024
@k8s-ci-robot k8s-ci-robot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. and removed size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Jan 31, 2024
@akankshapanse
Copy link
Contributor

/approve

@deepakkinni
Copy link
Contributor

This change makes it problematic to write unit tests since we are relying on the presence of an actual config map.

@shalini-b
Copy link
Collaborator Author

This change makes it problematic to write unit tests since we are relying on the presence of an actual config map.

We can skip fetching the WCP config map in unit tests if we override the WCPFeatureStates variable. For our internal CSI configmaps, we fetch the data during init and keep the data updated using informer events. Doing this for WCP configmap might be an overkill as WCP configmap has a lot of other feature states unrelated to CSI.

Copy link
Collaborator

@chethanv28 chethanv28 left a comment

Choose a reason for hiding this comment

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

I have some minor comments. See if those needs to be addressed or can be deferred for now.

Overall, changes look good to me
/approve

…vice

Optimize the number of IsFSSEnabled calls for WCP defined FSS
Copy link
Member

@divyenpatel divyenpatel left a comment

Choose a reason for hiding this comment

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

/approve
/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Feb 1, 2024
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: akankshapanse, chethanv28, divyenpatel, shalini-b

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:
  • OWNERS [chethanv28,divyenpatel,shalini-b]

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

@k8s-ci-robot k8s-ci-robot merged commit 3345236 into kubernetes-sigs:master Feb 2, 2024
12 checks passed
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. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants