orchard/internal/controller/store/etcd/etcd_resources.go

83 lines
2.4 KiB
Go

package etcd
import (
"path"
"github.com/cirruslabs/orchard/pkg/resource/v1"
)
const (
SpaceVMs = "/vms"
SpaceWorkers = "/workers"
SpaceServiceAccounts = "/service-accounts"
clusterSettingsKey = "/cluster-settings"
)
func (store *Store) VMKey(name string) string {
return store.key(path.Join(SpaceVMs, name))
}
func (txn *Transaction) GetVM(name string) (*v1.VM, error) {
return genericGet[v1.VM](txn, txn.store.VMKey(name))
}
func (txn *Transaction) SetVM(vm v1.VM) error {
return genericSet[v1.VM](txn, txn.store.VMKey(vm.Name), vm)
}
func (txn *Transaction) DeleteVM(name string) error {
return genericDelete(txn, txn.store.VMKey(name))
}
func (txn *Transaction) ListVMs() ([]v1.VM, error) {
return genericList[v1.VM](txn, SpaceVMs)
}
func (store *Store) workerKey(name string) string {
return store.key(path.Join(SpaceWorkers, name))
}
func (txn *Transaction) GetWorker(name string) (*v1.Worker, error) {
return genericGet[v1.Worker](txn, txn.store.workerKey(name))
}
func (txn *Transaction) SetWorker(worker v1.Worker) error {
return genericSet[v1.Worker](txn, txn.store.workerKey(worker.Name), worker)
}
func (txn *Transaction) DeleteWorker(name string) error {
return genericDelete(txn, txn.store.workerKey(name))
}
func (txn *Transaction) ListWorkers() ([]v1.Worker, error) {
return genericList[v1.Worker](txn, SpaceWorkers)
}
func (store *Store) serviceAccountKey(name string) string {
return store.key(path.Join(SpaceServiceAccounts, name))
}
func (txn *Transaction) GetServiceAccount(name string) (*v1.ServiceAccount, error) {
return genericGet[v1.ServiceAccount](txn, txn.store.serviceAccountKey(name))
}
func (txn *Transaction) SetServiceAccount(serviceAccount *v1.ServiceAccount) error {
return genericSet[v1.ServiceAccount](txn, txn.store.serviceAccountKey(serviceAccount.Name), *serviceAccount)
}
func (txn *Transaction) DeleteServiceAccount(name string) error {
return genericDelete(txn, txn.store.serviceAccountKey(name))
}
func (txn *Transaction) ListServiceAccounts() ([]v1.ServiceAccount, error) {
return genericList[v1.ServiceAccount](txn, SpaceServiceAccounts)
}
func (txn *Transaction) GetClusterSettings() (*v1.ClusterSettings, error) {
return genericGet[v1.ClusterSettings](txn, txn.store.key(clusterSettingsKey))
}
func (txn *Transaction) SetClusterSettings(clusterSettings v1.ClusterSettings) error {
return genericSet[v1.ClusterSettings](txn, txn.store.key(clusterSettingsKey), clusterSettings)
}