func validCreateInstanceParams()

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
}