Browse Source

Fixing tests and linting.

Kenny Woodson 8 years ago
parent
commit
453b56bf07

+ 21 - 15
roles/lib_openshift/library/oc_scale.py

@@ -49,10 +49,10 @@ description:
 options:
   state:
     description:
-    - State represents whether to create, modify, delete, or list
+    - State represents whether to scale or list the current replicas
     required: true
     default: present
-    choices: ["present", "absent", "list"]
+    choices: ["present", "list"]
     aliases: []
   kubeconfig:
     description:
@@ -1191,6 +1191,7 @@ class OpenShiftCLIConfig(object):
         return rval
 
 
+
 # pylint: disable=too-many-public-methods
 class DeploymentConfig(Yedit):
     ''' Class to wrap the oc command line tools '''
@@ -1251,7 +1252,7 @@ spec:
     volume_mounts_path = "spec.template.spec.containers[0].volumeMounts"
 
     def __init__(self, content=None):
-        ''' Constructor for OpenshiftOC '''
+        ''' Constructor for deploymentconfig '''
         if not content:
             content = DeploymentConfig.default_deployment_config
 
@@ -1401,7 +1402,7 @@ spec:
         exist_volumes = self.get_volumes()
         del_idx = None
         for idx, exist_volume in enumerate(exist_volumes):
-            if exist_volume.has_key('name') and exist_volume['name'] == volume['name']:
+            if 'name' in exist_volume and exist_volume['name'] == volume['name']:
                 del_idx = idx
                 break
 
@@ -1411,7 +1412,7 @@ spec:
 
         del_idx = None
         for idx, exist_volume_mount in enumerate(exist_volume_mounts):
-            if exist_volume_mount.has_key('name') and exist_volume_mount['name'] == volume['name']:
+            if 'name' in exist_volume_mount and exist_volume_mount['name'] == volume['name']:
                 del_idx = idx
                 break
 
@@ -1478,7 +1479,7 @@ spec:
         # update the volume mount
         for exist_vol_mount in exist_volume_mounts:
             if exist_vol_mount['name'] == volume_mount['name']:
-                if exist_vol_mount.has_key('mountPath') and \
+                if 'mountPath' in exist_vol_mount and \
                    str(exist_vol_mount['mountPath']) != str(volume_mount['mountPath']):
                     exist_vol_mount['mountPath'] = volume_mount['mountPath']
                     modified = True
@@ -1497,27 +1498,27 @@ spec:
         results = []
         results.append(exist_volume['name'] == volume['name'])
 
-        if volume.has_key('secret'):
-            results.append(exist_volume.has_key('secret'))
+        if 'secret' in volume:
+            results.append('secret' in exist_volume)
             results.append(exist_volume['secret']['secretName'] == volume['secret']['secretName'])
             results.append(exist_volume_mount['name'] == volume_mount['name'])
             results.append(exist_volume_mount['mountPath'] == volume_mount['mountPath'])
 
-        elif volume.has_key('emptyDir'):
+        elif 'emptyDir' in volume:
             results.append(exist_volume_mount['name'] == volume['name'])
             results.append(exist_volume_mount['mountPath'] == volume_mount['mountPath'])
 
-        elif volume.has_key('persistentVolumeClaim'):
+        elif 'persistentVolumeClaim' in volume:
             pvc = 'persistentVolumeClaim'
-            results.append(exist_volume.has_key(pvc))
+            results.append(pvc in exist_volume)
             if results[-1]:
                 results.append(exist_volume[pvc]['claimName'] == volume[pvc]['claimName'])
 
-                if volume[pvc].has_key('claimSize'):
+                if 'claimSize' in volume[pvc]:
                     results.append(exist_volume[pvc]['claimSize'] == volume[pvc]['claimSize'])
 
-        elif volume.has_key('hostpath'):
-            results.append(exist_volume.has_key('hostPath'))
+        elif 'hostpath' in volume:
+            results.append('hostPath' in exist_volume)
             results.append(exist_volume['hostPath']['path'] == volume_mount['mountPath'])
 
         return not all(results)
@@ -1527,6 +1528,7 @@ spec:
         current_reps = self.get(DeploymentConfig.replicas_path)
         return not current_reps == replicas
 
+
 # pylint: disable=too-many-public-methods
 class ReplicationController(DeploymentConfig):
     ''' Class to wrap the oc command line tools '''
@@ -1537,7 +1539,7 @@ class ReplicationController(DeploymentConfig):
     volume_mounts_path = "spec.template.spec.containers[0].volumeMounts"
 
     def __init__(self, content):
-        ''' Constructor for OpenshiftOC '''
+        ''' Constructor for ReplicationController '''
         super(ReplicationController, self).__init__(content=content)
 
 # pylint: disable=too-many-instance-attributes
@@ -1580,9 +1582,13 @@ class OCScale(OpenShiftCLI):
         vol = self._get(self.kind, self.name)
         if vol['returncode'] == 0:
             if self.kind == 'dc':
+                # The resource returned from a query could be an rc or dc.
+                # pylint: disable=redefined-variable-type
                 self.resource = DeploymentConfig(content=vol['results'][0])
                 vol['results'] = [self.resource.get_replicas()]
             if self.kind == 'rc':
+                # The resource returned from a query could be an rc or dc.
+                # pylint: disable=redefined-variable-type
                 self.resource = ReplicationController(content=vol['results'][0])
                 vol['results'] = [self.resource.get_replicas()]
 

+ 4 - 0
roles/lib_openshift/src/class/oc_scale.py

@@ -41,9 +41,13 @@ class OCScale(OpenShiftCLI):
         vol = self._get(self.kind, self.name)
         if vol['returncode'] == 0:
             if self.kind == 'dc':
+                # The resource returned from a query could be an rc or dc.
+                # pylint: disable=redefined-variable-type
                 self.resource = DeploymentConfig(content=vol['results'][0])
                 vol['results'] = [self.resource.get_replicas()]
             if self.kind == 'rc':
+                # The resource returned from a query could be an rc or dc.
+                # pylint: disable=redefined-variable-type
                 self.resource = ReplicationController(content=vol['results'][0])
                 vol['results'] = [self.resource.get_replicas()]
 

+ 2 - 2
roles/lib_openshift/src/doc/scale

@@ -10,10 +10,10 @@ description:
 options:
   state:
     description:
-    - State represents whether to create, modify, delete, or list
+    - State represents whether to scale or list the current replicas
     required: true
     default: present
-    choices: ["present", "absent", "list"]
+    choices: ["present", "list"]
     aliases: []
   kubeconfig:
     description:

+ 14 - 12
roles/lib_openshift/src/lib/deploymentconfig.py

@@ -1,4 +1,6 @@
 # pylint: skip-file
+# flake8: noqa
+
 
 # pylint: disable=too-many-public-methods
 class DeploymentConfig(Yedit):
@@ -60,7 +62,7 @@ spec:
     volume_mounts_path = "spec.template.spec.containers[0].volumeMounts"
 
     def __init__(self, content=None):
-        ''' Constructor for OpenshiftOC '''
+        ''' Constructor for deploymentconfig '''
         if not content:
             content = DeploymentConfig.default_deployment_config
 
@@ -210,7 +212,7 @@ spec:
         exist_volumes = self.get_volumes()
         del_idx = None
         for idx, exist_volume in enumerate(exist_volumes):
-            if exist_volume.has_key('name') and exist_volume['name'] == volume['name']:
+            if 'name' in exist_volume and exist_volume['name'] == volume['name']:
                 del_idx = idx
                 break
 
@@ -220,7 +222,7 @@ spec:
 
         del_idx = None
         for idx, exist_volume_mount in enumerate(exist_volume_mounts):
-            if exist_volume_mount.has_key('name') and exist_volume_mount['name'] == volume['name']:
+            if 'name' in exist_volume_mount and exist_volume_mount['name'] == volume['name']:
                 del_idx = idx
                 break
 
@@ -287,7 +289,7 @@ spec:
         # update the volume mount
         for exist_vol_mount in exist_volume_mounts:
             if exist_vol_mount['name'] == volume_mount['name']:
-                if exist_vol_mount.has_key('mountPath') and \
+                if 'mountPath' in exist_vol_mount and \
                    str(exist_vol_mount['mountPath']) != str(volume_mount['mountPath']):
                     exist_vol_mount['mountPath'] = volume_mount['mountPath']
                     modified = True
@@ -306,27 +308,27 @@ spec:
         results = []
         results.append(exist_volume['name'] == volume['name'])
 
-        if volume.has_key('secret'):
-            results.append(exist_volume.has_key('secret'))
+        if 'secret' in volume:
+            results.append('secret' in exist_volume)
             results.append(exist_volume['secret']['secretName'] == volume['secret']['secretName'])
             results.append(exist_volume_mount['name'] == volume_mount['name'])
             results.append(exist_volume_mount['mountPath'] == volume_mount['mountPath'])
 
-        elif volume.has_key('emptyDir'):
+        elif 'emptyDir' in volume:
             results.append(exist_volume_mount['name'] == volume['name'])
             results.append(exist_volume_mount['mountPath'] == volume_mount['mountPath'])
 
-        elif volume.has_key('persistentVolumeClaim'):
+        elif 'persistentVolumeClaim' in volume:
             pvc = 'persistentVolumeClaim'
-            results.append(exist_volume.has_key(pvc))
+            results.append(pvc in exist_volume)
             if results[-1]:
                 results.append(exist_volume[pvc]['claimName'] == volume[pvc]['claimName'])
 
-                if volume[pvc].has_key('claimSize'):
+                if 'claimSize' in volume[pvc]:
                     results.append(exist_volume[pvc]['claimSize'] == volume[pvc]['claimSize'])
 
-        elif volume.has_key('hostpath'):
-            results.append(exist_volume.has_key('hostPath'))
+        elif 'hostpath' in volume:
+            results.append('hostPath' in exist_volume)
             results.append(exist_volume['hostPath']['path'] == volume_mount['mountPath'])
 
         return not all(results)

+ 3 - 1
roles/lib_openshift/src/lib/replicationcontroller.py

@@ -1,4 +1,6 @@
 # pylint: skip-file
+# flake8: noqa
+
 
 # pylint: disable=too-many-public-methods
 class ReplicationController(DeploymentConfig):
@@ -10,5 +12,5 @@ class ReplicationController(DeploymentConfig):
     volume_mounts_path = "spec.template.spec.containers[0].volumeMounts"
 
     def __init__(self, content):
-        ''' Constructor for OpenshiftOC '''
+        ''' Constructor for ReplicationController '''
         super(ReplicationController, self).__init__(content=content)

+ 24 - 24
roles/lib_openshift/src/test/integration/oc_scale.yml

@@ -5,30 +5,30 @@
   gather_facts: no
   user: root
   tasks:
-#  - name: list oc scale for default router dc
-#    oc_scale:
-#      state: list
-#      name: router
-#      namespace: default
-#      kind: dc
-#    register: scaleout
-#  - debug: var=scaleout
-#
-#  - assert:
-#      that:
-#      - "'result' in scaleout"
-#      - scaleout.result > 0
-#      msg: "Did not find 'result' in returned value or result not > 0."
-#
-#  - name: get the rc for router
-#    oc_obj:
-#      state: list
-#      kind: dc
-#      namespace: default
-#      selector: router=router
-#    register: rcout
-#  - debug:
-#      msg: "{{ rcout.results.results[0]['items'][-1]['metadata']['name'] }}"
+  - name: list oc scale for default router dc
+    oc_scale:
+      state: list
+      name: router
+      namespace: default
+      kind: dc
+    register: scaleout
+  - debug: var=scaleout
+
+  - assert:
+      that:
+      - "'result' in scaleout"
+      - scaleout.result > 0
+      msg: "Did not find 'result' in returned value or result not > 0."
+
+  - name: get the rc for router
+    oc_obj:
+      state: list
+      kind: dc
+      namespace: default
+      selector: router=router
+    register: rcout
+  - debug:
+      msg: "{{ rcout.results.results[0]['items'][-1]['metadata']['name'] }}"
 
   - name: scale dc to 1
     oc_scale:

+ 4 - 31
roles/lib_openshift/src/test/unit/oc_scale.py

@@ -10,10 +10,10 @@
 #
 # OK
 
-import mock
 import os
 import sys
 import unittest
+import mock
 
 # Removing invalid variable names for tests so that I can
 # keep them brief
@@ -26,25 +26,6 @@ sys.path.insert(0, module_path)
 from oc_scale import OCScale  # noqa: E402
 
 
-# pylint: disable=unused-argument
-def oc_cmd_mock(cmd, oadm=False, output=False, output_type='json', input_data=None):
-    '''mock command for openshift_cmd'''
-    version = '''oc v3.4.0.39
-kubernetes v1.4.0+776c994
-features: Basic-Auth GSSAPI Kerberos SPNEGO
-
-Server https://internal.api.opstest.openshift.com
-openshift v3.4.0.39
-kubernetes v1.4.0+776c994
-'''
-    if 'version' in cmd:
-        return {'stderr': None,
-                'stdout': version,
-                'returncode': 0,
-                'results': version,
-                'cmd': cmd}
-
-
 class OCScaleTest(unittest.TestCase):
     '''
      Test class for OCVersion
@@ -65,7 +46,6 @@ class OCScaleTest(unittest.TestCase):
                   'kubeconfig': '/etc/origin/master/admin.kubeconfig',
                   'debug': False}
 
-
         dc = '''{"kind": "DeploymentConfig",
                "apiVersion": "v1",
                "metadata": {
@@ -85,13 +65,10 @@ class OCScaleTest(unittest.TestCase):
                }
            }'''
 
-
         mock_openshift_cmd.side_effect = [
             {"cmd": '/usr/bin/oc get dc router -n default',
              'results': dc,
-             'returncode': 0,
-            }
-        ]
+             'returncode': 0}]
 
         results = OCScale.run_ansible(params, False)
 
@@ -109,7 +86,6 @@ class OCScaleTest(unittest.TestCase):
                   'kubeconfig': '/etc/origin/master/admin.kubeconfig',
                   'debug': False}
 
-
         dc = '''{"kind": "DeploymentConfig",
                "apiVersion": "v1",
                "metadata": {
@@ -129,16 +105,13 @@ class OCScaleTest(unittest.TestCase):
                }
            }'''
 
-
         mock_openshift_cmd.side_effect = [
             {"cmd": '/usr/bin/oc get dc router -n default',
              'results': dc,
-             'returncode': 0,
-            },
+             'returncode': 0},
             {"cmd": '/usr/bin/oc create -f /tmp/router -n default',
              'results': '',
-             'returncode': 0,
-            },
+             'returncode': 0}
         ]
 
         results = OCScale.run_ansible(params, False)

+ 24 - 26
roles/lib_openshift/src/test/unit/oc_version.py

@@ -13,6 +13,7 @@
 import os
 import sys
 import unittest
+import mock
 
 # Removing invalid variable names for tests so that I can
 # keep them brief
@@ -25,25 +26,6 @@ sys.path.insert(0, module_path)
 from oc_version import OCVersion  # noqa: E402
 
 
-# pylint: disable=unused-argument
-def oc_cmd_mock(cmd, oadm=False, output=False, output_type='json', input_data=None):
-    '''mock command for openshift_cmd'''
-    version = '''oc v3.4.0.39
-kubernetes v1.4.0+776c994
-features: Basic-Auth GSSAPI Kerberos SPNEGO
-
-Server https://internal.api.opstest.openshift.com
-openshift v3.4.0.39
-kubernetes v1.4.0+776c994
-'''
-    if 'version' in cmd:
-        return {'stderr': None,
-                'stdout': version,
-                'returncode': 0,
-                'results': version,
-                'cmd': cmd}
-
-
 class OCVersionTest(unittest.TestCase):
     '''
      Test class for OCVersion
@@ -51,15 +33,31 @@ class OCVersionTest(unittest.TestCase):
 
     def setUp(self):
         ''' setup method will create a file and set to known configuration '''
-        self.oc_ver = OCVersion(None, False)
-        self.oc_ver.openshift_cmd = oc_cmd_mock
+        pass
 
-    def test_get(self):
+    @mock.patch('oc_version.OCVersion.openshift_cmd')
+    def test_get(self, mock_openshift_cmd):
         ''' Testing a get '''
-        results = self.oc_ver.get()
-        self.assertEqual(results['oc_short'], '3.4')
-        self.assertEqual(results['oc_numeric'], '3.4.0.39')
-        self.assertEqual(results['kubernetes_numeric'], '1.4.0')
+        params = {'kubeconfig': '/etc/origin/master/admin.kubeconfig',
+                  'state': 'list',
+                  'debug': False}
+
+        mock_openshift_cmd.side_effect = [
+            {"cmd": "oc version",
+             "results": "oc v3.4.0.39\nkubernetes v1.4.0+776c994\n" +
+                        "features: Basic-Auth GSSAPI Kerberos SPNEGO\n\n" +
+                        "Server https://internal.api.opstest.openshift.com" +
+                        "openshift v3.4.0.39\n" +
+                        "kubernetes v1.4.0+776c994\n",
+             "returncode": 0}
+        ]
+
+        results = OCVersion.run_ansible(params)
+
+        self.assertFalse(results['changed'])
+        self.assertEqual(results['results']['oc_short'], '3.4')
+        self.assertEqual(results['results']['oc_numeric'], '3.4.0.39')
+        self.assertEqual(results['results']['kubernetes_numeric'], '1.4.0')
 
     def tearDown(self):
         '''TearDown method'''