code: def ssh_authorized_peers(peer_interface, user, group=None,
                           ensure_local_user=False):
      
      if ensure_local_user:
          ensure_user(user, group)
      priv_key, pub_key = get_keypair(user)
      hook = hook_name()
      if hook == '%s-relation-joined' % peer_interface:
          relation_set(ssh_pub_key=pub_key)
      elif hook == '%s-relation-changed' % peer_interface or \
              hook == '%s-relation-departed' % peer_interface:
          hosts = []
          keys = []
  
          for r_id in relation_ids(peer_interface):
              for unit in related_units(r_id):
                  ssh_pub_key = relation_get('ssh_pub_key',
                                             rid=r_id,
                                             unit=unit)
                  priv_addr = relation_get('private-address',
                                           rid=r_id,
                                           unit=unit)
                  if ssh_pub_key:
                      keys.append(ssh_pub_key)
                      hosts.append(priv_addr)
                  else:
                      log('ssh_authorized_peers(): ssh_pub_key '
                          'missing for unit %s, skipping.' % unit)
          write_authorized_keys(user, keys)
          write_known_hosts(user, hosts)
          authed_hosts = ':'.join(hosts)
          relation_set(ssh_authorized_hosts=authed_hosts)
docs: Main setup function, should be called from both peer -changed and -joined
      hooks with the same parameters.