forked from cloudfoundry/cli
/
service_response_types.go
129 lines (108 loc) · 3.52 KB
/
service_response_types.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
package api
import (
"cf/models"
"fmt"
)
type PaginatedServiceOfferingResources struct {
Resources []ServiceOfferingResource
}
type ServiceOfferingResource struct {
Metadata Metadata
Entity ServiceOfferingEntity
}
func (resource ServiceOfferingResource) ToFields() (fields models.ServiceOfferingFields) {
fields.Label = resource.Entity.Label
fields.Version = resource.Entity.Version
fields.Provider = resource.Entity.Provider
fields.Description = resource.Entity.Description
fields.Guid = resource.Metadata.Guid
fields.DocumentationUrl = resource.Entity.DocumentationUrl
return
}
func (resource ServiceOfferingResource) ToModel() (offering models.ServiceOffering) {
offering.ServiceOfferingFields = resource.ToFields()
for _, p := range resource.Entity.ServicePlans {
servicePlan := models.ServicePlanFields{}
servicePlan.Name = p.Entity.Name
servicePlan.Guid = p.Metadata.Guid
offering.Plans = append(offering.Plans, servicePlan)
}
return offering
}
type ServiceOfferingEntity struct {
Label string
Version string
Description string
DocumentationUrl string `json:"documentation_url"`
Provider string
ServicePlans []ServicePlanResource `json:"service_plans"`
}
type ServicePlanResource struct {
Metadata Metadata
Entity ServicePlanEntity
}
func (resource ServicePlanResource) ToFields() (fields models.ServicePlanFields) {
fields.Guid = resource.Metadata.Guid
fields.Name = resource.Entity.Name
return
}
type ServicePlanEntity struct {
Name string
ServiceOfferingGuid string `json:"service_guid"`
ServiceOffering ServiceOfferingResource `json:"service"`
}
type PaginatedServiceInstanceResources struct {
TotalResults int `json:"total_results"`
Resources []ServiceInstanceResource
}
type ServiceInstanceResource struct {
Metadata Metadata
Entity ServiceInstanceEntity
}
func (resource ServiceInstanceResource) ToFields() (fields models.ServiceInstanceFields) {
fields.Guid = resource.Metadata.Guid
fields.Name = resource.Entity.Name
return
}
func (resource ServiceInstanceResource) ToModel() (instance models.ServiceInstance) {
instance.ServiceInstanceFields = resource.ToFields()
instance.ServicePlan = resource.Entity.ServicePlan.ToFields()
instance.ServiceBindings = []models.ServiceBindingFields{}
for _, bindingResource := range resource.Entity.ServiceBindings {
instance.ServiceBindings = append(instance.ServiceBindings, bindingResource.ToFields())
}
return
}
type ServiceInstanceEntity struct {
Name string
ServiceBindings []ServiceBindingResource `json:"service_bindings"`
ServicePlan ServicePlanResource `json:"service_plan"`
}
type ServiceBindingResource struct {
Metadata Metadata
Entity ServiceBindingEntity
}
func (resource ServiceBindingResource) ToFields() (fields models.ServiceBindingFields) {
fields.Url = resource.Metadata.Url
fields.Guid = resource.Metadata.Guid
fields.AppGuid = resource.Entity.AppGuid
return
}
type ServiceBindingEntity struct {
AppGuid string `json:"app_guid"`
}
type ServicePlanDescription struct {
ServiceLabel string
ServicePlanName string
ServiceProvider string
}
type ServiceMigrateV1ToV2Response struct {
ChangedCount int `json:"changed_count"`
}
func (planDesc ServicePlanDescription) String() string {
if planDesc.ServiceProvider == "" {
return fmt.Sprintf("%s %s", planDesc.ServiceLabel, planDesc.ServicePlanName) // v2 plan
} else {
return fmt.Sprintf("%s %s %s", planDesc.ServiceLabel, planDesc.ServiceProvider, planDesc.ServicePlanName) // v1 plan
}
}