Upload object

        :param container: container name (Container is equivalent to
                          Bucket term in Amazon).
        :param obj: object name (Object is equivalent to
                    Key term in Amazon).
        :param contents: object content.
        :param content_length(int): content length.
        :param metadata (dict): addition infomation.
        :param **kwargs(dict): extend args for specific driver.

def upload_object(self, container, obj, contents,
                      content_length=None, metadata=None, **kwargs):
        """Upload object

        :param container: container name (Container is equivalent to
                          Bucket term in Amazon).
        :param obj: object name (Object is equivalent to
                    Key term in Amazon).
        :param contents: object content.
        :param content_length(int): content length.
        :param metadata (dict): addition infomation.
        :param **kwargs(dict): extend args for specific driver.
        """
        try:
            LOG.debug('upload_object() with %s is success.', self.driver)
            return self.driver.upload_object(container, obj,
                                             contents=contents,
                                             content_length=content_length,
                                             metadata=metadata,
                                             **kwargs)
        except DriverException as e:
            LOG.exception('upload_object() with %s raised\
                            an exception %s.', self.driver, e)