-
Notifications
You must be signed in to change notification settings - Fork 7
/
application.go
82 lines (65 loc) · 2.7 KB
/
application.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
/*
Copyright 2021 GramLabs, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package v2
import (
"time"
"github.com/thestormforge/optimize-go/pkg/api"
)
type Application struct {
api.Metadata `json:"-"`
Name ApplicationName `json:"name,omitempty"`
DisplayName string `json:"title,omitempty"` // TODO This doesn't seem to get set
Resources []Resource `json:"resources,omitempty"`
CreatedAt *time.Time `json:"createdAt,omitempty"`
}
// NOTE: Use `DisplayName` as the field since `Title()` is a function on the embedded `Metadata`.
var _ = Application{}.Title()
type ApplicationListQuery struct{ api.IndexQuery }
type ApplicationItem struct {
Application
// The number of scenarios associated with this application.
ScenarioCount int `json:"scenarioCount,omitempty"`
LastDeployedAt *time.Time `json:"lastDeployedAt,omitempty"`
Recommendations RecommendationsMode `json:"recommendations,omitempty"`
}
type RecommendationsMode string
const (
RecommendationsDisabled RecommendationsMode = "disabled"
RecommendationsManual RecommendationsMode = "manual"
RecommendationsAuto RecommendationsMode = "auto"
)
func (m RecommendationsMode) Enabled() bool {
return m != RecommendationsDisabled && m != ""
}
func (ai *ApplicationItem) UnmarshalJSON(b []byte) error {
type t ApplicationItem
return api.UnmarshalJSON(b, (*t)(ai))
}
type ApplicationList struct {
// The application list metadata.
api.Metadata `json:"-"`
// The total number of items in the collection.
TotalCount int `json:"totalCount,omitempty"`
// The list of applications.
Applications []ApplicationItem `json:"applications"`
}
// TODO This "Resource" type should be replaced by the Konjure Resource
type Resource struct {
Kubernetes struct {
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
Namespaces []string `json:"namespaces,omitempty" yaml:"namespaces,omitempty"`
NamespaceSelector string `json:"namespaceSelector,omitempty" yaml:"namespaceSelector,omitempty"`
Types []string `json:"types,omitempty" yaml:"types,omitempty"`
Selector string `json:"selector,omitempty" yaml:"selector,omitempty"`
} `json:"kubernetes" yaml:"kubernetes"`
}