github.com/verrazzano/verrazzano@v1.7.1/tools/vz/pkg/helpers/vzcapture_rancher.go (about)

     1  // Copyright (c) 2023, Oracle and/or its affiliates.
     2  // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
     3  
     4  package helpers
     5  
     6  import (
     7  	"k8s.io/apimachinery/pkg/runtime/schema"
     8  	"k8s.io/client-go/dynamic"
     9  )
    10  
    11  const (
    12  	cattleV1          = "v1"
    13  	cattleV3          = "v3"
    14  	cattleV1Alpha1    = "v1alpha1"
    15  	mgmtGroup         = "management.cattle.io"
    16  	catalogGroup      = "catalog.cattle.io"
    17  	provisioningGroup = "provisioning.cattle.io"
    18  	fleetGroup        = "fleet.cattle.io"
    19  	gitJobGroup       = "gitjob.cattle.io"
    20  )
    21  
    22  type rancherResource struct {
    23  	GVR  schema.GroupVersionResource
    24  	Kind string
    25  }
    26  
    27  // rancherResources - resources that are not namespaced
    28  var rancherResources = []rancherResource{
    29  	{GVR: schema.GroupVersionResource{Group: catalogGroup, Version: cattleV1, Resource: "clusterrepos"}, Kind: "ClusterRepo"},
    30  	{GVR: schema.GroupVersionResource{Group: mgmtGroup, Version: cattleV3, Resource: "catalogs"}, Kind: "Catalog"},
    31  	{GVR: schema.GroupVersionResource{Group: mgmtGroup, Version: cattleV3, Resource: "kontainerdrivers"}, Kind: "KontainerDriver"},
    32  	{GVR: schema.GroupVersionResource{Group: mgmtGroup, Version: cattleV3, Resource: "clusters"}, Kind: "Cluster"},
    33  }
    34  
    35  // rancherNamespacedResources - resources that are namespaced
    36  var rancherNamespacedResources = []rancherResource{
    37  	{GVR: schema.GroupVersionResource{Group: catalogGroup, Version: cattleV1, Resource: "apps"}, Kind: "App"},
    38  	{GVR: schema.GroupVersionResource{Group: fleetGroup, Version: cattleV1Alpha1, Resource: "bundles"}, Kind: "Bundle"},
    39  	{GVR: schema.GroupVersionResource{Group: fleetGroup, Version: cattleV1Alpha1, Resource: "bundledeployments"}, Kind: "BundleDeployment"},
    40  	{GVR: schema.GroupVersionResource{Group: fleetGroup, Version: cattleV1Alpha1, Resource: "clusters"}, Kind: "Cluster"},
    41  	{GVR: schema.GroupVersionResource{Group: fleetGroup, Version: cattleV1Alpha1, Resource: "clustergroups"}, Kind: "ClusterGroup"},
    42  	{GVR: schema.GroupVersionResource{Group: fleetGroup, Version: cattleV1Alpha1, Resource: "clusterregistrations"}, Kind: "ClusterRegistration"},
    43  	{GVR: schema.GroupVersionResource{Group: fleetGroup, Version: cattleV1Alpha1, Resource: "gitrepos"}, Kind: "GitRepo"},
    44  	{GVR: schema.GroupVersionResource{Group: provisioningGroup, Version: cattleV1, Resource: "clusters"}, Kind: "Cluster"},
    45  	{GVR: schema.GroupVersionResource{Group: mgmtGroup, Version: cattleV3, Resource: "nodes"}, Kind: "Node"},
    46  	{GVR: schema.GroupVersionResource{Group: mgmtGroup, Version: cattleV3, Resource: "managedcharts"}, Kind: "ManagedChart"},
    47  	{GVR: schema.GroupVersionResource{Group: gitJobGroup, Version: cattleV1, Resource: "gitjobs"}, Kind: "GitJob"},
    48  }
    49  
    50  // CaptureGlobalRancherResources captures global resources related to ClusterAPI
    51  func CaptureGlobalRancherResources(dynamicClient dynamic.Interface, captureDir string, vzHelper VZHelper) error {
    52  	for _, resource := range rancherResources {
    53  		if err := captureGlobalResource(dynamicClient, resource.GVR, resource.Kind, captureDir, vzHelper); err != nil {
    54  			return err
    55  		}
    56  	}
    57  	return nil
    58  }
    59  
    60  // captureRancherNamespacedResources captures resources that are namespaced
    61  func captureRancherNamespacedResources(dynamicClient dynamic.Interface, namespace, captureDir string, vzHelper VZHelper) error {
    62  	for _, resource := range rancherNamespacedResources {
    63  		if err := captureNamespacedResource(dynamicClient, resource.GVR, resource.Kind, namespace, captureDir, vzHelper); err != nil {
    64  			return err
    65  		}
    66  	}
    67  	return nil
    68  }