/
proxy_snapshot.go
101 lines (84 loc) · 3.37 KB
/
proxy_snapshot.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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package engineapi
import (
longhorn "github.com/longhorn/longhorn-manager/k8s/pkg/apis/longhorn/v1beta2"
)
func (p *Proxy) SnapshotCreate(e *longhorn.Engine, name string, labels map[string]string) (string, error) {
return p.grpcClient.VolumeSnapshot(string(e.Spec.DataEngine), e.Name, e.Spec.VolumeName, p.DirectToURL(e),
name, labels)
}
func (p *Proxy) SnapshotList(e *longhorn.Engine) (snapshots map[string]*longhorn.SnapshotInfo, err error) {
recv, err := p.grpcClient.SnapshotList(string(e.Spec.DataEngine), e.Name, e.Spec.VolumeName,
p.DirectToURL(e))
if err != nil {
return nil, err
}
snapshots = map[string]*longhorn.SnapshotInfo{}
for k, v := range recv {
snapshots[k] = (*longhorn.SnapshotInfo)(v)
}
return snapshots, nil
}
func (p *Proxy) SnapshotGet(e *longhorn.Engine, name string) (snapshot *longhorn.SnapshotInfo, err error) {
recv, err := p.SnapshotList(e)
if err != nil {
return nil, err
}
return recv[name], nil
}
func (p *Proxy) SnapshotClone(e *longhorn.Engine, snapshotName, fromEngineAddress, fromVolumeName, fromEngineName string,
fileSyncHTTPClientTimeout int64) (err error) {
return p.grpcClient.SnapshotClone(string(e.Spec.DataEngine), e.Name, e.Spec.VolumeName, p.DirectToURL(e),
snapshotName, fromEngineAddress, fromVolumeName, fromEngineName, int(fileSyncHTTPClientTimeout))
}
func (p *Proxy) SnapshotCloneStatus(e *longhorn.Engine) (status map[string]*longhorn.SnapshotCloneStatus, err error) {
recv, err := p.grpcClient.SnapshotCloneStatus(string(e.Spec.DataEngine), e.Name, e.Spec.VolumeName,
p.DirectToURL(e))
if err != nil {
return nil, err
}
status = map[string]*longhorn.SnapshotCloneStatus{}
for k, v := range recv {
status[k] = (*longhorn.SnapshotCloneStatus)(v)
}
return status, nil
}
func (p *Proxy) SnapshotRevert(e *longhorn.Engine, snapshotName string) (err error) {
return p.grpcClient.SnapshotRevert(string(e.Spec.DataEngine), e.Name, e.Spec.VolumeName, p.DirectToURL(e),
snapshotName)
}
func (p *Proxy) SnapshotPurge(e *longhorn.Engine) (err error) {
return p.grpcClient.SnapshotPurge(string(e.Spec.DataEngine), e.Name, e.Spec.VolumeName, p.DirectToURL(e),
true)
}
func (p *Proxy) SnapshotPurgeStatus(e *longhorn.Engine) (status map[string]*longhorn.PurgeStatus, err error) {
recv, err := p.grpcClient.SnapshotPurgeStatus(string(e.Spec.DataEngine), e.Name, e.Spec.VolumeName,
p.DirectToURL(e))
if err != nil {
return nil, err
}
status = map[string]*longhorn.PurgeStatus{}
for k, v := range recv {
status[k] = (*longhorn.PurgeStatus)(v)
}
return status, nil
}
func (p *Proxy) SnapshotDelete(e *longhorn.Engine, name string) (err error) {
return p.grpcClient.SnapshotRemove(string(e.Spec.DataEngine), e.Name, e.Spec.VolumeName, p.DirectToURL(e),
[]string{name})
}
func (p *Proxy) SnapshotHash(e *longhorn.Engine, snapshotName string, rehash bool) error {
return p.grpcClient.SnapshotHash(string(e.Spec.DataEngine), e.Name, e.Spec.VolumeName, p.DirectToURL(e),
snapshotName, rehash)
}
func (p *Proxy) SnapshotHashStatus(e *longhorn.Engine, snapshotName string) (status map[string]*longhorn.HashStatus, err error) {
recv, err := p.grpcClient.SnapshotHashStatus(string(e.Spec.DataEngine), e.Name, e.Spec.VolumeName,
p.DirectToURL(e), snapshotName)
if err != nil {
return nil, err
}
status = map[string]*longhorn.HashStatus{}
for k, v := range recv {
status[k] = (*longhorn.HashStatus)(v)
}
return status, nil
}