func (s *PresenceService) UpsertReverseTunnel(tunnel services.ReverseTunnel, ttl time.Duration) error {
	if err := tunnel.Check(); err != nil {
		return trace.Wrap(err)
	}
	data, err := json.Marshal(tunnel)
	if err != nil {
		return trace.Wrap(err)
	}
	err = s.backend.UpsertVal([]string{reverseTunnelsPrefix}, tunnel.DomainName, data, ttl)
	return trace.Wrap(err)
}
// UpsertReverseTunnel upserts reverse tunnel entry temporarily or permanently
UpsertReverseTunnel upserts reverse tunnel entry temporarily or permanently
// UpsertReverseTunnel upserts reverse tunnel entry temporarily or permanently
func (s *PresenceService) UpsertReverseTunnel(tunnel services.ReverseTunnel, ttl time.Duration) error {
	if err := tunnel.Check(); err != nil {
		return trace.Wrap(err)
	}
	data, err := json.Marshal(tunnel)
	if err != nil {
		return trace.Wrap(err)
	}
	err = s.backend.UpsertVal([]string{reverseTunnelsPrefix}, tunnel.DomainName, data, ttl)
	return trace.Wrap(err)
}
func ( s * PresenceService ) UpsertReverseTunnel ( tunnel services . ReverseTunnel , ttl time . Duration ) error { if err := tunnel . Check ( ) ; err != nil { return trace . Wrap ( err ) } data , err := json . Marshal ( tunnel ) if err != nil { return trace . Wrap ( err ) } err = s . backend . UpsertVal ( [ ] string { reverseTunnelsPrefix } , tunnel . DomainName , data , ttl ) return trace . Wrap ( err ) }
UpsertReverseTunnel upserts reverse tunnel entry temporarily or permanently
UpsertReverseTunnel upserts reverse tunnel entry temporarily or permanently