|
@@ -94,6 +94,169 @@ class OCPVCTest(unittest.TestCase):
|
|
|
self.assertTrue(results['changed'])
|
|
|
self.assertEqual(results['results']['results'][0]['metadata']['name'], 'mypvc')
|
|
|
|
|
|
+ @mock.patch('oc_pvc.Utils.create_tmpfile_copy')
|
|
|
+ @mock.patch('oc_pvc.OCPVC._run')
|
|
|
+ def test_update_pvc(self, mock_run, mock_tmpfile_copy):
|
|
|
+ ''' Testing a pvc create '''
|
|
|
+ params = copy.deepcopy(OCPVCTest.params)
|
|
|
+ params['access_modes'] = 'ReadWriteMany'
|
|
|
+
|
|
|
+ pvc = '''{"kind": "PersistentVolumeClaim",
|
|
|
+ "apiVersion": "v1",
|
|
|
+ "metadata": {
|
|
|
+ "name": "mypvc",
|
|
|
+ "namespace": "test",
|
|
|
+ "selfLink": "/api/v1/namespaces/test/persistentvolumeclaims/mypvc",
|
|
|
+ "uid": "77597898-d8d8-11e6-aea5-0e3c0c633889",
|
|
|
+ "resourceVersion": "126510787",
|
|
|
+ "creationTimestamp": "2017-01-12T15:04:50Z",
|
|
|
+ "labels": {
|
|
|
+ "mypvc": "database"
|
|
|
+ },
|
|
|
+ "annotations": {
|
|
|
+ "pv.kubernetes.io/bind-completed": "yes",
|
|
|
+ "pv.kubernetes.io/bound-by-controller": "yes",
|
|
|
+ "v1.2-volume.experimental.kubernetes.io/provisioning-required": "volume.experimental.kubernetes.io/provisioning-completed"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "spec": {
|
|
|
+ "accessModes": [
|
|
|
+ "ReadWriteOnce"
|
|
|
+ ],
|
|
|
+ "resources": {
|
|
|
+ "requests": {
|
|
|
+ "storage": "1Gi"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "volumeName": "pv-aws-ow5vl"
|
|
|
+ },
|
|
|
+ "status": {
|
|
|
+ "phase": "Bound",
|
|
|
+ "accessModes": [
|
|
|
+ "ReadWriteOnce"
|
|
|
+ ],
|
|
|
+ "capacity": {
|
|
|
+ "storage": "1Gi"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }'''
|
|
|
+
|
|
|
+ mod_pvc = '''{"kind": "PersistentVolumeClaim",
|
|
|
+ "apiVersion": "v1",
|
|
|
+ "metadata": {
|
|
|
+ "name": "mypvc",
|
|
|
+ "namespace": "test",
|
|
|
+ "selfLink": "/api/v1/namespaces/test/persistentvolumeclaims/mypvc",
|
|
|
+ "uid": "77597898-d8d8-11e6-aea5-0e3c0c633889",
|
|
|
+ "resourceVersion": "126510787",
|
|
|
+ "creationTimestamp": "2017-01-12T15:04:50Z",
|
|
|
+ "labels": {
|
|
|
+ "mypvc": "database"
|
|
|
+ },
|
|
|
+ "annotations": {
|
|
|
+ "pv.kubernetes.io/bind-completed": "yes",
|
|
|
+ "pv.kubernetes.io/bound-by-controller": "yes",
|
|
|
+ "v1.2-volume.experimental.kubernetes.io/provisioning-required": "volume.experimental.kubernetes.io/provisioning-completed"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "spec": {
|
|
|
+ "accessModes": [
|
|
|
+ "ReadWriteMany"
|
|
|
+ ],
|
|
|
+ "resources": {
|
|
|
+ "requests": {
|
|
|
+ "storage": "1Gi"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "volumeName": "pv-aws-ow5vl"
|
|
|
+ },
|
|
|
+ "status": {
|
|
|
+ "phase": "Bound",
|
|
|
+ "accessModes": [
|
|
|
+ "ReadWriteOnce"
|
|
|
+ ],
|
|
|
+ "capacity": {
|
|
|
+ "storage": "1Gi"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }'''
|
|
|
+
|
|
|
+ mock_run.side_effect = [
|
|
|
+ (0, pvc, ''),
|
|
|
+ (0, pvc, ''),
|
|
|
+ (0, '', ''),
|
|
|
+ (0, mod_pvc, ''),
|
|
|
+ ]
|
|
|
+
|
|
|
+ mock_tmpfile_copy.side_effect = [
|
|
|
+ '/tmp/mocked_kubeconfig',
|
|
|
+ ]
|
|
|
+
|
|
|
+ results = OCPVC.run_ansible(params, False)
|
|
|
+
|
|
|
+ self.assertFalse(results['changed'])
|
|
|
+ self.assertEqual(results['results']['msg'], '##### - This volume is currently bound. Will not update - ####')
|
|
|
+
|
|
|
+ @mock.patch('oc_pvc.Utils.create_tmpfile_copy')
|
|
|
+ @mock.patch('oc_pvc.OCPVC._run')
|
|
|
+ def test_delete_pvc(self, mock_run, mock_tmpfile_copy):
|
|
|
+ ''' Testing a pvc create '''
|
|
|
+ params = copy.deepcopy(OCPVCTest.params)
|
|
|
+ params['state'] = 'absent'
|
|
|
+
|
|
|
+ pvc = '''{"kind": "PersistentVolumeClaim",
|
|
|
+ "apiVersion": "v1",
|
|
|
+ "metadata": {
|
|
|
+ "name": "mypvc",
|
|
|
+ "namespace": "test",
|
|
|
+ "selfLink": "/api/v1/namespaces/test/persistentvolumeclaims/mypvc",
|
|
|
+ "uid": "77597898-d8d8-11e6-aea5-0e3c0c633889",
|
|
|
+ "resourceVersion": "126510787",
|
|
|
+ "creationTimestamp": "2017-01-12T15:04:50Z",
|
|
|
+ "labels": {
|
|
|
+ "mypvc": "database"
|
|
|
+ },
|
|
|
+ "annotations": {
|
|
|
+ "pv.kubernetes.io/bind-completed": "yes",
|
|
|
+ "pv.kubernetes.io/bound-by-controller": "yes",
|
|
|
+ "v1.2-volume.experimental.kubernetes.io/provisioning-required": "volume.experimental.kubernetes.io/provisioning-completed"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "spec": {
|
|
|
+ "accessModes": [
|
|
|
+ "ReadWriteOnce"
|
|
|
+ ],
|
|
|
+ "resources": {
|
|
|
+ "requests": {
|
|
|
+ "storage": "1Gi"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "volumeName": "pv-aws-ow5vl"
|
|
|
+ },
|
|
|
+ "status": {
|
|
|
+ "phase": "Bound",
|
|
|
+ "accessModes": [
|
|
|
+ "ReadWriteOnce"
|
|
|
+ ],
|
|
|
+ "capacity": {
|
|
|
+ "storage": "1Gi"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }'''
|
|
|
+
|
|
|
+ mock_run.side_effect = [
|
|
|
+ (0, pvc, ''),
|
|
|
+ (0, '', ''),
|
|
|
+ ]
|
|
|
+
|
|
|
+ mock_tmpfile_copy.side_effect = [
|
|
|
+ '/tmp/mocked_kubeconfig',
|
|
|
+ ]
|
|
|
+
|
|
|
+ results = OCPVC.run_ansible(params, False)
|
|
|
+
|
|
|
+ self.assertTrue(results['changed'])
|
|
|
+
|
|
|
@unittest.skipIf(six.PY3, 'py2 test only')
|
|
|
@mock.patch('os.path.exists')
|
|
|
@mock.patch('os.environ.get')
|