-
Notifications
You must be signed in to change notification settings - Fork 47
/
VMSpecHandler.go
97 lines (77 loc) · 2.87 KB
/
VMSpecHandler.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
// Cloud Driver Interface of CB-Spider.
// The CB-Spider is a sub-Framework of the Cloud-Barista Multi-Cloud Project.
// The CB-Spider Mission is to connect all the clouds with a single interface.
//
// * Cloud-Barista: https://github.com/cloud-barista
//
// This is Mock Driver.
//
// by CB-Spider Team, 2020.09.
package resources
import (
"fmt"
cblog "github.com/cloud-barista/cb-log"
irs "github.com/cloud-barista/cb-spider/cloud-control-manager/cloud-driver/interfaces/resources"
)
var vmSpecInfoMap map[string][]*irs.VMSpecInfo
type MockVMSpecHandler struct {
MockName string
}
var prepareVMSpecInfoList []*irs.VMSpecInfo
func init() {
vmSpecInfoMap = make(map[string][]*irs.VMSpecInfo)
}
// Be called before using the User function.
// Called in MockDriver
func PrepareVMSpec(mockName string) {
cblogger := cblog.GetLogger("CB-SPIDER")
cblogger.Info("Mock Driver: called prepare()!")
if vmSpecInfoMap[mockName] != nil {
return
}
prepareVMSpecInfoList = []*irs.VMSpecInfo{
{"common-region", "mock-vmspec-01", irs.VCpuInfo{"4", "2.7"}, "32768", []irs.GpuInfo{{"2", "NVIDIA", "V100", "16384MB"}}, nil},
{"common-region", "mock-vmspec-02", irs.VCpuInfo{"4", "3.2"}, "32768", []irs.GpuInfo{{"1", "NVIDIA", "V100", "16384MB"}}, nil},
{"common-region", "mock-vmspec-03", irs.VCpuInfo{"8", "2.7"}, "62464", nil, nil},
{"common-region", "mock-vmspec-04", irs.VCpuInfo{"8", "2.7"}, "1024", nil, nil},
}
vmSpecInfoMap[mockName] = prepareVMSpecInfoList
}
func (vmSpecHandler *MockVMSpecHandler) ListVMSpec() ([]*irs.VMSpecInfo, error) {
cblogger := cblog.GetLogger("CB-SPIDER")
cblogger.Info("Mock Driver: called ListVMSpec()!")
mockName := vmSpecHandler.MockName
infoList, ok := vmSpecInfoMap[mockName]
if !ok {
return []*irs.VMSpecInfo{}, nil
}
// cloning list of VMSpec
resultList := make([]*irs.VMSpecInfo, len(infoList))
copy(resultList, infoList)
return resultList, nil
}
func (vmSpecHandler *MockVMSpecHandler) GetVMSpec(Name string) (irs.VMSpecInfo, error) {
cblogger := cblog.GetLogger("CB-SPIDER")
cblogger.Info("Mock Driver: called GetVMSpec()!")
infoList, err := vmSpecHandler.ListVMSpec()
if err != nil {
cblogger.Error(err)
return irs.VMSpecInfo{}, err
}
for _, info := range infoList {
if (*info).Name == Name {
return *info, nil
}
}
return irs.VMSpecInfo{}, fmt.Errorf("%s VMSpec does not exist!!", Name)
}
func (vmSpecHandler *MockVMSpecHandler) ListOrgVMSpec() (string, error) { // return string: json format
cblogger := cblog.GetLogger("CB-SPIDER")
cblogger.Info("Mock Driver: called ListOrgVMSpec()!")
return "", nil
}
func (vmSpecHandler *MockVMSpecHandler) GetOrgVMSpec(Name string) (string, error) { // return string: json format
cblogger := cblog.GetLogger("CB-SPIDER")
cblogger.Info("Mock Driver: called GetOrgVMSpec()!")
return "", nil
}