code: def gatherkeys_missing(args, distro, rlogger, keypath, keytype, dest_dir):
      
      args_prefix = [
          '/usr/bin/ceph',
          '--connect-timeout=25',
          '--cluster={cluster}'.format(
              cluster=args.cluster),
          '--name', 'mon.',
          '--keyring={keypath}'.format(
              keypath=keypath),
          ]
  
      identity = keytype_identity(keytype)
      if identity is None:
          raise RuntimeError('Could not find identity for keytype:%s' % keytype)
      capabilites = keytype_capabilities(keytype)
      if capabilites is None:
          raise RuntimeError('Could not find capabilites for keytype:%s' % keytype)
  
      # First try getting the key if it already exists, to handle the case where
      # it exists but doesn't match the caps we would pass into get-or-create.
      # This is the same behvaior as in newer ceph-create-keys
      out, err, code = remoto.process.check(
          distro.conn,
          args_prefix + ['auth', 'get', identity]
          )
      if code == errno.ENOENT:
          out, err, code = remoto.process.check(
              distro.conn,
              args_prefix + ['auth', 'get-or-create', identity] + capabilites
              )
      if code != 0:
          rlogger.error(
              '"ceph auth get-or-create for keytype %s returned %s',
              keytype, code
          )
          for line in err:
              rlogger.debug(line)
          return False
      keyring_name_local = keytype_path_to(args, keytype)
      keyring_path_local = os.path.join(dest_dir, keyring_name_local)
      with open(keyring_path_local, 'wb') as f:
          for line in out:
              f.write(line + b'\n')
      return True
docs: Get or create the keyring from the mon using the mon keyring by keytype and
      copy to dest_dir