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 }