From d4db2dd279916c2a1f73c236deed444fed5cc740 Mon Sep 17 00:00:00 2001
From: Kenny Woodson <kwoodson@redhat.com>
Date: Thu, 16 Feb 2017 15:44:26 -0500
Subject: Fixed tests for pyyaml vs ruamel.  Added import logic.  Fixed safe
 load.

---
 roles/lib_openshift/library/oadm_manage_node.py    | 21 +++--
 roles/lib_openshift/library/oc_edit.py             | 21 +++--
 roles/lib_openshift/library/oc_env.py              | 21 +++--
 roles/lib_openshift/library/oc_label.py            | 21 +++--
 roles/lib_openshift/library/oc_obj.py              | 21 +++--
 roles/lib_openshift/library/oc_process.py          | 21 +++--
 roles/lib_openshift/library/oc_route.py            | 21 +++--
 roles/lib_openshift/library/oc_scale.py            | 21 +++--
 roles/lib_openshift/library/oc_secret.py           | 21 +++--
 roles/lib_openshift/library/oc_service.py          | 21 +++--
 roles/lib_openshift/library/oc_serviceaccount.py   | 21 +++--
 .../library/oc_serviceaccount_secret.py            | 21 +++--
 roles/lib_openshift/library/oc_version.py          | 21 +++--
 roles/lib_openshift/src/lib/base.py                | 10 ++-
 roles/lib_openshift/src/lib/import.py              |  7 +-
 .../src/test/unit/oc_serviceaccount_secret.py      | 94 ++++++++++++++++------
 16 files changed, 293 insertions(+), 91 deletions(-)

(limited to 'roles/lib_openshift')

diff --git a/roles/lib_openshift/library/oadm_manage_node.py b/roles/lib_openshift/library/oadm_manage_node.py
index 6803566e7..bd6df4c1a 100644
--- a/roles/lib_openshift/library/oadm_manage_node.py
+++ b/roles/lib_openshift/library/oadm_manage_node.py
@@ -33,6 +33,7 @@
 
 from __future__ import print_function
 import atexit
+import copy
 import json
 import os
 import re
@@ -40,7 +41,11 @@ import shutil
 import subprocess
 import tempfile
 # pylint: disable=import-error
-import ruamel.yaml as yaml
+try:
+    import ruamel.yaml as yaml
+except ImportError:
+    import yaml
+
 from ansible.module_utils.basic import AnsibleModule
 
 # -*- -*- -*- End included fragment: lib/import.py -*- -*- -*-
@@ -338,7 +343,7 @@ class Yedit(object):
         if hasattr(yaml, 'RoundTripDumper'):
             Yedit._write(self.filename, yaml.dump(self.yaml_dict, Dumper=yaml.RoundTripDumper))
         else:
-            Yedit._write(self.filename, yaml.dump(self.yaml_dict, default_flow_style=False))
+            Yedit._write(self.filename, yaml.safe_dump(self.yaml_dict, default_flow_style=False))
 
         return (True, self.yaml_dict)
 
@@ -381,7 +386,7 @@ class Yedit(object):
                 if hasattr(yaml, 'RoundTripLoader'):
                     self.yaml_dict = yaml.load(contents, yaml.RoundTripLoader)
                 else:
-                    self.yaml_dict = yaml.load(contents)
+                    self.yaml_dict = yaml.safe_load(contents)
                 # pylint: disable=no-member
                 if hasattr(self.yaml_dict, 'fa'):
                     self.yaml_dict.fa.set_block_style()
@@ -1023,7 +1028,10 @@ class Utils(object):
         tmp = Utils.create_tmpfile(prefix=rname)
 
         if ftype == 'yaml':
-            Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            if hasattr(yaml, 'RoundTripDumper'):
+                Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            else:
+                Utils._write(tmp, yaml.safe_dump(data, default_flow_style=False))
         elif ftype == 'json':
             Utils._write(tmp, json.dumps(data))
         else:
@@ -1105,7 +1113,10 @@ class Utils(object):
             contents = sfd.read()
 
         if sfile_type == 'yaml':
-            contents = yaml.load(contents, yaml.RoundTripLoader)
+            if hasattr(yaml, 'RoundTripLoader'):
+                contents = yaml.load(contents, yaml.RoundTripLoader)
+            else:
+                contents = yaml.safe_load(contents)
         elif sfile_type == 'json':
             contents = json.loads(contents)
 
diff --git a/roles/lib_openshift/library/oc_edit.py b/roles/lib_openshift/library/oc_edit.py
index bc4c7cd36..c52ae9890 100644
--- a/roles/lib_openshift/library/oc_edit.py
+++ b/roles/lib_openshift/library/oc_edit.py
@@ -33,6 +33,7 @@
 
 from __future__ import print_function
 import atexit
+import copy
 import json
 import os
 import re
@@ -40,7 +41,11 @@ import shutil
 import subprocess
 import tempfile
 # pylint: disable=import-error
-import ruamel.yaml as yaml
+try:
+    import ruamel.yaml as yaml
+except ImportError:
+    import yaml
+
 from ansible.module_utils.basic import AnsibleModule
 
 # -*- -*- -*- End included fragment: lib/import.py -*- -*- -*-
@@ -366,7 +371,7 @@ class Yedit(object):
         if hasattr(yaml, 'RoundTripDumper'):
             Yedit._write(self.filename, yaml.dump(self.yaml_dict, Dumper=yaml.RoundTripDumper))
         else:
-            Yedit._write(self.filename, yaml.dump(self.yaml_dict, default_flow_style=False))
+            Yedit._write(self.filename, yaml.safe_dump(self.yaml_dict, default_flow_style=False))
 
         return (True, self.yaml_dict)
 
@@ -409,7 +414,7 @@ class Yedit(object):
                 if hasattr(yaml, 'RoundTripLoader'):
                     self.yaml_dict = yaml.load(contents, yaml.RoundTripLoader)
                 else:
-                    self.yaml_dict = yaml.load(contents)
+                    self.yaml_dict = yaml.safe_load(contents)
                 # pylint: disable=no-member
                 if hasattr(self.yaml_dict, 'fa'):
                     self.yaml_dict.fa.set_block_style()
@@ -1051,7 +1056,10 @@ class Utils(object):
         tmp = Utils.create_tmpfile(prefix=rname)
 
         if ftype == 'yaml':
-            Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            if hasattr(yaml, 'RoundTripDumper'):
+                Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            else:
+                Utils._write(tmp, yaml.safe_dump(data, default_flow_style=False))
         elif ftype == 'json':
             Utils._write(tmp, json.dumps(data))
         else:
@@ -1133,7 +1141,10 @@ class Utils(object):
             contents = sfd.read()
 
         if sfile_type == 'yaml':
-            contents = yaml.load(contents, yaml.RoundTripLoader)
+            if hasattr(yaml, 'RoundTripLoader'):
+                contents = yaml.load(contents, yaml.RoundTripLoader)
+            else:
+                contents = yaml.safe_load(contents)
         elif sfile_type == 'json':
             contents = json.loads(contents)
 
diff --git a/roles/lib_openshift/library/oc_env.py b/roles/lib_openshift/library/oc_env.py
index 128b31fe0..72c6cdb79 100644
--- a/roles/lib_openshift/library/oc_env.py
+++ b/roles/lib_openshift/library/oc_env.py
@@ -33,6 +33,7 @@
 
 from __future__ import print_function
 import atexit
+import copy
 import json
 import os
 import re
@@ -40,7 +41,11 @@ import shutil
 import subprocess
 import tempfile
 # pylint: disable=import-error
-import ruamel.yaml as yaml
+try:
+    import ruamel.yaml as yaml
+except ImportError:
+    import yaml
+
 from ansible.module_utils.basic import AnsibleModule
 
 # -*- -*- -*- End included fragment: lib/import.py -*- -*- -*-
@@ -333,7 +338,7 @@ class Yedit(object):
         if hasattr(yaml, 'RoundTripDumper'):
             Yedit._write(self.filename, yaml.dump(self.yaml_dict, Dumper=yaml.RoundTripDumper))
         else:
-            Yedit._write(self.filename, yaml.dump(self.yaml_dict, default_flow_style=False))
+            Yedit._write(self.filename, yaml.safe_dump(self.yaml_dict, default_flow_style=False))
 
         return (True, self.yaml_dict)
 
@@ -376,7 +381,7 @@ class Yedit(object):
                 if hasattr(yaml, 'RoundTripLoader'):
                     self.yaml_dict = yaml.load(contents, yaml.RoundTripLoader)
                 else:
-                    self.yaml_dict = yaml.load(contents)
+                    self.yaml_dict = yaml.safe_load(contents)
                 # pylint: disable=no-member
                 if hasattr(self.yaml_dict, 'fa'):
                     self.yaml_dict.fa.set_block_style()
@@ -1018,7 +1023,10 @@ class Utils(object):
         tmp = Utils.create_tmpfile(prefix=rname)
 
         if ftype == 'yaml':
-            Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            if hasattr(yaml, 'RoundTripDumper'):
+                Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            else:
+                Utils._write(tmp, yaml.safe_dump(data, default_flow_style=False))
         elif ftype == 'json':
             Utils._write(tmp, json.dumps(data))
         else:
@@ -1100,7 +1108,10 @@ class Utils(object):
             contents = sfd.read()
 
         if sfile_type == 'yaml':
-            contents = yaml.load(contents, yaml.RoundTripLoader)
+            if hasattr(yaml, 'RoundTripLoader'):
+                contents = yaml.load(contents, yaml.RoundTripLoader)
+            else:
+                contents = yaml.safe_load(contents)
         elif sfile_type == 'json':
             contents = json.loads(contents)
 
diff --git a/roles/lib_openshift/library/oc_label.py b/roles/lib_openshift/library/oc_label.py
index 471649395..43d81f582 100644
--- a/roles/lib_openshift/library/oc_label.py
+++ b/roles/lib_openshift/library/oc_label.py
@@ -33,6 +33,7 @@
 
 from __future__ import print_function
 import atexit
+import copy
 import json
 import os
 import re
@@ -40,7 +41,11 @@ import shutil
 import subprocess
 import tempfile
 # pylint: disable=import-error
-import ruamel.yaml as yaml
+try:
+    import ruamel.yaml as yaml
+except ImportError:
+    import yaml
+
 from ansible.module_utils.basic import AnsibleModule
 
 # -*- -*- -*- End included fragment: lib/import.py -*- -*- -*-
@@ -342,7 +347,7 @@ class Yedit(object):
         if hasattr(yaml, 'RoundTripDumper'):
             Yedit._write(self.filename, yaml.dump(self.yaml_dict, Dumper=yaml.RoundTripDumper))
         else:
-            Yedit._write(self.filename, yaml.dump(self.yaml_dict, default_flow_style=False))
+            Yedit._write(self.filename, yaml.safe_dump(self.yaml_dict, default_flow_style=False))
 
         return (True, self.yaml_dict)
 
@@ -385,7 +390,7 @@ class Yedit(object):
                 if hasattr(yaml, 'RoundTripLoader'):
                     self.yaml_dict = yaml.load(contents, yaml.RoundTripLoader)
                 else:
-                    self.yaml_dict = yaml.load(contents)
+                    self.yaml_dict = yaml.safe_load(contents)
                 # pylint: disable=no-member
                 if hasattr(self.yaml_dict, 'fa'):
                     self.yaml_dict.fa.set_block_style()
@@ -1027,7 +1032,10 @@ class Utils(object):
         tmp = Utils.create_tmpfile(prefix=rname)
 
         if ftype == 'yaml':
-            Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            if hasattr(yaml, 'RoundTripDumper'):
+                Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            else:
+                Utils._write(tmp, yaml.safe_dump(data, default_flow_style=False))
         elif ftype == 'json':
             Utils._write(tmp, json.dumps(data))
         else:
@@ -1109,7 +1117,10 @@ class Utils(object):
             contents = sfd.read()
 
         if sfile_type == 'yaml':
-            contents = yaml.load(contents, yaml.RoundTripLoader)
+            if hasattr(yaml, 'RoundTripLoader'):
+                contents = yaml.load(contents, yaml.RoundTripLoader)
+            else:
+                contents = yaml.safe_load(contents)
         elif sfile_type == 'json':
             contents = json.loads(contents)
 
diff --git a/roles/lib_openshift/library/oc_obj.py b/roles/lib_openshift/library/oc_obj.py
index 8de4fd75f..a8d853823 100644
--- a/roles/lib_openshift/library/oc_obj.py
+++ b/roles/lib_openshift/library/oc_obj.py
@@ -33,6 +33,7 @@
 
 from __future__ import print_function
 import atexit
+import copy
 import json
 import os
 import re
@@ -40,7 +41,11 @@ import shutil
 import subprocess
 import tempfile
 # pylint: disable=import-error
-import ruamel.yaml as yaml
+try:
+    import ruamel.yaml as yaml
+except ImportError:
+    import yaml
+
 from ansible.module_utils.basic import AnsibleModule
 
 # -*- -*- -*- End included fragment: lib/import.py -*- -*- -*-
@@ -345,7 +350,7 @@ class Yedit(object):
         if hasattr(yaml, 'RoundTripDumper'):
             Yedit._write(self.filename, yaml.dump(self.yaml_dict, Dumper=yaml.RoundTripDumper))
         else:
-            Yedit._write(self.filename, yaml.dump(self.yaml_dict, default_flow_style=False))
+            Yedit._write(self.filename, yaml.safe_dump(self.yaml_dict, default_flow_style=False))
 
         return (True, self.yaml_dict)
 
@@ -388,7 +393,7 @@ class Yedit(object):
                 if hasattr(yaml, 'RoundTripLoader'):
                     self.yaml_dict = yaml.load(contents, yaml.RoundTripLoader)
                 else:
-                    self.yaml_dict = yaml.load(contents)
+                    self.yaml_dict = yaml.safe_load(contents)
                 # pylint: disable=no-member
                 if hasattr(self.yaml_dict, 'fa'):
                     self.yaml_dict.fa.set_block_style()
@@ -1030,7 +1035,10 @@ class Utils(object):
         tmp = Utils.create_tmpfile(prefix=rname)
 
         if ftype == 'yaml':
-            Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            if hasattr(yaml, 'RoundTripDumper'):
+                Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            else:
+                Utils._write(tmp, yaml.safe_dump(data, default_flow_style=False))
         elif ftype == 'json':
             Utils._write(tmp, json.dumps(data))
         else:
@@ -1112,7 +1120,10 @@ class Utils(object):
             contents = sfd.read()
 
         if sfile_type == 'yaml':
-            contents = yaml.load(contents, yaml.RoundTripLoader)
+            if hasattr(yaml, 'RoundTripLoader'):
+                contents = yaml.load(contents, yaml.RoundTripLoader)
+            else:
+                contents = yaml.safe_load(contents)
         elif sfile_type == 'json':
             contents = json.loads(contents)
 
diff --git a/roles/lib_openshift/library/oc_process.py b/roles/lib_openshift/library/oc_process.py
index 5b3a26593..2e0672bf8 100644
--- a/roles/lib_openshift/library/oc_process.py
+++ b/roles/lib_openshift/library/oc_process.py
@@ -33,6 +33,7 @@
 
 from __future__ import print_function
 import atexit
+import copy
 import json
 import os
 import re
@@ -40,7 +41,11 @@ import shutil
 import subprocess
 import tempfile
 # pylint: disable=import-error
-import ruamel.yaml as yaml
+try:
+    import ruamel.yaml as yaml
+except ImportError:
+    import yaml
+
 from ansible.module_utils.basic import AnsibleModule
 
 # -*- -*- -*- End included fragment: lib/import.py -*- -*- -*-
@@ -334,7 +339,7 @@ class Yedit(object):
         if hasattr(yaml, 'RoundTripDumper'):
             Yedit._write(self.filename, yaml.dump(self.yaml_dict, Dumper=yaml.RoundTripDumper))
         else:
-            Yedit._write(self.filename, yaml.dump(self.yaml_dict, default_flow_style=False))
+            Yedit._write(self.filename, yaml.safe_dump(self.yaml_dict, default_flow_style=False))
 
         return (True, self.yaml_dict)
 
@@ -377,7 +382,7 @@ class Yedit(object):
                 if hasattr(yaml, 'RoundTripLoader'):
                     self.yaml_dict = yaml.load(contents, yaml.RoundTripLoader)
                 else:
-                    self.yaml_dict = yaml.load(contents)
+                    self.yaml_dict = yaml.safe_load(contents)
                 # pylint: disable=no-member
                 if hasattr(self.yaml_dict, 'fa'):
                     self.yaml_dict.fa.set_block_style()
@@ -1019,7 +1024,10 @@ class Utils(object):
         tmp = Utils.create_tmpfile(prefix=rname)
 
         if ftype == 'yaml':
-            Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            if hasattr(yaml, 'RoundTripDumper'):
+                Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            else:
+                Utils._write(tmp, yaml.safe_dump(data, default_flow_style=False))
         elif ftype == 'json':
             Utils._write(tmp, json.dumps(data))
         else:
@@ -1101,7 +1109,10 @@ class Utils(object):
             contents = sfd.read()
 
         if sfile_type == 'yaml':
-            contents = yaml.load(contents, yaml.RoundTripLoader)
+            if hasattr(yaml, 'RoundTripLoader'):
+                contents = yaml.load(contents, yaml.RoundTripLoader)
+            else:
+                contents = yaml.safe_load(contents)
         elif sfile_type == 'json':
             contents = json.loads(contents)
 
diff --git a/roles/lib_openshift/library/oc_route.py b/roles/lib_openshift/library/oc_route.py
index 715ce1cdc..55eca1f8d 100644
--- a/roles/lib_openshift/library/oc_route.py
+++ b/roles/lib_openshift/library/oc_route.py
@@ -33,6 +33,7 @@
 
 from __future__ import print_function
 import atexit
+import copy
 import json
 import os
 import re
@@ -40,7 +41,11 @@ import shutil
 import subprocess
 import tempfile
 # pylint: disable=import-error
-import ruamel.yaml as yaml
+try:
+    import ruamel.yaml as yaml
+except ImportError:
+    import yaml
+
 from ansible.module_utils.basic import AnsibleModule
 
 # -*- -*- -*- End included fragment: lib/import.py -*- -*- -*-
@@ -376,7 +381,7 @@ class Yedit(object):
         if hasattr(yaml, 'RoundTripDumper'):
             Yedit._write(self.filename, yaml.dump(self.yaml_dict, Dumper=yaml.RoundTripDumper))
         else:
-            Yedit._write(self.filename, yaml.dump(self.yaml_dict, default_flow_style=False))
+            Yedit._write(self.filename, yaml.safe_dump(self.yaml_dict, default_flow_style=False))
 
         return (True, self.yaml_dict)
 
@@ -419,7 +424,7 @@ class Yedit(object):
                 if hasattr(yaml, 'RoundTripLoader'):
                     self.yaml_dict = yaml.load(contents, yaml.RoundTripLoader)
                 else:
-                    self.yaml_dict = yaml.load(contents)
+                    self.yaml_dict = yaml.safe_load(contents)
                 # pylint: disable=no-member
                 if hasattr(self.yaml_dict, 'fa'):
                     self.yaml_dict.fa.set_block_style()
@@ -1061,7 +1066,10 @@ class Utils(object):
         tmp = Utils.create_tmpfile(prefix=rname)
 
         if ftype == 'yaml':
-            Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            if hasattr(yaml, 'RoundTripDumper'):
+                Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            else:
+                Utils._write(tmp, yaml.safe_dump(data, default_flow_style=False))
         elif ftype == 'json':
             Utils._write(tmp, json.dumps(data))
         else:
@@ -1143,7 +1151,10 @@ class Utils(object):
             contents = sfd.read()
 
         if sfile_type == 'yaml':
-            contents = yaml.load(contents, yaml.RoundTripLoader)
+            if hasattr(yaml, 'RoundTripLoader'):
+                contents = yaml.load(contents, yaml.RoundTripLoader)
+            else:
+                contents = yaml.safe_load(contents)
         elif sfile_type == 'json':
             contents = json.loads(contents)
 
diff --git a/roles/lib_openshift/library/oc_scale.py b/roles/lib_openshift/library/oc_scale.py
index c88755a8d..c76c864df 100644
--- a/roles/lib_openshift/library/oc_scale.py
+++ b/roles/lib_openshift/library/oc_scale.py
@@ -33,6 +33,7 @@
 
 from __future__ import print_function
 import atexit
+import copy
 import json
 import os
 import re
@@ -40,7 +41,11 @@ import shutil
 import subprocess
 import tempfile
 # pylint: disable=import-error
-import ruamel.yaml as yaml
+try:
+    import ruamel.yaml as yaml
+except ImportError:
+    import yaml
+
 from ansible.module_utils.basic import AnsibleModule
 
 # -*- -*- -*- End included fragment: lib/import.py -*- -*- -*-
@@ -320,7 +325,7 @@ class Yedit(object):
         if hasattr(yaml, 'RoundTripDumper'):
             Yedit._write(self.filename, yaml.dump(self.yaml_dict, Dumper=yaml.RoundTripDumper))
         else:
-            Yedit._write(self.filename, yaml.dump(self.yaml_dict, default_flow_style=False))
+            Yedit._write(self.filename, yaml.safe_dump(self.yaml_dict, default_flow_style=False))
 
         return (True, self.yaml_dict)
 
@@ -363,7 +368,7 @@ class Yedit(object):
                 if hasattr(yaml, 'RoundTripLoader'):
                     self.yaml_dict = yaml.load(contents, yaml.RoundTripLoader)
                 else:
-                    self.yaml_dict = yaml.load(contents)
+                    self.yaml_dict = yaml.safe_load(contents)
                 # pylint: disable=no-member
                 if hasattr(self.yaml_dict, 'fa'):
                     self.yaml_dict.fa.set_block_style()
@@ -1005,7 +1010,10 @@ class Utils(object):
         tmp = Utils.create_tmpfile(prefix=rname)
 
         if ftype == 'yaml':
-            Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            if hasattr(yaml, 'RoundTripDumper'):
+                Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            else:
+                Utils._write(tmp, yaml.safe_dump(data, default_flow_style=False))
         elif ftype == 'json':
             Utils._write(tmp, json.dumps(data))
         else:
@@ -1087,7 +1095,10 @@ class Utils(object):
             contents = sfd.read()
 
         if sfile_type == 'yaml':
-            contents = yaml.load(contents, yaml.RoundTripLoader)
+            if hasattr(yaml, 'RoundTripLoader'):
+                contents = yaml.load(contents, yaml.RoundTripLoader)
+            else:
+                contents = yaml.safe_load(contents)
         elif sfile_type == 'json':
             contents = json.loads(contents)
 
diff --git a/roles/lib_openshift/library/oc_secret.py b/roles/lib_openshift/library/oc_secret.py
index 79e481d8c..dedd18645 100644
--- a/roles/lib_openshift/library/oc_secret.py
+++ b/roles/lib_openshift/library/oc_secret.py
@@ -33,6 +33,7 @@
 
 from __future__ import print_function
 import atexit
+import copy
 import json
 import os
 import re
@@ -40,7 +41,11 @@ import shutil
 import subprocess
 import tempfile
 # pylint: disable=import-error
-import ruamel.yaml as yaml
+try:
+    import ruamel.yaml as yaml
+except ImportError:
+    import yaml
+
 from ansible.module_utils.basic import AnsibleModule
 
 # -*- -*- -*- End included fragment: lib/import.py -*- -*- -*-
@@ -366,7 +371,7 @@ class Yedit(object):
         if hasattr(yaml, 'RoundTripDumper'):
             Yedit._write(self.filename, yaml.dump(self.yaml_dict, Dumper=yaml.RoundTripDumper))
         else:
-            Yedit._write(self.filename, yaml.dump(self.yaml_dict, default_flow_style=False))
+            Yedit._write(self.filename, yaml.safe_dump(self.yaml_dict, default_flow_style=False))
 
         return (True, self.yaml_dict)
 
@@ -409,7 +414,7 @@ class Yedit(object):
                 if hasattr(yaml, 'RoundTripLoader'):
                     self.yaml_dict = yaml.load(contents, yaml.RoundTripLoader)
                 else:
-                    self.yaml_dict = yaml.load(contents)
+                    self.yaml_dict = yaml.safe_load(contents)
                 # pylint: disable=no-member
                 if hasattr(self.yaml_dict, 'fa'):
                     self.yaml_dict.fa.set_block_style()
@@ -1051,7 +1056,10 @@ class Utils(object):
         tmp = Utils.create_tmpfile(prefix=rname)
 
         if ftype == 'yaml':
-            Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            if hasattr(yaml, 'RoundTripDumper'):
+                Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            else:
+                Utils._write(tmp, yaml.safe_dump(data, default_flow_style=False))
         elif ftype == 'json':
             Utils._write(tmp, json.dumps(data))
         else:
@@ -1133,7 +1141,10 @@ class Utils(object):
             contents = sfd.read()
 
         if sfile_type == 'yaml':
-            contents = yaml.load(contents, yaml.RoundTripLoader)
+            if hasattr(yaml, 'RoundTripLoader'):
+                contents = yaml.load(contents, yaml.RoundTripLoader)
+            else:
+                contents = yaml.safe_load(contents)
         elif sfile_type == 'json':
             contents = json.loads(contents)
 
diff --git a/roles/lib_openshift/library/oc_service.py b/roles/lib_openshift/library/oc_service.py
index fc0889696..dfc05d022 100644
--- a/roles/lib_openshift/library/oc_service.py
+++ b/roles/lib_openshift/library/oc_service.py
@@ -33,6 +33,7 @@
 
 from __future__ import print_function
 import atexit
+import copy
 import json
 import os
 import re
@@ -40,7 +41,11 @@ import shutil
 import subprocess
 import tempfile
 # pylint: disable=import-error
-import ruamel.yaml as yaml
+try:
+    import ruamel.yaml as yaml
+except ImportError:
+    import yaml
+
 from ansible.module_utils.basic import AnsibleModule
 
 # -*- -*- -*- End included fragment: lib/import.py -*- -*- -*-
@@ -372,7 +377,7 @@ class Yedit(object):
         if hasattr(yaml, 'RoundTripDumper'):
             Yedit._write(self.filename, yaml.dump(self.yaml_dict, Dumper=yaml.RoundTripDumper))
         else:
-            Yedit._write(self.filename, yaml.dump(self.yaml_dict, default_flow_style=False))
+            Yedit._write(self.filename, yaml.safe_dump(self.yaml_dict, default_flow_style=False))
 
         return (True, self.yaml_dict)
 
@@ -415,7 +420,7 @@ class Yedit(object):
                 if hasattr(yaml, 'RoundTripLoader'):
                     self.yaml_dict = yaml.load(contents, yaml.RoundTripLoader)
                 else:
-                    self.yaml_dict = yaml.load(contents)
+                    self.yaml_dict = yaml.safe_load(contents)
                 # pylint: disable=no-member
                 if hasattr(self.yaml_dict, 'fa'):
                     self.yaml_dict.fa.set_block_style()
@@ -1057,7 +1062,10 @@ class Utils(object):
         tmp = Utils.create_tmpfile(prefix=rname)
 
         if ftype == 'yaml':
-            Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            if hasattr(yaml, 'RoundTripDumper'):
+                Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            else:
+                Utils._write(tmp, yaml.safe_dump(data, default_flow_style=False))
         elif ftype == 'json':
             Utils._write(tmp, json.dumps(data))
         else:
@@ -1139,7 +1147,10 @@ class Utils(object):
             contents = sfd.read()
 
         if sfile_type == 'yaml':
-            contents = yaml.load(contents, yaml.RoundTripLoader)
+            if hasattr(yaml, 'RoundTripLoader'):
+                contents = yaml.load(contents, yaml.RoundTripLoader)
+            else:
+                contents = yaml.safe_load(contents)
         elif sfile_type == 'json':
             contents = json.loads(contents)
 
diff --git a/roles/lib_openshift/library/oc_serviceaccount.py b/roles/lib_openshift/library/oc_serviceaccount.py
index 4dc437ba8..258d41566 100644
--- a/roles/lib_openshift/library/oc_serviceaccount.py
+++ b/roles/lib_openshift/library/oc_serviceaccount.py
@@ -33,6 +33,7 @@
 
 from __future__ import print_function
 import atexit
+import copy
 import json
 import os
 import re
@@ -40,7 +41,11 @@ import shutil
 import subprocess
 import tempfile
 # pylint: disable=import-error
-import ruamel.yaml as yaml
+try:
+    import ruamel.yaml as yaml
+except ImportError:
+    import yaml
+
 from ansible.module_utils.basic import AnsibleModule
 
 # -*- -*- -*- End included fragment: lib/import.py -*- -*- -*-
@@ -318,7 +323,7 @@ class Yedit(object):
         if hasattr(yaml, 'RoundTripDumper'):
             Yedit._write(self.filename, yaml.dump(self.yaml_dict, Dumper=yaml.RoundTripDumper))
         else:
-            Yedit._write(self.filename, yaml.dump(self.yaml_dict, default_flow_style=False))
+            Yedit._write(self.filename, yaml.safe_dump(self.yaml_dict, default_flow_style=False))
 
         return (True, self.yaml_dict)
 
@@ -361,7 +366,7 @@ class Yedit(object):
                 if hasattr(yaml, 'RoundTripLoader'):
                     self.yaml_dict = yaml.load(contents, yaml.RoundTripLoader)
                 else:
-                    self.yaml_dict = yaml.load(contents)
+                    self.yaml_dict = yaml.safe_load(contents)
                 # pylint: disable=no-member
                 if hasattr(self.yaml_dict, 'fa'):
                     self.yaml_dict.fa.set_block_style()
@@ -1003,7 +1008,10 @@ class Utils(object):
         tmp = Utils.create_tmpfile(prefix=rname)
 
         if ftype == 'yaml':
-            Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            if hasattr(yaml, 'RoundTripDumper'):
+                Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            else:
+                Utils._write(tmp, yaml.safe_dump(data, default_flow_style=False))
         elif ftype == 'json':
             Utils._write(tmp, json.dumps(data))
         else:
@@ -1085,7 +1093,10 @@ class Utils(object):
             contents = sfd.read()
 
         if sfile_type == 'yaml':
-            contents = yaml.load(contents, yaml.RoundTripLoader)
+            if hasattr(yaml, 'RoundTripLoader'):
+                contents = yaml.load(contents, yaml.RoundTripLoader)
+            else:
+                contents = yaml.safe_load(contents)
         elif sfile_type == 'json':
             contents = json.loads(contents)
 
diff --git a/roles/lib_openshift/library/oc_serviceaccount_secret.py b/roles/lib_openshift/library/oc_serviceaccount_secret.py
index faab244a1..3eb20779c 100644
--- a/roles/lib_openshift/library/oc_serviceaccount_secret.py
+++ b/roles/lib_openshift/library/oc_serviceaccount_secret.py
@@ -33,6 +33,7 @@
 
 from __future__ import print_function
 import atexit
+import copy
 import json
 import os
 import re
@@ -40,7 +41,11 @@ import shutil
 import subprocess
 import tempfile
 # pylint: disable=import-error
-import ruamel.yaml as yaml
+try:
+    import ruamel.yaml as yaml
+except ImportError:
+    import yaml
+
 from ansible.module_utils.basic import AnsibleModule
 
 # -*- -*- -*- End included fragment: lib/import.py -*- -*- -*-
@@ -318,7 +323,7 @@ class Yedit(object):
         if hasattr(yaml, 'RoundTripDumper'):
             Yedit._write(self.filename, yaml.dump(self.yaml_dict, Dumper=yaml.RoundTripDumper))
         else:
-            Yedit._write(self.filename, yaml.dump(self.yaml_dict, default_flow_style=False))
+            Yedit._write(self.filename, yaml.safe_dump(self.yaml_dict, default_flow_style=False))
 
         return (True, self.yaml_dict)
 
@@ -361,7 +366,7 @@ class Yedit(object):
                 if hasattr(yaml, 'RoundTripLoader'):
                     self.yaml_dict = yaml.load(contents, yaml.RoundTripLoader)
                 else:
-                    self.yaml_dict = yaml.load(contents)
+                    self.yaml_dict = yaml.safe_load(contents)
                 # pylint: disable=no-member
                 if hasattr(self.yaml_dict, 'fa'):
                     self.yaml_dict.fa.set_block_style()
@@ -1003,7 +1008,10 @@ class Utils(object):
         tmp = Utils.create_tmpfile(prefix=rname)
 
         if ftype == 'yaml':
-            Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            if hasattr(yaml, 'RoundTripDumper'):
+                Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            else:
+                Utils._write(tmp, yaml.safe_dump(data, default_flow_style=False))
         elif ftype == 'json':
             Utils._write(tmp, json.dumps(data))
         else:
@@ -1085,7 +1093,10 @@ class Utils(object):
             contents = sfd.read()
 
         if sfile_type == 'yaml':
-            contents = yaml.load(contents, yaml.RoundTripLoader)
+            if hasattr(yaml, 'RoundTripLoader'):
+                contents = yaml.load(contents, yaml.RoundTripLoader)
+            else:
+                contents = yaml.safe_load(contents)
         elif sfile_type == 'json':
             contents = json.loads(contents)
 
diff --git a/roles/lib_openshift/library/oc_version.py b/roles/lib_openshift/library/oc_version.py
index 634bb2920..c619e9ce8 100644
--- a/roles/lib_openshift/library/oc_version.py
+++ b/roles/lib_openshift/library/oc_version.py
@@ -33,6 +33,7 @@
 
 from __future__ import print_function
 import atexit
+import copy
 import json
 import os
 import re
@@ -40,7 +41,11 @@ import shutil
 import subprocess
 import tempfile
 # pylint: disable=import-error
-import ruamel.yaml as yaml
+try:
+    import ruamel.yaml as yaml
+except ImportError:
+    import yaml
+
 from ansible.module_utils.basic import AnsibleModule
 
 # -*- -*- -*- End included fragment: lib/import.py -*- -*- -*-
@@ -290,7 +295,7 @@ class Yedit(object):
         if hasattr(yaml, 'RoundTripDumper'):
             Yedit._write(self.filename, yaml.dump(self.yaml_dict, Dumper=yaml.RoundTripDumper))
         else:
-            Yedit._write(self.filename, yaml.dump(self.yaml_dict, default_flow_style=False))
+            Yedit._write(self.filename, yaml.safe_dump(self.yaml_dict, default_flow_style=False))
 
         return (True, self.yaml_dict)
 
@@ -333,7 +338,7 @@ class Yedit(object):
                 if hasattr(yaml, 'RoundTripLoader'):
                     self.yaml_dict = yaml.load(contents, yaml.RoundTripLoader)
                 else:
-                    self.yaml_dict = yaml.load(contents)
+                    self.yaml_dict = yaml.safe_load(contents)
                 # pylint: disable=no-member
                 if hasattr(self.yaml_dict, 'fa'):
                     self.yaml_dict.fa.set_block_style()
@@ -975,7 +980,10 @@ class Utils(object):
         tmp = Utils.create_tmpfile(prefix=rname)
 
         if ftype == 'yaml':
-            Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            if hasattr(yaml, 'RoundTripDumper'):
+                Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            else:
+                Utils._write(tmp, yaml.safe_dump(data, default_flow_style=False))
         elif ftype == 'json':
             Utils._write(tmp, json.dumps(data))
         else:
@@ -1057,7 +1065,10 @@ class Utils(object):
             contents = sfd.read()
 
         if sfile_type == 'yaml':
-            contents = yaml.load(contents, yaml.RoundTripLoader)
+            if hasattr(yaml, 'RoundTripLoader'):
+                contents = yaml.load(contents, yaml.RoundTripLoader)
+            else:
+                contents = yaml.safe_load(contents)
         elif sfile_type == 'json':
             contents = json.loads(contents)
 
diff --git a/roles/lib_openshift/src/lib/base.py b/roles/lib_openshift/src/lib/base.py
index a895b40b3..0b37862c9 100644
--- a/roles/lib_openshift/src/lib/base.py
+++ b/roles/lib_openshift/src/lib/base.py
@@ -295,7 +295,10 @@ class Utils(object):
         tmp = Utils.create_tmpfile(prefix=rname)
 
         if ftype == 'yaml':
-            Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            if hasattr(yaml, 'RoundTripDumper'):
+                Utils._write(tmp, yaml.dump(data, Dumper=yaml.RoundTripDumper))
+            else:
+                Utils._write(tmp, yaml.safe_dump(data, default_flow_style=False))
         elif ftype == 'json':
             Utils._write(tmp, json.dumps(data))
         else:
@@ -377,7 +380,10 @@ class Utils(object):
             contents = sfd.read()
 
         if sfile_type == 'yaml':
-            contents = yaml.load(contents, yaml.RoundTripLoader)
+            if hasattr(yaml, 'RoundTripLoader'):
+                contents = yaml.load(contents, yaml.RoundTripLoader)
+            else:
+                contents = yaml.safe_load(contents)
         elif sfile_type == 'json':
             contents = json.loads(contents)
 
diff --git a/roles/lib_openshift/src/lib/import.py b/roles/lib_openshift/src/lib/import.py
index 6344c1a54..a79297898 100644
--- a/roles/lib_openshift/src/lib/import.py
+++ b/roles/lib_openshift/src/lib/import.py
@@ -7,6 +7,7 @@
 
 from __future__ import print_function
 import atexit
+import copy
 import json
 import os
 import re
@@ -14,5 +15,9 @@ import shutil
 import subprocess
 import tempfile
 # pylint: disable=import-error
-import ruamel.yaml as yaml
+try:
+    import ruamel.yaml as yaml
+except ImportError:
+    import yaml
+
 from ansible.module_utils.basic import AnsibleModule
diff --git a/roles/lib_openshift/src/test/unit/oc_serviceaccount_secret.py b/roles/lib_openshift/src/test/unit/oc_serviceaccount_secret.py
index 4d555d412..1eb7dd3be 100755
--- a/roles/lib_openshift/src/test/unit/oc_serviceaccount_secret.py
+++ b/roles/lib_openshift/src/test/unit/oc_serviceaccount_secret.py
@@ -25,6 +25,12 @@ module_path = os.path.join('/'.join(os.path.realpath(__file__).split('/')[:-4]),
 sys.path.insert(0, module_path)
 from oc_serviceaccount_secret import OCServiceAccountSecret  # noqa: E402
 
+try:
+    import ruamel.yaml as yaml
+    YAML_TYPE='ruamel'
+except ImportError:
+    YAML_TYPE='pyyaml'
+
 
 class OCServiceAccountSecretTest(unittest.TestCase):
     '''
@@ -54,8 +60,13 @@ class OCServiceAccountSecretTest(unittest.TestCase):
         }
 
         oc_get_sa_before = '''{
-            "kind": "ServiceAccount",
             "apiVersion": "v1",
+            "imagePullSecrets": [
+                {
+                    "name": "builder-dockercfg-rsrua"
+                }
+            ],
+            "kind": "ServiceAccount",
             "metadata": {
                 "name": "builder",
                 "namespace": "default",
@@ -72,18 +83,18 @@ class OCServiceAccountSecretTest(unittest.TestCase):
                     "name": "builder-token-akqxi"
                 }
 
-            ],
-            "imagePullSecrets": [
-                {
-                    "name": "builder-dockercfg-rsrua"
-                }
             ]
         }
         '''
 
         oc_get_sa_after = '''{
-            "kind": "ServiceAccount",
             "apiVersion": "v1",
+            "imagePullSecrets": [
+                {
+                    "name": "builder-dockercfg-rsrua"
+                }
+            ],
+            "kind": "ServiceAccount",
             "metadata": {
                 "name": "builder",
                 "namespace": "default",
@@ -103,16 +114,10 @@ class OCServiceAccountSecretTest(unittest.TestCase):
                     "name": "newsecret"
                 }
 
-            ],
-            "imagePullSecrets": [
-                {
-                    "name": "builder-dockercfg-rsrua"
-                }
             ]
         }
         '''
-
-        builder_yaml_file = '''\
+        builder_ryaml_file = '''\
 secrets:
 - name: builder-dockercfg-rsrua
 - name: builder-token-akqxi
@@ -130,6 +135,24 @@ metadata:
   uid: cf47bca7-ebc4-11e6-b041-0ed9df7abc38
 '''
 
+        builder_pyyaml_file = '''\
+apiVersion: v1
+imagePullSecrets:
+- name: builder-dockercfg-rsrua
+kind: ServiceAccount
+metadata:
+  creationTimestamp: '2017-02-05T17:02:00Z'
+  name: builder
+  namespace: default
+  resourceVersion: '302879'
+  selfLink: /api/v1/namespaces/default/serviceaccounts/builder
+  uid: cf47bca7-ebc4-11e6-b041-0ed9df7abc38
+secrets:
+- name: builder-dockercfg-rsrua
+- name: builder-token-akqxi
+- name: newsecret
+'''
+
         # Return values of our mocked function call. These get returned once per call.
         mock_cmd.side_effect = [
             (0, oc_get_sa_before, ''),  # First call to the mock
@@ -158,8 +181,12 @@ metadata:
             mock.call(['oc', '-n', 'default', 'get', 'sa', 'builder', '-o', 'json'], None)
         ])
 
+        yaml_file = builder_pyyaml_file
+
+        if YAML_TYPE == 'ruamel':
+            yaml_file = builder_ryaml_file
         mock_write.assert_has_calls([
-            mock.call(mock.ANY, builder_yaml_file)
+            mock.call(mock.ANY, yaml_file)
         ])
 
     @mock.patch('oc_serviceaccount_secret.Utils.create_tmpfile_copy')
@@ -181,8 +208,13 @@ metadata:
         }
 
         oc_get_sa_before = '''{
-            "kind": "ServiceAccount",
             "apiVersion": "v1",
+            "imagePullSecrets": [
+                {
+                    "name": "builder-dockercfg-rsrua"
+                }
+            ],
+            "kind": "ServiceAccount",
             "metadata": {
                 "name": "builder",
                 "namespace": "default",
@@ -202,16 +234,11 @@ metadata:
                     "name": "newsecret"
                 }
 
-            ],
-            "imagePullSecrets": [
-                {
-                    "name": "builder-dockercfg-rsrua"
-                }
             ]
         }
         '''
 
-        builder_yaml_file = '''\
+        builder_ryaml_file = '''\
 secrets:
 - name: builder-dockercfg-rsrua
 - name: builder-token-akqxi
@@ -228,6 +255,23 @@ metadata:
   uid: cf47bca7-ebc4-11e6-b041-0ed9df7abc38
 '''
 
+        builder_pyyaml_file = '''\
+apiVersion: v1
+imagePullSecrets:
+- name: builder-dockercfg-rsrua
+kind: ServiceAccount
+metadata:
+  creationTimestamp: '2017-02-05T17:02:00Z'
+  name: builder
+  namespace: default
+  resourceVersion: '302879'
+  selfLink: /api/v1/namespaces/default/serviceaccounts/builder
+  uid: cf47bca7-ebc4-11e6-b041-0ed9df7abc38
+secrets:
+- name: builder-dockercfg-rsrua
+- name: builder-token-akqxi
+'''
+
         # Return values of our mocked function call. These get returned once per call.
         mock_cmd.side_effect = [
             (0, oc_get_sa_before, ''),  # First call to the mock
@@ -254,8 +298,12 @@ metadata:
             mock.call(['oc', '-n', 'default', 'replace', '-f', mock.ANY], None),
         ])
 
+        yaml_file = builder_pyyaml_file
+
+        if YAML_TYPE == 'ruamel':
+            yaml_file = builder_ryaml_file
         mock_write.assert_has_calls([
-            mock.call(mock.ANY, builder_yaml_file)
+            mock.call(mock.ANY, yaml_file)
         ])
 
     def tearDown(self):
-- 
cgit v1.2.3