docs: def downloaded(name, artifact, target_dir='/tmp', target_file=None):
      '''
      Ensures that the artifact from nexus exists at given location. If it doesn't exist, then
      it will be downloaded. If it already exists then the checksum of existing file is checked
      against checksum in nexus. If it is different then the step will fail.
  
      artifact
          Details of the artifact to be downloaded from nexus. Various options are:
  
          - nexus_url: URL of the nexus instance
          - repository: Repository in nexus
          - artifact_id: Artifact ID
          - group_id: Group ID
          - packaging: Packaging
          - classifier: Classifier
          - version: Version
              One of the following:
              - Version to download
              - ``latest`` - Download the latest release of this artifact
              - ``latest_snapshot`` - Download the latest snapshot for this artifact
  
          - username: nexus username
          - password: nexus password
  
      target_dir
          Directory where the artifact should be downloaded. By default it is downloaded to /tmp directory.
  
      target_file
          Target file to download artifact to. By default file name is resolved by nexus.
  
      An example to download an artifact to a specific file:
  
      .. code-block:: yaml
  
          jboss_module_downloaded:
            nexus.downloaded:
             - artifact:
                 nexus_url: http://nexus.intranet.example.com/repository
                 repository: 'libs-release-local'
                 artifact_id: 'module'
                 group_id: 'com.company.module'
                 packaging: 'jar'
                 classifier: 'sources'
                 version: '1.0'
             - target_file: /opt/jboss7/modules/com/company/lib/module.jar
  
      Download artifact to the folder (automatically resolves file name):
  
      .. code-block:: yaml
  
          maven_artifact_downloaded:
            nexus.downloaded:
             - artifact:
                  nexus_url: http://nexus.intranet.example.com/repository
                  repository: 'maven-releases'
                  artifact_id: 'module'
                  group_id: 'com.company.module'
                  packaging: 'zip'
                  classifier: 'dist'
                  version: '1.0'
             - target_dir: /opt/maven/modules/com/company/release
  
      '''
      log.debug(" ======================== STATE: nexus.downloaded (name: %s) ", name)
      ret = {'name': name,
             'result': True,
             'changes': {},
             'comment': ''}
  
      try:
          fetch_result = __fetch_from_nexus(artifact, target_dir, target_file)
      except Exception as exc:
          ret['result'] = False
          ret['comment'] = six.text_type(exc)
          return ret
  
      log.debug("fetch_result=%s", fetch_result)
  
      ret['result'] = fetch_result['status']
      ret['comment'] = fetch_result['comment']
      ret['changes'] = fetch_result['changes']
      log.debug("ret=%s", ret)
  
      return ret