{ "PathOnHost": "/dev/deviceName", "PathInContainer": "/dev/deviceName", "CgroupPermissions": "mrw"}

def devices(self, value):
        """
        { "PathOnHost": "/dev/deviceName", "PathInContainer": "/dev/deviceName", "CgroupPermissions": "mrw"}
        """

        if value is None:
            self._devices = None

        elif isinstance(value, list):
            results = []
            delimiter = ':'

            for device in value:
                if not isinstance(device, six.string_types):
                    raise TypeError("each device must be a str. {0} was passed".format(device))

                occurrences = device.count(delimiter)
                permissions = 'rwm'

                if occurrences is 0:
                    path_on_host = device
                    path_in_container = device

                elif occurrences is 1:
                    path_on_host, path_in_container = device.split(delimiter)

                elif occurrences is 2:
                    path_on_host, path_in_container, permissions = device.split(delimiter)

                    if permissions not in 'rwm':
                        raise ValueError("only permissions supported for devices are any combination of  'r' 'w' 'm'.")
                else:
                    raise ValueError(
                        """When passing devices they must be in one of the
                        following formats: path_on_host, path_on_host:path_in_container,
                        or path_on_host:path_in_container:permissions"""
                    )

                results.append("{0}:{1}:{2}".format(path_on_host, path_in_container, permissions))

            self._devices = results
        else:
            raise TypeError("devices must be a list or None.")