vac support ResourceDescriber
Co-authored-by: Arda Güçlü <aguclu@redhat.com>
This commit is contained in:
		@@ -52,6 +52,7 @@ import (
 | 
			
		||||
	rbacv1 "k8s.io/api/rbac/v1"
 | 
			
		||||
	schedulingv1 "k8s.io/api/scheduling/v1"
 | 
			
		||||
	storagev1 "k8s.io/api/storage/v1"
 | 
			
		||||
	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
 | 
			
		||||
	apierrors "k8s.io/apimachinery/pkg/api/errors"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/meta"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/resource"
 | 
			
		||||
@@ -227,6 +228,7 @@ func describerMap(clientConfig *rest.Config) (map[schema.GroupKind]ResourceDescr
 | 
			
		||||
		{Group: certificatesv1beta1.GroupName, Kind: "CertificateSigningRequest"}: &CertificateSigningRequestDescriber{c},
 | 
			
		||||
		{Group: storagev1.GroupName, Kind: "StorageClass"}:                        &StorageClassDescriber{c},
 | 
			
		||||
		{Group: storagev1.GroupName, Kind: "CSINode"}:                             &CSINodeDescriber{c},
 | 
			
		||||
		{Group: storagev1alpha1.GroupName, Kind: "VolumeAttributesClass"}:         &VolumeAttributesClassDescriber{c},
 | 
			
		||||
		{Group: policyv1beta1.GroupName, Kind: "PodDisruptionBudget"}:             &PodDisruptionBudgetDescriber{c},
 | 
			
		||||
		{Group: policyv1.GroupName, Kind: "PodDisruptionBudget"}:                  &PodDisruptionBudgetDescriber{c},
 | 
			
		||||
		{Group: rbacv1.GroupName, Kind: "Role"}:                                   &RoleDescriber{c},
 | 
			
		||||
@@ -410,6 +412,7 @@ func init() {
 | 
			
		||||
		describeServiceAccount,
 | 
			
		||||
		describeStatefulSet,
 | 
			
		||||
		describeStorageClass,
 | 
			
		||||
		describeVolumeAttributesClass,
 | 
			
		||||
	)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		klog.Fatalf("Cannot register describers: %v", err)
 | 
			
		||||
@@ -4686,6 +4689,40 @@ func describeStorageClass(sc *storagev1.StorageClass, events *corev1.EventList)
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type VolumeAttributesClassDescriber struct {
 | 
			
		||||
	clientset.Interface
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (d *VolumeAttributesClassDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (string, error) {
 | 
			
		||||
	vac, err := d.StorageV1alpha1().VolumeAttributesClasses().Get(context.TODO(), name, metav1.GetOptions{})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var events *corev1.EventList
 | 
			
		||||
	if describerSettings.ShowEvents {
 | 
			
		||||
		events, _ = searchEvents(d.CoreV1(), vac, describerSettings.ChunkSize)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return describeVolumeAttributesClass(vac, events)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func describeVolumeAttributesClass(vac *storagev1alpha1.VolumeAttributesClass, events *corev1.EventList) (string, error) {
 | 
			
		||||
	return tabbedString(func(out io.Writer) error {
 | 
			
		||||
		w := NewPrefixWriter(out)
 | 
			
		||||
		w.Write(LEVEL_0, "Name:\t%s\n", vac.Name)
 | 
			
		||||
		w.Write(LEVEL_0, "Annotations:\t%s\n", labels.FormatLabels(vac.Annotations))
 | 
			
		||||
		w.Write(LEVEL_0, "DriverName:\t%s\n", vac.DriverName)
 | 
			
		||||
		w.Write(LEVEL_0, "Parameters:\t%s\n", labels.FormatLabels(vac.Parameters))
 | 
			
		||||
 | 
			
		||||
		if events != nil {
 | 
			
		||||
			DescribeEvents(events, w)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return nil
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type CSINodeDescriber struct {
 | 
			
		||||
	clientset.Interface
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -40,6 +40,7 @@ import (
 | 
			
		||||
	policyv1beta1 "k8s.io/api/policy/v1beta1"
 | 
			
		||||
	schedulingv1 "k8s.io/api/scheduling/v1"
 | 
			
		||||
	storagev1 "k8s.io/api/storage/v1"
 | 
			
		||||
	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
 | 
			
		||||
	apiequality "k8s.io/apimachinery/pkg/api/equality"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/resource"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
@@ -3453,6 +3454,38 @@ func TestDescribeStorageClass(t *testing.T) {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestDescribeVolumeAttributesClass(t *testing.T) {
 | 
			
		||||
	expectedOut := `Name:         foo
 | 
			
		||||
Annotations:  name=bar
 | 
			
		||||
DriverName:   my-driver
 | 
			
		||||
Parameters:   param1=value1,param2=value2
 | 
			
		||||
Events:       <none>
 | 
			
		||||
`
 | 
			
		||||
 | 
			
		||||
	f := fake.NewSimpleClientset(&storagev1alpha1.VolumeAttributesClass{
 | 
			
		||||
		ObjectMeta: metav1.ObjectMeta{
 | 
			
		||||
			Name:            "foo",
 | 
			
		||||
			ResourceVersion: "4",
 | 
			
		||||
			Annotations: map[string]string{
 | 
			
		||||
				"name": "bar",
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		DriverName: "my-driver",
 | 
			
		||||
		Parameters: map[string]string{
 | 
			
		||||
			"param1": "value1",
 | 
			
		||||
			"param2": "value2",
 | 
			
		||||
		},
 | 
			
		||||
	})
 | 
			
		||||
	s := VolumeAttributesClassDescriber{f}
 | 
			
		||||
	out, err := s.Describe("", "foo", DescriberSettings{ShowEvents: true})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Errorf("unexpected error: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	if out != expectedOut {
 | 
			
		||||
		t.Errorf("expected:\n %s\n but got output:\n %s diff:\n%s", expectedOut, out, cmp.Diff(out, expectedOut))
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestDescribeCSINode(t *testing.T) {
 | 
			
		||||
	limit := utilpointer.Int32Ptr(int32(2))
 | 
			
		||||
	f := fake.NewSimpleClientset(&storagev1.CSINode{
 | 
			
		||||
 
 | 
			
		||||
@@ -45,6 +45,7 @@ import (
 | 
			
		||||
	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
 | 
			
		||||
	schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1"
 | 
			
		||||
	storagev1 "k8s.io/api/storage/v1"
 | 
			
		||||
	storagev1alpha1 "k8s.io/api/storage/v1alpha1"
 | 
			
		||||
	storagev1beta1 "k8s.io/api/storage/v1beta1"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	metav1beta1 "k8s.io/apimachinery/pkg/apis/meta/v1beta1"
 | 
			
		||||
@@ -78,5 +79,5 @@ func init() {
 | 
			
		||||
	utilruntime.Must(Scheme.SetVersionPriority(policyv1beta1.SchemeGroupVersion, policyv1.SchemeGroupVersion))
 | 
			
		||||
	utilruntime.Must(Scheme.SetVersionPriority(rbacv1.SchemeGroupVersion, rbacv1beta1.SchemeGroupVersion, rbacv1alpha1.SchemeGroupVersion))
 | 
			
		||||
	utilruntime.Must(Scheme.SetVersionPriority(schedulingv1alpha1.SchemeGroupVersion))
 | 
			
		||||
	utilruntime.Must(Scheme.SetVersionPriority(storagev1.SchemeGroupVersion, storagev1beta1.SchemeGroupVersion))
 | 
			
		||||
	utilruntime.Must(Scheme.SetVersionPriority(storagev1.SchemeGroupVersion, storagev1beta1.SchemeGroupVersion, storagev1alpha1.SchemeGroupVersion))
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user