/**
 * MySQL Database Service API
 * The API for the MySQL Database Service
 * OpenAPI spec version: 20190415
 * Contact: mysql-cloud-dev_ww_grp@oracle.com
 *
 * NOTE: This class is auto generated by OracleSDKGenerator.
 * Do not edit the class manually.
 *
 * Copyright (c) 2020, 2022, Oracle and/or its affiliates.  All rights reserved.
 * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
 */ import * as model from "../model" ; import common = require ( "oci-common" ) ; /**
 * Details required to create a DB System.
 *
 */ export interface CreateDbSystemDetails { /**
     * The user-friendly name for the DB System. It does not have to be unique.
     */ "displayName" ? : string ; /**
     * User-provided data about the DB System.
     */ "description" ? : string ; /**
     * The OCID of the compartment.
     */ "compartmentId" : string ; /**
      * Specifies if the DB System is highly available.
  * <p>
  When creating a DB System with High Availability, three instances
  * are created and placed according to your region- and
  * subnet-type. The secondaries are placed automatically in the other
  * two availability or fault domains.  You can choose the preferred
  * location of your primary instance, only.
  *
      */ "isHighlyAvailable" ? : boolean ; /**
      * The availability domain on which to deploy the Read/Write endpoint. This defines the preferred primary instance.
  * <p>
  In a failover scenario, the Read/Write endpoint is redirected to one of the other availability domains
  * and the MySQL instance in that domain is promoted to the primary instance.
  * This redirection does not affect the IP address of the DB System in any way.
  * <p>
  For a standalone DB System, this defines the availability domain in which the DB System is placed.
  *
      */ "availabilityDomain" ? : string ; /**
      * The fault domain on which to deploy the Read/Write endpoint. This defines the preferred primary instance.
  * <p>
  In a failover scenario, the Read/Write endpoint is redirected to one of the other fault domains
  * and the MySQL instance in that domain is promoted to the primary instance.
  * This redirection does not affect the IP address of the DB System in any way.
  * <p>
  For a standalone DB System, this defines the fault domain in which the DB System is placed.
  *
      */ "faultDomain" ? : string ; /**
     * The OCID of the Configuration to be used for this DB System.
     */ "configurationId" ? : string ; /**
     * The name of the shape. The shape determines the resources allocated
     * - CPU cores and memory for VM shapes; CPU cores, memory and storage
     * for non-VM (or bare metal) shapes. To get a list of shapes, use the
     *  {@link #listShapes(ListShapesRequest) listShapes} operation.
     *
      "shapeName" : string ; /**
     * The specific MySQL version identifier.
     */ "mysqlVersion" ? : string ; /**
     * The OCID of the subnet the DB System is associated with.
     *
     */ "subnetId" : string ; /**
     * The username for the administrative user.
     */ "adminUsername" : string ; /**
     * The password for the administrative user. The password must be
     * between 8 and 32 characters long, and must contain at least 1
     * numeric character, 1 lowercase character, 1 uppercase character, and
     * 1 special (nonalphanumeric) character.
     *
     */ "adminPassword" : string ; /**
     * Initial size of the data volume in GBs that will be created and attached.
     * Keep in mind that this only specifies the size of the database data volume,
     * the log volume for the database will be scaled appropriately with its shape.
     *  Note: Numbers greater than Number.MAX_SAFE_INTEGER will result in rounding issues.
     */ "dataStorageSizeInGBs" ? : number ; /**
      * The hostname for the primary endpoint of the DB System. Used for DNS.
  * <p>
  The value is the hostname portion of the primary private IP's fully qualified domain name (FQDN)
  * (for example, \"dbsystem-1\" in FQDN \"dbsystem-1.subnet123.vcn1.oraclevcn.com\").
  * <p>
  Must be unique across all VNICs in the subnet and comply with RFC 952 and RFC 1123.
  *
      */ "hostnameLabel" ? : string ; /**
     * The IP address the DB System is configured to listen on.
     * A private IP address of your choice to assign to the primary endpoint of the DB System.
     * Must be an available IP address within the subnet's CIDR. If you don't specify a value,
     * Oracle automatically assigns a private IP address from the subnet. This should be a
     * \"dotted-quad\" style IPv4 address.
     *
     */ "ipAddress" ? : string ; /**
     * The port for primary endpoint of the DB System to listen on. Note: Numbers greater than Number.MAX_SAFE_INTEGER will result in rounding issues.
     */ "port" ? : number ; /**
     * The TCP network port on which X Plugin listens for connections. This is the X Plugin equivalent of port.
     *  Note: Numbers greater than Number.MAX_SAFE_INTEGER will result in rounding issues.
     */ "portX" ? : number ; "backupPolicy" ? : model . CreateBackupPolicyDetails ; "source" ? : model . CreateDbSystemSourceFromBackupDetails | model . CreateDbSystemSourceFromNoneDetails | model . CreateDbSystemSourceImportFromUrlDetails ; "maintenance" ? : model . CreateMaintenanceDetails ; /**
     * Simple key-value pair applied without any predefined name, type or scope. Exists for cross-compatibility only.
     * Example: `{\"bar-key\": \"value\"}`
     *
     */ "freeformTags" ? : { [ key ] : string ; } ; /**
     * Usage of predefined tag keys. These predefined keys are scoped to namespaces.
     * Example: `{\"foo-namespace\": {\"bar-key\": \"value\"}}`
     *
     */ "definedTags" ? : { [ key ] : { [ key ] : any ; } ; } ; } export namespace CreateDbSystemDetails { export function getJsonObj ( obj ) { const jsonObj = { ... obj , ... { "backupPolicy" : obj . backupPolicy ? model . CreateBackupPolicyDetails . getJsonObj ( obj . backupPolicy ) : undefined , "source" : obj . source ? model . CreateDbSystemSourceDetails . getJsonObj ( obj . source ) : undefined , "maintenance" : obj . maintenance ? model . CreateMaintenanceDetails . getJsonObj ( obj . maintenance ) : undefined } } ; return jsonObj ; } export function getDeserializedJsonObj ( obj ) { const jsonObj = { ... obj , ... { "backupPolicy" : obj . backupPolicy ? model . CreateBackupPolicyDetails . getDeserializedJsonObj ( obj . backupPolicy ) : undefined , "source" : obj . source ? model . CreateDbSystemSourceDetails . getDeserializedJsonObj ( obj . source ) : undefined , "maintenance" : obj . maintenance ? model . CreateMaintenanceDetails . getDeserializedJsonObj ( obj . maintenance ) : undefined } } ; return jsonObj ; } }