| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package logic
- import (
- "errors"
- "github.com/gravitl/netmaker/models"
- )
- // CreateHostRelay - creates a host relay
- func CreateHostRelay(relay models.HostRelayRequest) (relayHost *models.Host, relayedHosts []models.Host, err error) {
- relayHost, err = GetHost(relay.HostID)
- if err != nil {
- return
- }
- err = ValidateHostRelay(relay)
- if err != nil {
- return
- }
- relayHost.IsRelay = true
- relayHost.ProxyEnabled = true
- relayHost.RelayedHosts = relay.RelayedHosts
- err = UpsertHost(relayHost)
- if err != nil {
- return
- }
- relayedHosts = SetRelayedHosts(true, relay.HostID, relay.RelayedHosts)
- return
- }
- // SetRelayedHosts - updates the relayed hosts status
- func SetRelayedHosts(setRelayed bool, relayHostID string, relayedHostIDs []string) []models.Host {
- var relayedHosts []models.Host
- for _, relayedHostID := range relayedHostIDs {
- host, err := GetHost(relayedHostID)
- if err == nil {
- if setRelayed {
- host.IsRelayed = true
- host.RelayedBy = relayHostID
- host.ProxyEnabled = true
- } else {
- host.IsRelayed = false
- host.RelayedBy = ""
- }
- err = UpsertHost(host)
- if err == nil {
- relayedHosts = append(relayedHosts, *host)
- }
- }
- }
- return relayedHosts
- }
- // GetRelayedHosts - gets the relayed hosts of a relay host
- func GetRelayedHosts(relayHost *models.Host) []models.Host {
- relayedHosts := []models.Host{}
- for _, hostID := range relayHost.RelayedHosts {
- relayedHost, err := GetHost(hostID)
- if err == nil {
- relayedHosts = append(relayedHosts, *relayedHost)
- }
- }
- return relayedHosts
- }
- func ValidateHostRelay(relay models.HostRelayRequest) error {
- if len(relay.RelayedHosts) == 0 {
- return errors.New("relayed hosts are empty")
- }
- return nil
- }
- // DeleteHostRelay - removes host as relay
- func DeleteHostRelay(relayHostID string) (relayHost *models.Host, relayedHosts []models.Host, err error) {
- relayHost, err = GetHost(relayHostID)
- if err != nil {
- return
- }
- relayedHosts = SetRelayedHosts(false, relayHostID, relayHost.RelayedHosts)
- relayHost.IsRelay = false
- relayHost.RelayedHosts = []string{}
- err = UpsertHost(relayHost)
- if err != nil {
- return
- }
- return
- }
|