@@ -53,6 +53,8 @@ const (
5353 ManagedDatabaseServiceTypePostgreSQL ManagedDatabaseServiceType = "pg"
5454 // ManagedDatabaseServiceTypeMySQL references a MySQL type of database instance
5555 ManagedDatabaseServiceTypeMySQL ManagedDatabaseServiceType = "mysql"
56+ // ManagedDatabaseServiceTypeRedis references a Redis type of database instance
57+ ManagedDatabaseServiceTypeRedis ManagedDatabaseServiceType = "redis"
5658)
5759
5860// ManagedDatabaseMetricPeriod represents the observation period of database metrics
@@ -131,30 +133,32 @@ const (
131133
132134// ManagedDatabase represents an existing managed database instance
133135type ManagedDatabase struct {
134- Backups []ManagedDatabaseBackup `json:"backups"`
135- Components []ManagedDatabaseComponent `json:"components"`
136- CreateTime time.Time `json:"create_time"`
137- Maintenance ManagedDatabaseMaintenanceTime `json:"maintenance"`
138- Name string `json:"name"`
139- NodeCount int `json:"node_count"`
140- NodeStates []ManagedDatabaseNodeState `json:"node_states"`
141- Plan string `json:"plan"`
142- Powered bool `json:"powered"`
143- Properties ManagedDatabaseProperties `json:"properties"`
144- State ManagedDatabaseState `json:"state"`
145- Title string `json:"title"`
146- Type ManagedDatabaseServiceType `json:"type"`
147- UpdateTime time.Time `json:"update_time"`
148- ServiceURI string `json:"service_uri"`
149- ServiceURIParams ManagedDatabaseServiceURIParams `json:"service_uri_params"`
150- Users []ManagedDatabaseUser `json:"users"`
151- UUID string `json:"uuid"`
152- Zone string `json:"zone"`
136+ Backups []ManagedDatabaseBackup `json:"backups,omitempty"`
137+ Components []ManagedDatabaseComponent `json:"components,omitempty"`
138+ CreateTime time.Time `json:"create_time,omitempty"`
139+ Maintenance ManagedDatabaseMaintenanceTime `json:"maintenance,omitempty"`
140+ Name string `json:"name,omitempty"`
141+ NodeCount int `json:"node_count,omitempty"`
142+ NodeStates []ManagedDatabaseNodeState `json:"node_states,omitempty"`
143+ Plan string `json:"plan,omitempty"`
144+ Powered bool `json:"powered,omitempty"`
145+ Properties ManagedDatabaseProperties `json:"properties,omitempty"`
146+ State ManagedDatabaseState `json:"state,omitempty"`
147+ Title string `json:"title,omitempty"`
148+ Type ManagedDatabaseServiceType `json:"type,omitempty"`
149+ UpdateTime time.Time `json:"update_time,omitempty"`
150+ ServiceURI string `json:"service_uri,omitempty"`
151+ ServiceURIParams ManagedDatabaseServiceURIParams `json:"service_uri_params,omitempty"`
152+ Users []ManagedDatabaseUser `json:"users,omitempty"`
153+ UUID string `json:"uuid,omitempty"`
154+ Zone string `json:"zone,omitempty"`
155+ Metadata * ManagedDatabaseMetadata `json:"metadata,omitempty"`
153156}
154157
155158// ManagedDatabaseBackup represents a full backup taken at a point in time. It should be noted that both
156159// MySQL and PostgreSQL support restoring to any point in time between full backups.
157160type ManagedDatabaseBackup struct {
161+ BackupName string `json:"backup_name"`
158162 BackupTime time.Time `json:"backup_time"`
159163 DataSize int `json:"data_size"`
160164}
@@ -535,11 +539,24 @@ type ManagedDatabaseUser struct {
535539 // upcloud.ManagedDatabaseUserAuthenticationCachingSHA2Password
536540 // upcloud.ManagedDatabaseUserAuthenticationMySQLNativePassword
537541 Authentication ManagedDatabaseUserAuthenticationType `json:"authentication,omitempty"`
538- Type ManagedDatabaseUserType `json:"type"`
542+ Type ManagedDatabaseUserType `json:"type,omitempty "`
539543 // Password field is only visible when querying an individual user. It is omitted in main service view and in
540544 // get all users view.
541- Password string `json:"password,omitempty"`
542- Username string `json:"username"`
545+ Password string `json:"password,omitempty"`
546+ Username string `json:"username,omitempty"`
547+ PGAccessControl * ManagedDatabaseUserPGAccessControl `json:"pg_access_control,omitempty"`
548+ RedisAccessControl * ManagedDatabaseUserRedisAccessControl `json:"redis_access_control,omitempty"`
549+ }
550+
551+ type ManagedDatabaseUserPGAccessControl struct {
552+ AllowReplication bool `json:"allow_replication"`
553+ }
554+
555+ type ManagedDatabaseUserRedisAccessControl struct {
556+ Categories []string `json:"categories,omitempty"`
557+ Channels []string `json:"channels,omitempty"`
558+ Commands []string `json:"commands,omitempty"`
559+ Keys []string `json:"keys,omitempty"`
543560}
544561
545562// ManagedDatabaseQueryStatisticsMySQL represents statistics reported by a MySQL server.
@@ -673,3 +690,11 @@ type ManagedDatabaseServiceProperty struct {
673690 Enum interface {} `json:"enum,omitempty"`
674691 UserError string `json:"user_error,omitempty"`
675692}
693+
694+ type ManagedDatabaseMetadata struct {
695+ MaxConnections int `json:"max_connections,omitempty"`
696+ PGVersion string `json:"pg_version,omitempty"`
697+ MySQLVersion string `json:"mysql_version,omitempty"`
698+ RedisVersion string `json:"redis_version,omitempty"`
699+ WriteBlockThresholdExceeded * bool `json:"write_block_threshold_exceeded,omitempty"`
700+ }
0 commit comments