import re
 
 from oslo_serialization import jsonutils
+import six
 
 from yardstick.common import constants
 from yardstick.common import exceptions
 
     SSH_MOUNT_PATH = '/tmp/.ssh/'
     IMAGE_DEFAULT = 'openretriever/yardstick'
-    COMMAND_DEFAULT = '/bin/bash'
+    COMMAND_DEFAULT = ['/bin/bash', '-c']
     RESOURCES = ('requests', 'limits')
     PORT_OPTIONS = ('containerPort', 'hostIP', 'hostPort', 'name', 'protocol')
     IMAGE_PULL_POLICY = ('Always', 'IfNotPresent', 'Never')
         self._name = name
         self._ssh_key = ssh_key
         self._image = kwargs.get('image', self.IMAGE_DEFAULT)
-        self._command = [kwargs.get('command', self.COMMAND_DEFAULT)]
-        self._args = kwargs.get('args', [])
+        self._command = self._parse_commands(
+            kwargs.get('command', self.COMMAND_DEFAULT))
+        self._args = self._parse_commands(kwargs.get('args', []))
         self._volume_mounts = kwargs.get('volumeMounts', [])
         self._security_context = kwargs.get('securityContext')
         self._env = kwargs.get('env', [])
         self._ports = kwargs.get('ports', [])
         self._image_pull_policy = kwargs.get('imagePullPolicy')
 
+    @staticmethod
+    def _parse_commands(command):
+        if isinstance(command, six.string_types):
+            return [command]
+        elif isinstance(command, list):
+            return command
+        raise exceptions.KubernetesContainerCommandType()
+
     def _create_volume_mounts(self):
         """Return all "volumeMounts" items per container"""
         volume_mounts_items = [self._create_volume_mounts_item(vol)
 
             'cname', ssh_key='fake_sshkey', volumeMount=[volume_mount],
             args=args)
         expected = {'args': args,
-                    'command': [kubernetes.ContainerObject.COMMAND_DEFAULT],
+                    'command': kubernetes.ContainerObject.COMMAND_DEFAULT,
                     'image': kubernetes.ContainerObject.IMAGE_DEFAULT,
                     'name': 'cname-container',
                     'volumeMounts': container_obj._create_volume_mounts()}
             'cname', ssh_key='fake_sshkey', volumeMount=[volume_mount],
             args=args, securityContext={'key': 'value'})
         expected = {'args': args,
-                    'command': [kubernetes.ContainerObject.COMMAND_DEFAULT],
+                    'command': kubernetes.ContainerObject.COMMAND_DEFAULT,
                     'image': kubernetes.ContainerObject.IMAGE_DEFAULT,
                     'name': 'cname-container',
                     'volumeMounts': container_obj._create_volume_mounts(),
             args=args, env=[{'name': 'fake_var_name',
                              'value': 'fake_var_value'}])
         expected = {'args': args,
-                    'command': [kubernetes.ContainerObject.COMMAND_DEFAULT],
+                    'command': kubernetes.ContainerObject.COMMAND_DEFAULT,
                     'image': kubernetes.ContainerObject.IMAGE_DEFAULT,
                     'name': 'cname-container',
                     'volumeMounts': container_obj._create_volume_mounts(),
                                'invalid_varible': 'fakeinvalid_varible',
                                'hostIP': 'fake_port_number'}])
         expected = {'args': args,
-                    'command': [
-                        kubernetes.ContainerObject.COMMAND_DEFAULT],
+                    'command': kubernetes.ContainerObject.COMMAND_DEFAULT,
                     'image': kubernetes.ContainerObject.IMAGE_DEFAULT,
                     'name': 'cname-container',
                     'volumeMounts': container_obj._create_volume_mounts(),
             'cname', ssh_key='fake_sshkey', volumeMount=[volume_mount],
             args=args, resources=resources)
         expected = {'args': args,
-                    'command': [kubernetes.ContainerObject.COMMAND_DEFAULT],
+                    'command': kubernetes.ContainerObject.COMMAND_DEFAULT,
                     'image': kubernetes.ContainerObject.IMAGE_DEFAULT,
                     'name': 'cname-container',
                     'volumeMounts': container_obj._create_volume_mounts(),
         container_obj = kubernetes.ContainerObject(
             'cname', ssh_key='fake_sshkey', imagePullPolicy='Always')
         expected = {'args': [],
-                    'command': [kubernetes.ContainerObject.COMMAND_DEFAULT],
+                    'command': kubernetes.ContainerObject.COMMAND_DEFAULT,
                     'image': kubernetes.ContainerObject.IMAGE_DEFAULT,
                     'name': 'cname-container',
                     'volumeMounts': container_obj._create_volume_mounts(),
                     'imagePullPolicy':'Always'}
         self.assertEqual(expected, container_obj.get_container_item())
 
+    def test__parse_commands_string(self):
+        container_obj = kubernetes.ContainerObject('cname', 'fake_sshkey')
+        self.assertEqual(['fake command'],
+                         container_obj._parse_commands('fake command'))
+
+    def test__parse_commands_list(self):
+        container_obj = kubernetes.ContainerObject('cname', 'fake_sshkey')
+        self.assertEqual(['cmd1', 'cmd2'],
+                         container_obj._parse_commands(['cmd1', 'cmd2']))
+
+    def test__parse_commands_exception(self):
+        container_obj = kubernetes.ContainerObject('cname', 'fake_sshkey')
+        with self.assertRaises(exceptions.KubernetesContainerCommandType):
+            container_obj._parse_commands({})
+
 
 class CustomResourceDefinitionObjectTestCase(base.BaseUnitTestCase):