-
Notifications
You must be signed in to change notification settings - Fork 40
/
model_protectioncontainer.go
141 lines (120 loc) · 4.08 KB
/
model_protectioncontainer.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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package softdeletedcontainers
import (
"encoding/json"
"fmt"
"strings"
)
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See NOTICE.txt in the project root for license information.
type ProtectionContainer interface {
}
// RawProtectionContainerImpl is returned when the Discriminated Value
// doesn't match any of the defined types
// NOTE: this should only be used when a type isn't defined for this type of Object (as a workaround)
// and is used only for Deserialization (e.g. this cannot be used as a Request Payload).
type RawProtectionContainerImpl struct {
Type string
Values map[string]interface{}
}
func unmarshalProtectionContainerImplementation(input []byte) (ProtectionContainer, error) {
if input == nil {
return nil, nil
}
var temp map[string]interface{}
if err := json.Unmarshal(input, &temp); err != nil {
return nil, fmt.Errorf("unmarshaling ProtectionContainer into map[string]interface: %+v", err)
}
value, ok := temp["containerType"].(string)
if !ok {
return nil, nil
}
if strings.EqualFold(value, "AzureBackupServerContainer") {
var out AzureBackupServerContainer
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into AzureBackupServerContainer: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "Microsoft.ClassicCompute/virtualMachines") {
var out AzureIaaSClassicComputeVMContainer
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into AzureIaaSClassicComputeVMContainer: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "Microsoft.Compute/virtualMachines") {
var out AzureIaaSComputeVMContainer
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into AzureIaaSComputeVMContainer: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "SQLAGWorkLoadContainer") {
var out AzureSQLAGWorkloadContainerProtectionContainer
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into AzureSQLAGWorkloadContainerProtectionContainer: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "AzureSqlContainer") {
var out AzureSqlContainer
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into AzureSqlContainer: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "StorageContainer") {
var out AzureStorageContainer
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into AzureStorageContainer: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "VMAppContainer") {
var out AzureVMAppContainerProtectionContainer
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into AzureVMAppContainerProtectionContainer: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "AzureWorkloadContainer") {
var out AzureWorkloadContainer
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into AzureWorkloadContainer: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "DPMContainer") {
var out DpmContainer
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into DpmContainer: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "GenericContainer") {
var out GenericContainer
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into GenericContainer: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "IaasVMContainer") {
var out IaaSVMContainer
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into IaaSVMContainer: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "Windows") {
var out MabContainer
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into MabContainer: %+v", err)
}
return out, nil
}
out := RawProtectionContainerImpl{
Type: value,
Values: temp,
}
return out, nil
}