forked from argoproj/argo-workflows
-
Notifications
You must be signed in to change notification settings - Fork 0
/
db.go
46 lines (41 loc) · 1.68 KB
/
db.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package db
import (
appv1 "github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1"
"golang.org/x/net/context"
"k8s.io/client-go/kubernetes"
)
type ArgoDB interface {
// ListClusters lists configured clusters
ListClusters(ctx context.Context) (*appv1.ClusterList, error)
// CreateCluster creates a cluster
CreateCluster(ctx context.Context, c *appv1.Cluster) (*appv1.Cluster, error)
// WatchClusters allow watching for cluster events
WatchClusters(ctx context.Context, callback func(*ClusterEvent)) error
// Get returns a cluster from a query
GetCluster(ctx context.Context, name string) (*appv1.Cluster, error)
// UpdateCluster updates a cluster
UpdateCluster(ctx context.Context, c *appv1.Cluster) (*appv1.Cluster, error)
// DeleteCluster deletes a cluster by name
DeleteCluster(ctx context.Context, name string) error
// ListRepositories lists repositories
ListRepositories(ctx context.Context) (*appv1.RepositoryList, error)
// CreateRepository creates a repository
CreateRepository(ctx context.Context, r *appv1.Repository) (*appv1.Repository, error)
// GetRepository returns a repository by URL
GetRepository(ctx context.Context, name string) (*appv1.Repository, error)
// UpdateRepository updates a repository
UpdateRepository(ctx context.Context, r *appv1.Repository) (*appv1.Repository, error)
// DeleteRepository updates a repository
DeleteRepository(ctx context.Context, name string) error
}
type db struct {
ns string
kubeclientset kubernetes.Interface
}
// NewDB returns a new instance of the argo database
func NewDB(namespace string, kubeclientset kubernetes.Interface) ArgoDB {
return &db{
ns: namespace,
kubeclientset: kubeclientset,
}
}