code: def update(self, resource, uri=None, force=False, timeout=-1, custom_headers=None, default_values={}):
          
          if not resource:
              logger.exception(RESOURCE_CLIENT_RESOURCE_WAS_NOT_PROVIDED)
              raise ValueError(RESOURCE_CLIENT_RESOURCE_WAS_NOT_PROVIDED)
  
          logger.debug('Update async (uri = %s, resource = %s)' %
                       (self._uri, str(resource)))
  
          if not uri:
              uri = resource['uri']
  
          if force:
              uri += '?force=True'
  
          resource = self.merge_default_values(resource, default_values)
  
          return self.__do_put(uri, resource, timeout, custom_headers)
docs: Makes a PUT request to update a resource when a request body is required.
  
          Args:
              resource:
                  OneView resource dictionary.
              uri:
                  Can be either the resource ID or the resource URI.
              force:
                  If set to true, the operation completes despite any problems with network connectivity or errors
                  on the resource itself. The default is false.
              timeout:
                  Timeout in seconds. Wait for task completion by default. The timeout does not abort the operation
                  in OneView; it just stops waiting for its completion.
              custom_headers:
                  Allows set specific HTTP headers.
              default_values:
                  Dictionary with default values grouped by OneView API version. This dictionary will be be merged with
                  the resource dictionary only if the dictionary does not contain the keys.
                  This argument is optional and the default value is an empty dictionary.
                  Ex.:
                      default_values = {
                          '200': {"type": "logical-switch-group"},
                          '300': {"type": "logical-switch-groupV300"}
                      }
  
          Returns:
              Updated resource.