-
Notifications
You must be signed in to change notification settings - Fork 928
/
name_generator.go
166 lines (133 loc) · 4.62 KB
/
name_generator.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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
package helpers
import (
"fmt"
"sort"
"strings"
uuid "github.com/nu7hatch/gouuid"
)
// TODO: Is this working???
// GenerateHigherName will use the passed randomNameGenerator to generate a name with a higher
// sort value than all the passed names
func GenerateHigherName(randomNameGenerator func() string, names ...string) string {
if len(names) == 0 {
return randomNameGenerator()
}
sort.Strings(names)
maxName := names[len(names)-1]
for {
name := randomNameGenerator()
// regenerate name if name is NOT higher
if strings.Compare(name, maxName) > 0 {
return name
}
}
}
// TODO: Is this working???
// GenerateLowerName will use the passed randomNameGenerator to generate a name with a lower
// sort value than all the passed names
func GenerateLowerName(randomNameGenerator func() string, names ...string) string {
if len(names) == 0 {
return randomNameGenerator()
}
sort.Strings(names)
minName := names[0]
for {
name := randomNameGenerator()
// regenerate name if name is NOT higher
if strings.Compare(name, minName) < 0 {
return name
}
}
}
// NewAppName provides a random name prefixed with INTEGRATION-APP
func NewAppName() string {
return PrefixedRandomName("INTEGRATION-APP")
}
// NewIsolationSegmentName provides a random name prefixed with INTEGRATION-ISOLATION-SEGMENT
func NewIsolationSegmentName(infix ...string) string {
return PrefixedRandomName("INTEGRATION-ISOLATION-SEGMENT")
}
// NewOrgName provides a random name prefixed with INTEGRATION-ORG
func NewOrgName() string {
return PrefixedRandomName("INTEGRATION-ORG")
}
// NewServiceOfferingName provides a random name prefixed with INTEGRATION-SERVICE
func NewServiceOfferingName() string {
return PrefixedRandomName("INTEGRATION-SERVICE")
}
// NewServiceInstanceName provides a random name prefixed with INT-SI
func NewServiceInstanceName() string {
return PrefixedRandomName("INT-SI")
}
// NewServiceBrokerName provides a random name prefixed with INTEGRATION-SERVICE-BROKER
func NewServiceBrokerName() string {
return PrefixedRandomName("INTEGRATION-SERVICE-BROKER")
}
// NewPlanName provides a random name prefixed with INTEGRATION-PLAN
func NewPlanName() string {
return PrefixedRandomName("INTEGRATION-PLAN")
}
// NewPassword provides a random string prefixed with INTEGRATION-PASSWORD
func NewPassword() string {
return PrefixedRandomName("INTEGRATION-PASSWORD")
}
// NewSecurityGroupName provides a random name prefixed with INTEGRATION-SEC-GROUP. If an infix is provided, it
// is placed between INTEGRATION-SEC-GROUP and the random string.
func NewSecurityGroupName(infix ...string) string {
if len(infix) > 0 {
return PrefixedRandomName("INTEGRATION-SEC-GROUP-" + infix[0])
}
return PrefixedRandomName("INTEGRATION-SEC-GROUP")
}
// NewSpaceName provides a random name prefixed with INTEGRATION-SPACE
func NewSpaceName() string {
return PrefixedRandomName("INTEGRATION-SPACE")
}
// NewUsername provides a random name prefixed with INTEGRATION-USER
func NewUsername() string {
return PrefixedRandomName("INTEGRATION-USER")
}
// NewBuildpackName provides a random name prefixed with INTEGRATION-BUILDPACK
func NewBuildpackName() string {
return PrefixedRandomName("INTEGRATION-BUILDPACK")
}
// NewStackName provides a random name prefixed with INTEGRATION-STACK
func NewStackName() string {
return PrefixedRandomName("INTEGRATION-STACK")
}
// NewDomainName provides a random domain name prefixed with integration. If prefix is provided the domain name
// will have structure "integration-prefix-randomstring.com" else it will have structure "integration-randomstring.com"
func NewDomainName(prefix ...string) string {
if len(prefix) > 0 {
return fmt.Sprintf("integration-%s.com", PrefixedRandomName(prefix[0]))
}
return fmt.Sprintf("integration%s.com", PrefixedRandomName(""))
}
// NewRouterGroupName provides a random name prefixed with INTEGRATION-ROUTER-GROUP
func NewRouterGroupName() string {
return PrefixedRandomName("INTEGRATION-ROUTER-GROUP")
}
// NewHostName provides a random name prefixed with `host`
func NewHostName() string {
return PrefixedRandomName("host")
}
// NewOrgQuotaName provides a random name prefixed with ORG-QUOTA
func NewOrgQuotaName() string {
return PrefixedRandomName("ORG-QUOTA")
}
// NewPath provides a random path prefixed with /PATH
func NewPath() string {
return PrefixedRandomName("/PATH")
}
// PrefixedRandomName provides a random name with structure "namePrefix-randomstring"
func PrefixedRandomName(namePrefix string) string {
return namePrefix + "-" + RandomName()
}
// RandomName provides a random string
func RandomName() string {
guid, err := uuid.NewV4()
if err != nil {
panic(err)
}
return guid.String()
}