garm/cache/endpoint_cache.go

73 lines
1.7 KiB
Go
Raw Normal View History

// 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)
}