/**
 * 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" ) ; /**
 * A summary of a DB System.
 *
 */ export interface DbSystemSummary { /**
     * The OCID of the DB System.
     */ "id" : string ; /**
     * 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 the DB System belongs in.
     */ "compartmentId" ? : string ; /**
     * If the policy is to enable high availability of the instance, by
     * maintaining secondary/failover capacity as necessary.
     *
     */ "isHighlyAvailable" ? : boolean ; "currentPlacement" ? : model . DbSystemPlacement ; /**
     * DEPRECATED -- please use `isHeatWaveClusterAttached` instead.
     * If the DB System has an Analytics Cluster attached.
     *
     */ "isAnalyticsClusterAttached" ? : boolean ; "analyticsCluster" ? : model . AnalyticsClusterSummary ; /**
     * If the DB System has a HeatWave Cluster attached.
     *
     */ "isHeatWaveClusterAttached" ? : boolean ; "heatWaveCluster" ? : model . HeatWaveClusterSummary ; /**
      * 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 network endpoints available for this DB System.
     *
     */ "endpoints" ? : Array < model . DbSystemEndpoint > ; /**
     * The current state of the DB System.
     */ "lifecycleState" : string ; /**
     * Name of the MySQL Version in use for the DB System.
     */ "mysqlVersion" : string ; /**
     * The date and time the DB System was created.
     */ "timeCreated" : Date ; /**
     * The time the DB System was last updated.
     */ "timeUpdated" : Date ; /**
     * Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only.
     * Example: `{\"bar-key\": \"value\"}`
     *
     */ "freeformTags" ? : { [ key ] : string ; } ; /**
     * Defined tags for this resource. Each key is predefined and scoped to a namespace.
     * Example: `{\"foo-namespace\": {\"bar-key\": \"value\"}}`
     *
     */ "definedTags" ? : { [ key ] : { [ key ] : any ; } ; } ; } export namespace DbSystemSummary { export function getJsonObj ( obj ) { const jsonObj = { ... obj , ... { "currentPlacement" : obj . currentPlacement ? model . DbSystemPlacement . getJsonObj ( obj . currentPlacement ) : undefined , "analyticsCluster" : obj . analyticsCluster ? model . AnalyticsClusterSummary . getJsonObj ( obj . analyticsCluster ) : undefined , "heatWaveCluster" : obj . heatWaveCluster ? model . HeatWaveClusterSummary . getJsonObj ( obj . heatWaveCluster ) : undefined , "endpoints" : obj . endpoints ? obj . endpoints . map ( item => { return model . DbSystemEndpoint . getJsonObj ( item ) ; } ) : undefined } } ; return jsonObj ; } export function getDeserializedJsonObj ( obj ) { const jsonObj = { ... obj , ... { "currentPlacement" : obj . currentPlacement ? model . DbSystemPlacement . getDeserializedJsonObj ( obj . currentPlacement ) : undefined , "analyticsCluster" : obj . analyticsCluster ? model . AnalyticsClusterSummary . getDeserializedJsonObj ( obj . analyticsCluster ) : undefined , "heatWaveCluster" : obj . heatWaveCluster ? model . HeatWaveClusterSummary . getDeserializedJsonObj ( obj . heatWaveCluster ) : undefined , "endpoints" : obj . endpoints ? obj . endpoints . map ( item => { return model . DbSystemEndpoint . getDeserializedJsonObj ( item ) ; } ) : undefined } } ; return jsonObj ; } }