73 lines
1.7 KiB
Go
73 lines
1.7 KiB
Go
|
|
// Copyright 2025 Cloudbase Solutions SRL
|
||
|
|
//
|
||
|
|
// Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||
|
|
// not use this file except in compliance with the License. You may obtain
|
||
|
|
// a copy of the License at
|
||
|
|
//
|
||
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
//
|
||
|
|
// Unless required by applicable law or agreed to in writing, software
|
||
|
|
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||
|
|
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||
|
|
// License for the specific language governing permissions and limitations
|
||
|
|
// under the License.
|
||
|
|
package cache
|
||
|
|
|
||
|
|
import (
|
||
|
|
"sync"
|
||
|
|
|
||
|
|
"github.com/cloudbase/garm/params"
|
||
|
|
)
|
||
|
|
|
||
|
|
var endpointCache *EndpointCache
|
||
|
|
|
||
|
|
func init() {
|
||
|
|
epCache := &EndpointCache{
|
||
|
|
endpoints: make(map[string]params.ForgeEndpoint),
|
||
|
|
}
|
||
|
|
endpointCache = epCache
|
||
|
|
}
|
||
|
|
|
||
|
|
type EndpointCache struct {
|
||
|
|
endpoints map[string]params.ForgeEndpoint
|
||
|
|
mux sync.Mutex
|
||
|
|
}
|
||
|
|
|
||
|
|
func (e *EndpointCache) SetEndpoint(ep params.ForgeEndpoint) {
|
||
|
|
e.mux.Lock()
|
||
|
|
defer e.mux.Unlock()
|
||
|
|
|
||
|
|
e.endpoints[ep.Name] = ep
|
||
|
|
UpdateCredentialsUsingEndpoint(ep)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (e *EndpointCache) GetEndpoint(epName string) (params.ForgeEndpoint, bool) {
|
||
|
|
e.mux.Lock()
|
||
|
|
defer e.mux.Unlock()
|
||
|
|
|
||
|
|
ep, ok := e.endpoints[epName]
|
||
|
|
if ok {
|
||
|
|
return ep, true
|
||
|
|
}
|
||
|
|
return params.ForgeEndpoint{}, false
|
||
|
|
}
|
||
|
|
|
||
|
|
func (e *EndpointCache) RemoveEndpoint(epName string) {
|
||
|
|
e.mux.Lock()
|
||
|
|
defer e.mux.Unlock()
|
||
|
|
|
||
|
|
delete(e.endpoints, epName)
|
||
|
|
}
|
||
|
|
|
||
|
|
func SetEndpoint(ep params.ForgeEndpoint) {
|
||
|
|
endpointCache.SetEndpoint(ep)
|
||
|
|
}
|
||
|
|
|
||
|
|
func GetEndpoint(epName string) (params.ForgeEndpoint, bool) {
|
||
|
|
return endpointCache.GetEndpoint(epName)
|
||
|
|
}
|
||
|
|
|
||
|
|
func RemoveEndpoint(epName string) {
|
||
|
|
endpointCache.RemoveEndpoint(epName)
|
||
|
|
}
|