Skip to content

Commit

Permalink
Changes to update client-sdk files and documentation as per recent ch…
Browse files Browse the repository at this point in the history
…anges made for orphan volume feature (#25)
  • Loading branch information
vdkotkar committed Mar 4, 2024
1 parent 888472c commit 97c9ba2
Show file tree
Hide file tree
Showing 12 changed files with 210 additions and 173 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Example:
* Invoke `/registercluster` API on CNS manager by uploading the kubeconfig file. You may also modify other input parameters for the API based on your cluster configuration.
The API can also be invoked from command line. Here is an example:
```
curl -X 'POST' "http://CNS-MANAGER-ENDPOINT/1.0.0/registercluster?csiDriverSecretName=vsphere-config-secret&csiDriverNamespace=vmware-system-csi" -H 'accept: application/json' -H 'Content-Type: multipart/form-data' -F 'clusterKubeConfigFile=@output_file_name' -u "Admistrator:Admin123@"
curl -X 'POST' "http://CNS-MANAGER-ENDPOINT/1.0.0/registercluster?csiDriverSecretName=vsphere-config-secret&csiDriverSecretNamespace=vmware-system-csi" -H 'accept: application/json' -H 'Content-Type: multipart/form-data' -F 'clusterKubeConfigFile=@output_file_name' -u "Admistrator:Admin123@"
```
* Once the cluster is registered, you may delete this file from the machine.

Expand All @@ -61,11 +61,11 @@ curl -X 'POST' "http://CNS-MANAGER-ENDPOINT/1.0.0/registercluster?csiDriverSecre
See the [upgrade instructions](docs/book/deployment/upgrade.md) if you're upgrading previously deployed cns-manager instance to a newer release.
## Functionalities currently offered through cns-manager

* **Storage vMotion for CNS volumes**
* **Storage vMotion for CNS volumes**
This feature allows migrating volumes from one datastore to another. Read [here](docs/book/features/storage_vmotion.md) for more details about this feature.

* **Orphan volumes detection & deletion**
This feature allows detecting/deleting orphan volumes that are not being used in any of the registered Kubernetes clusters on the vCenter. Read [here](docs/book/features/orphan_volumes.md) for more details about this feature.

* **Orphan snapshots detection & deletion**
* **Orphan snapshots detection & deletion**
This feature allows detecting/deleting orphan snapshots that are not being used in any of the registered Kubernetes clusters on the vCenter. Read [here](docs/book/features/orphan_snapshots.md) for more details about this feature.
157 changes: 81 additions & 76 deletions client-sdk/go/client/api_cluster_record_keeping.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
/*
Copyright 2022 VMware, Inc.
Copyright 2024 VMware, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
Expand All @@ -17,12 +17,12 @@ package swagger

import (
"context"
"github.com/antihax/optional"
"io/ioutil"
"net/http"
"net/url"
"strings"
"os"
"github.com/antihax/optional"
"strings"
)

// Linger please
Expand All @@ -31,19 +31,21 @@ var (
)

type ClusterRecordKeepingApiService service

/*
ClusterRecordKeepingApiService Deregister a cluster with the CNS Manager.
The API takes unique clusterID as input and de-registers the cluster from CNS Manager.
* @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
* @param clusterId Refers to cluster-id available in decoded data field from vsphere-config-secret.
- @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
- @param clusterId Refers to cluster-id available in decoded data field from vsphere-config-secret.
@return DeregisterClusterResult
*/
func (a *ClusterRecordKeepingApiService) Deregistercluster(ctx context.Context, clusterId string) (DeregisterClusterResult, *http.Response, error) {
var (
localVarHttpMethod = strings.ToUpper("Post")
localVarPostBody interface{}
localVarFileName string
localVarFileBytes []byte
localVarHttpMethod = strings.ToUpper("Post")
localVarPostBody interface{}
localVarFileName string
localVarFileBytes []byte
localVarReturnValue DeregisterClusterResult
)

Expand Down Expand Up @@ -90,54 +92,56 @@ func (a *ClusterRecordKeepingApiService) Deregistercluster(ctx context.Context,

if localVarHttpResponse.StatusCode < 300 {
// If we succeed, return the data, otherwise pass on to decode error.
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"));
if err == nil {
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
if err == nil {
return localVarReturnValue, localVarHttpResponse, err
}
}

if localVarHttpResponse.StatusCode >= 300 {
newErr := GenericSwaggerError{
body: localVarBody,
body: localVarBody,
error: localVarHttpResponse.Status,
}
if localVarHttpResponse.StatusCode == 200 {
var v DeregisterClusterResult
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"));
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHttpResponse, newErr
}
newErr.model = v
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHttpResponse, newErr
}
newErr.model = v
return localVarReturnValue, localVarHttpResponse, newErr
}
if localVarHttpResponse.StatusCode == 0 {
var v ModelError
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"));
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHttpResponse, newErr
}
newErr.model = v
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHttpResponse, newErr
}
newErr.model = v
return localVarReturnValue, localVarHttpResponse, newErr
}
return localVarReturnValue, localVarHttpResponse, newErr
}

return localVarReturnValue, localVarHttpResponse, nil
}

/*
ClusterRecordKeepingApiService Get the list of registered k8s clusters from CNS manager inventory.
CNS manager does a record keeping of all the clusters in a vCenter. The registered cluster config is stored in the CNS manager inventory by using ClusterId as the key. The listregisteredclusters API will return the list of all the registered clusterIds as an array.
* @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
- @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@return []string
*/
func (a *ClusterRecordKeepingApiService) Listregisteredclusters(ctx context.Context) ([]string, *http.Response, error) {
var (
localVarHttpMethod = strings.ToUpper("Get")
localVarPostBody interface{}
localVarFileName string
localVarFileBytes []byte
localVarHttpMethod = strings.ToUpper("Get")
localVarPostBody interface{}
localVarFileName string
localVarFileBytes []byte
localVarReturnValue []string
)

Expand Down Expand Up @@ -183,67 +187,68 @@ func (a *ClusterRecordKeepingApiService) Listregisteredclusters(ctx context.Cont

if localVarHttpResponse.StatusCode < 300 {
// If we succeed, return the data, otherwise pass on to decode error.
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"));
if err == nil {
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
if err == nil {
return localVarReturnValue, localVarHttpResponse, err
}
}

if localVarHttpResponse.StatusCode >= 300 {
newErr := GenericSwaggerError{
body: localVarBody,
body: localVarBody,
error: localVarHttpResponse.Status,
}
if localVarHttpResponse.StatusCode == 200 {
var v []string
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"));
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHttpResponse, newErr
}
newErr.model = v
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHttpResponse, newErr
}
newErr.model = v
return localVarReturnValue, localVarHttpResponse, newErr
}
if localVarHttpResponse.StatusCode == 0 {
var v ModelError
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"));
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHttpResponse, newErr
}
newErr.model = v
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHttpResponse, newErr
}
newErr.model = v
return localVarReturnValue, localVarHttpResponse, newErr
}
return localVarReturnValue, localVarHttpResponse, newErr
}

return localVarReturnValue, localVarHttpResponse, nil
}

/*
ClusterRecordKeepingApiService Register a Kubernetes cluster with CNS Manager.
The API takes kubeconfig of a given cluster as an input. Make sure to copy the contents of the Cluster KubeConfig to a file. The kubeconfig is stored securely inside a k8s secret on the cluster where CNS manager is deployed. The API additionally takes optional params like CSI driver clusterId or CSI driver namespace and config secret name to read cluster-id from the CSI secret.
The API takes kubeconfig of a given cluster as an input. Make sure to copy the contents of the Cluster KubeConfig to a file. The kubeconfig is stored securely inside a k8s secret on the cluster where CNS manager is deployed. The API additionally takes optional params like CSI driver clusterId or CSI driver namespace and config secret name to read cluster-id from the CSI secret.
* @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
* @param optional nil or *ClusterRecordKeepingApiRegisterclusterOpts - Optional Parameters:
* @param "ClusterKubeConfigFile" (optional.*os.File) -
* @param "ClusterKubeConfigFile" (optional.*os.File) -
* @param "CsiDriverSecretName" (optional.String) - (Optional) Refers to the name of the config secret of vsphere-csi-driver.
* @param "CsiDriverNamespace" (optional.String) - (Optional) Refers to the namespace of vsphere-csi-driver.
* @param "ClusterId" (optional.String) - (Optional) Cluster Id of the cluster to be registered with the CNS Manager. This cluster Id needs to be the same that&#x27;s used in the vSphere CSI driver config of the Kubernetes cluster. For vanilla Kubernetes distributions deployed using [VMware&#x27;s recommended way](https://docs.vmware.com/en/VMware-vSphere-Container-Storage-Plug-in/2.0/vmware-vsphere-csp-getting-started/GUID-BFF39F1D-F70A-4360-ABC9-85BDAFBE8864.html), it will be present in the CSI secret and will be auto-computed from the provided kubeConfig. For other Kubernetes distributions, please check their docs to determine how they&#x27;re configuring clusterId for the vSphere CSI driver in the Kubernetes cluster.
* @param "CsiDriverSecretNamespace" (optional.String) - (Optional) Refers to the namespace of the config secret of vsphere-csi-driver.
* @param "ClusterId" (optional.String) - (Optional) Cluster Id of the cluster to be registered with the CNS Manager. This cluster Id needs to be the same that&#x27;s used in the vSphere CSI driver config of the Kubernetes cluster. For vanilla Kubernetes distributions deployed using [VMware&#x27;s recommended way](https://docs.vmware.com/en/VMware-vSphere-Container-Storage-Plug-in/2.0/vmware-vsphere-csp-getting-started/GUID-BFF39F1D-F70A-4360-ABC9-85BDAFBE8864.html), it will be present in the CSI secret and will be auto-computed from the provided kubeConfig. For other Kubernetes distributions, please check their docs to determine how they&#x27;re configuring clusterId for the vSphere CSI driver in the Kubernetes cluster.
@return RegisterClusterResult
*/

type ClusterRecordKeepingApiRegisterclusterOpts struct {
ClusterKubeConfigFile optional.Interface
CsiDriverSecretName optional.String
CsiDriverNamespace optional.String
ClusterId optional.String
ClusterKubeConfigFile optional.Interface
CsiDriverSecretName optional.String
CsiDriverSecretNamespace optional.String
ClusterId optional.String
}

func (a *ClusterRecordKeepingApiService) Registercluster(ctx context.Context, localVarOptionals *ClusterRecordKeepingApiRegisterclusterOpts) (RegisterClusterResult, *http.Response, error) {
var (
localVarHttpMethod = strings.ToUpper("Post")
localVarPostBody interface{}
localVarFileName string
localVarFileBytes []byte
localVarHttpMethod = strings.ToUpper("Post")
localVarPostBody interface{}
localVarFileName string
localVarFileBytes []byte
localVarReturnValue RegisterClusterResult
)

Expand All @@ -257,8 +262,8 @@ func (a *ClusterRecordKeepingApiService) Registercluster(ctx context.Context, lo
if localVarOptionals != nil && localVarOptionals.CsiDriverSecretName.IsSet() {
localVarQueryParams.Add("csiDriverSecretName", parameterToString(localVarOptionals.CsiDriverSecretName.Value(), ""))
}
if localVarOptionals != nil && localVarOptionals.CsiDriverNamespace.IsSet() {
localVarQueryParams.Add("csiDriverNamespace", parameterToString(localVarOptionals.CsiDriverNamespace.Value(), ""))
if localVarOptionals != nil && localVarOptionals.CsiDriverSecretNamespace.IsSet() {
localVarQueryParams.Add("csiDriverSecretNamespace", parameterToString(localVarOptionals.CsiDriverSecretNamespace.Value(), ""))
}
if localVarOptionals != nil && localVarOptionals.ClusterId.IsSet() {
localVarQueryParams.Add("clusterId", parameterToString(localVarOptionals.ClusterId.Value(), ""))
Expand All @@ -280,12 +285,12 @@ func (a *ClusterRecordKeepingApiService) Registercluster(ctx context.Context, lo
if localVarHttpHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
}
var localVarFile *os.File
var localVarFile *os.File
if localVarOptionals != nil && localVarOptionals.ClusterKubeConfigFile.IsSet() {
localVarFileOk := false
localVarFile, localVarFileOk = localVarOptionals.ClusterKubeConfigFile.Value().(*os.File)
if !localVarFileOk {
return localVarReturnValue, nil, reportError("clusterKubeConfigFile should be *os.File")
return localVarReturnValue, nil, reportError("clusterKubeConfigFile should be *os.File")
}
}
if localVarFile != nil {
Expand All @@ -312,36 +317,36 @@ func (a *ClusterRecordKeepingApiService) Registercluster(ctx context.Context, lo

if localVarHttpResponse.StatusCode < 300 {
// If we succeed, return the data, otherwise pass on to decode error.
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"));
if err == nil {
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
if err == nil {
return localVarReturnValue, localVarHttpResponse, err
}
}

if localVarHttpResponse.StatusCode >= 300 {
newErr := GenericSwaggerError{
body: localVarBody,
body: localVarBody,
error: localVarHttpResponse.Status,
}
if localVarHttpResponse.StatusCode == 200 {
var v RegisterClusterResult
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"));
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHttpResponse, newErr
}
newErr.model = v
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHttpResponse, newErr
}
newErr.model = v
return localVarReturnValue, localVarHttpResponse, newErr
}
if localVarHttpResponse.StatusCode == 0 {
var v ModelError
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"));
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHttpResponse, newErr
}
newErr.model = v
err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type"))
if err != nil {
newErr.error = err.Error()
return localVarReturnValue, localVarHttpResponse, newErr
}
newErr.model = v
return localVarReturnValue, localVarHttpResponse, newErr
}
return localVarReturnValue, localVarHttpResponse, newErr
}
Expand Down
Loading

0 comments on commit 97c9ba2

Please sign in to comment.