+
+
+@mock.patch("kubernetes.config.kube_config.Configuration")
+@mock.patch("n2vc.kubectl.config.load_kube_config")
+class GetConfiguration(KubectlTestCase):
+ def setUp(self):
+ super(GetConfiguration, self).setUp()
+
+ def test_get_configuration(self, mock_load_kube_config, mock_configuration):
+ kubectl = Kubectl()
+ kubectl.configuration
+ mock_configuration.assert_called_once()
+
+
+@mock.patch("kubernetes.client.StorageV1Api.list_storage_class")
+@mock.patch("kubernetes.config.load_kube_config")
+class GetDefaultStorageClass(KubectlTestCase):
+ def setUp(self):
+ super(GetDefaultStorageClass, self).setUp()
+
+ # Default Storage Class
+ self.default_sc_name = "default-sc"
+ default_sc_metadata = FakeK8sResourceMetadata(
+ name=self.default_sc_name,
+ annotations={"storageclass.kubernetes.io/is-default-class": "true"},
+ )
+ self.default_sc = FakeK8sStorageClass(metadata=default_sc_metadata)
+
+ # Default Storage Class with old annotation
+ self.default_sc_old_name = "default-sc-old"
+ default_sc_old_metadata = FakeK8sResourceMetadata(
+ name=self.default_sc_old_name,
+ annotations={"storageclass.beta.kubernetes.io/is-default-class": "true"},
+ )
+ self.default_sc_old = FakeK8sStorageClass(metadata=default_sc_old_metadata)
+
+ # Storage class - not default
+ self.sc_name = "default-sc-old"
+ self.sc = FakeK8sStorageClass(
+ metadata=FakeK8sResourceMetadata(name=self.sc_name)
+ )
+
+ def test_get_default_storage_class_exists_default(
+ self, mock_load_kube_config, mock_list_storage_class
+ ):
+ kubectl = Kubectl()
+ items = [self.default_sc]
+ mock_list_storage_class.return_value = FakeK8sStorageClassesList(items=items)
+ sc_name = kubectl.get_default_storage_class()
+ self.assertEqual(sc_name, self.default_sc_name)
+ mock_list_storage_class.assert_called_once()
+
+ def test_get_default_storage_class_exists_default_old(
+ self, mock_load_kube_config, mock_list_storage_class
+ ):
+ kubectl = Kubectl()
+ items = [self.default_sc_old]
+ mock_list_storage_class.return_value = FakeK8sStorageClassesList(items=items)
+ sc_name = kubectl.get_default_storage_class()
+ self.assertEqual(sc_name, self.default_sc_old_name)
+ mock_list_storage_class.assert_called_once()
+
+ def test_get_default_storage_class_none(
+ self, mock_load_kube_config, mock_list_storage_class
+ ):
+ kubectl = Kubectl()
+ mock_list_storage_class.return_value = FakeK8sStorageClassesList(items=[])
+ sc_name = kubectl.get_default_storage_class()
+ self.assertEqual(sc_name, None)
+ mock_list_storage_class.assert_called_once()
+
+ def test_get_default_storage_class_exists_not_default(
+ self, mock_load_kube_config, mock_list_storage_class
+ ):
+ kubectl = Kubectl()
+ items = [self.sc]
+ mock_list_storage_class.return_value = FakeK8sStorageClassesList(items=items)
+ sc_name = kubectl.get_default_storage_class()
+ self.assertEqual(sc_name, self.sc_name)
+ mock_list_storage_class.assert_called_once()
+
+ def test_get_default_storage_class_choose(
+ self, mock_load_kube_config, mock_list_storage_class
+ ):
+ kubectl = Kubectl()
+ items = [self.sc, self.default_sc]
+ mock_list_storage_class.return_value = FakeK8sStorageClassesList(items=items)
+ sc_name = kubectl.get_default_storage_class()
+ self.assertEqual(sc_name, self.default_sc_name)
+ mock_list_storage_class.assert_called_once()