Finish DB docs for Rackspace
diff --git a/rackspace/db/v1/configurations/requests.go b/rackspace/db/v1/configurations/requests.go
index 726176a..088b7ca 100644
--- a/rackspace/db/v1/configurations/requests.go
+++ b/rackspace/db/v1/configurations/requests.go
@@ -8,6 +8,7 @@
"github.com/rackspace/gophercloud/pagination"
)
+// List will list all of the available configurations.
func List(client *gophercloud.ServiceClient) pagination.Pager {
pageFn := func(r pagination.PageResult) pagination.Page {
return ConfigPage{pagination.SinglePageBase(r)}
@@ -16,15 +17,22 @@
return pagination.NewPager(client, baseURL(client), pageFn)
}
+// CreateOptsBuilder is a top-level interface which renders a JSON map.
type CreateOptsBuilder interface {
ToConfigCreateMap() (map[string]interface{}, error)
}
+// DatastoreOpts is the primary options struct for creating and modifying
+// how configuration resources are associated with datastores.
type DatastoreOpts struct {
- Type string
+ // [OPTIONAL] The type of datastore. Defaults to "MySQL".
+ Type string
+
+ // [OPTIONAL] The specific version of a datastore. Defaults to "5.6".
Version string
}
+// ToMap renders a JSON map for a datastore setting.
func (opts DatastoreOpts) ToMap() (map[string]string, error) {
datastore := map[string]string{}
@@ -39,13 +47,24 @@
return datastore, nil
}
+// CreateOpts is the struct responsible for configuring new configurations.
type CreateOpts struct {
- Datastore *DatastoreOpts
+ // [REQUIRED] The configuration group name
+ Name string
+
+ // [REQUIRED] A map of user-defined configuration settings that will define
+ // how each associated datastore works. Each key/value pair is specific to a
+ // datastore type.
+ Values map[string]interface{}
+
+ // [OPTIONAL] Associates the configuration group with a particular datastore.
+ Datastore *DatastoreOpts
+
+ // [OPTIONAL] A human-readable explanation for the group.
Description string
- Name string
- Values map[string]interface{}
}
+// ToConfigCreateMap casts a CreateOpts struct into a JSON map.
func (opts CreateOpts) ToConfigCreateMap() (map[string]interface{}, error) {
if opts.Name == "" {
return nil, errors.New("Name is a required field")
@@ -74,6 +93,7 @@
return map[string]interface{}{"configuration": config}, nil
}
+// Create will create a new configuration group.
func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) CreateResult {
var res CreateResult
@@ -92,6 +112,7 @@
return res
}
+// Get will retrieve the details for a specified configuration group.
func Get(client *gophercloud.ServiceClient, configID string) GetResult {
var res GetResult
@@ -103,17 +124,30 @@
return res
}
+// UpdateOptsBuilder is the top-level interface for casting update options into
+// JSON maps.
type UpdateOptsBuilder interface {
ToConfigUpdateMap() (map[string]interface{}, error)
}
+// UpdateOpts is the struct responsible for modifying existing configurations.
type UpdateOpts struct {
- Datastore *DatastoreOpts
+ // [OPTIONAL] The configuration group name
+ Name string
+
+ // [OPTIONAL] A map of user-defined configuration settings that will define
+ // how each associated datastore works. Each key/value pair is specific to a
+ // datastore type.
+ Values map[string]interface{}
+
+ // [OPTIONAL] Associates the configuration group with a particular datastore.
+ Datastore *DatastoreOpts
+
+ // [OPTIONAL] A human-readable explanation for the group.
Description string
- Name string
- Values map[string]interface{}
}
+// ToConfigUpdateMap will cast an UpdateOpts struct into a JSON map.
func (opts UpdateOpts) ToConfigUpdateMap() (map[string]interface{}, error) {
config := map[string]interface{}{}
@@ -140,6 +174,9 @@
return map[string]interface{}{"configuration": config}, nil
}
+// Update will modify an existing configuration group by performing a merge
+// between new and existing values. If the key already exists, the new value
+// will overwrite. All other keys will remain unaffected.
func Update(client *gophercloud.ServiceClient, configID string, opts UpdateOptsBuilder) UpdateResult {
var res UpdateResult
@@ -158,6 +195,9 @@
return res
}
+// Replace will modify an existing configuration group by overwriting the
+// entire parameter group with the new values provided. Any existing keys not
+// included in UpdateOptsBuilder will be deleted.
func Replace(client *gophercloud.ServiceClient, configID string, opts UpdateOptsBuilder) ReplaceResult {
var res ReplaceResult
@@ -176,6 +216,7 @@
return res
}
+// Delete will permanently delete a configuration group.
func Delete(client *gophercloud.ServiceClient, configID string) DeleteResult {
var res DeleteResult
@@ -186,6 +227,8 @@
return res
}
+// ListInstances will list all the instances associated with a particular
+// configuration group.
func ListInstances(client *gophercloud.ServiceClient, configID string) pagination.Pager {
pageFn := func(r pagination.PageResult) pagination.Page {
return instances.InstancePage{pagination.LinkedPageBase{PageResult: r}}
@@ -193,6 +236,11 @@
return pagination.NewPager(client, instancesURL(client, configID), pageFn)
}
+// ListDatastoreParams will list all the available and supported parameters
+// that can be used for a particular datastore ID and a particular version.
+// For example, if you are wondering how you can configure a MySQL 5.6 instance,
+// you can use this operation (you will need to retrieve the MySQL datastore ID
+// by using the datastores API).
func ListDatastoreParams(client *gophercloud.ServiceClient, datastoreID, versionID string) pagination.Pager {
pageFn := func(r pagination.PageResult) pagination.Page {
return ParamPage{pagination.SinglePageBase(r)}
@@ -200,6 +248,11 @@
return pagination.NewPager(client, listDSParamsURL(client, datastoreID, versionID), pageFn)
}
+// GetDatastoreParam will retrieve information about a specific configuration
+// parameter. For example, you can use this operation to understand more about
+// "innodb_file_per_table" configuration param for MySQL datastores. You will
+// need the param's ID first, which can be attained by using the ListDatastoreParams
+// operation.
func GetDatastoreParam(client *gophercloud.ServiceClient, datastoreID, versionID, paramID string) ParamResult {
var res ParamResult
@@ -211,6 +264,8 @@
return res
}
+// ListGlobalParams is similar to ListDatastoreParams but does not require a
+// DatastoreID.
func ListGlobalParams(client *gophercloud.ServiceClient, versionID string) pagination.Pager {
pageFn := func(r pagination.PageResult) pagination.Page {
return ParamPage{pagination.SinglePageBase(r)}
@@ -218,6 +273,8 @@
return pagination.NewPager(client, listGlobalParamsURL(client, versionID), pageFn)
}
+// GetGlobalParam is similar to GetDatastoreParam but does not require a
+// DatastoreID.
func GetGlobalParam(client *gophercloud.ServiceClient, versionID, paramID string) ParamResult {
var res ParamResult