-
Notifications
You must be signed in to change notification settings - Fork 0
/
appdbinstance.go
69 lines (59 loc) · 2.63 KB
/
appdbinstance.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
package types
import (
"fmt"
"log"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// AppDBInstance is the custom resource definition structure.
type AppDBInstance struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec AppDBInstanceSpec `json:"spec,omitempty"`
Status AppDBInstanceOperatorStatus `json:"status"`
}
// Log is a conventional log method to print the parent name and kind before the log message.
func (parent *AppDBInstance) Log(level, msgfmt string, fmtargs ...interface{}) {
log.Printf("[%s][%s][%s] %s", level, parent.Kind, parent.Name, fmt.Sprintf(msgfmt, fmtargs...))
}
// AppDBInstanceOperatorStatus is the status structure for the custom resource
type AppDBInstanceOperatorStatus struct {
Provisioning ProvisioningStatus `json:"provisioning"`
DBHost string `json:"dbHost"`
DBPort int32 `json:"dbPort"`
CloudSQL *AppDBInstanceCloudSQLStatus `json:"cloudSQL"`
}
// AppDBInstanceCloudSQLStatus is the status structure for the CloudSQL driver
type AppDBInstanceCloudSQLStatus struct {
InstanceName string `json:"instanceName,omitempty"`
ServiceAccountEmail string `json:"serviceAccountEmail,omitempty"`
ConnectionName string `json:"connectionName,omitempty"`
Port int32 `json:"port,omitempty"`
ProxyService string `json:"proxyService,omitempty"`
ProxySecret string `json:"proxySecret,omitempty"`
TFApplyName string `json:"tfapplyName,omitempty"`
TFApplyPodName string `json:"tfapplyPodName,omitempty"`
TFApplySig string `json:"tfapplySig,omitempty"`
TFPlanName string `json:"tfplanName,omitempty"`
TFPlanPodName string `json:"tfplanPodName,omitempty"`
TFPlanSig string `json:"tfplanSig,omitempty"`
}
// AppDBInstanceSpec is the top level structure of the spec body
type AppDBInstanceSpec struct {
Driver AppDBDriver `json:"driver,omitempty"`
}
// AppDBDriver is the spec of the driver
type AppDBDriver struct {
CloudSQLTerraform *AppDBCloudSQLTerraformDriver `json:"cloudSQLTerraform,omitempty"`
}
// AppDBCloudSQLDriver is the CloudSQL driver spec
type AppDBCloudSQLTerraformDriver struct {
Params map[string]string `json:"params,omitempty"`
Proxy CloudSQLProxySpec `json:"proxy,omitempty"`
}
// CloudSQLProxySpec is the spec for a cloudsql proxy
type CloudSQLProxySpec struct {
Image string `json:"image,omitempty"`
ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"`
Replicas int32 `json:"replicas,omitempty"`
}