in shardingsphere-operator/pkg/reconcile/storagenode/aws/rdsinstance.go [36:82]
func validCreateInstanceParams(node *v1alpha1.StorageNode, paramsptr *map[string]string) error {
requiredParams := map[string]string{
"engine": "engine is empty",
"engineVersion": "engine version is empty",
"instanceClass": "instance class is empty",
"masterUsername": "master username is empty",
"masterUserPassword": "master user password is empty",
"allocatedStorage": "allocated storage is empty",
}
params := *paramsptr
for k, v := range requiredParams {
if val, ok := params[k]; !ok || val == "" {
if k == "masterUserPassword" || k == "masterUsername" {
generator := generate(k)
params[k] = generator
} else {
return errors.New(v)
}
}
}
if username, ok := params["masterUsername"]; ok {
validatedUsername, err := validateusername(username)
if err != nil {
return err
}
params["masterUsername"] = validatedUsername
}
// validate instance identifier.
if val, ok := node.Annotations[v1alpha1.AnnotationsInstanceIdentifier]; !ok || val == "" {
return errors.New("instance identifier is empty")
}
// TODO set options to generate password and write back to storage node annos.
// TODO set options to set master username by user.
// validate master user password length. must be greater than 8. from aws doc.
lp := len(params["masterUserPassword"])
if lp < 8 || lp > 41 {
return errors.New("master user password length should be greater than 8")
} else {
node.Annotations[v1alpha1.AnnotationsMasterUserPassword] = params["masterUserPassword"]
}
return nil
}