/**
 * Big Data Service API
 * REST API for Oracle Big Data Service. Use this API to build, deploy, and manage fully elastic Big Data Service clusters. Build on Hadoop, Spark and Data Science distributions, which can be fully integrated with existing enterprise data in Oracle Database and Oracle applications.

 * OpenAPI spec version: 20190531
 * Contact: rahul.ra.arora@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" ) ; /**
 * Description of the cluster.
 */ export interface BdsInstance { /**
     * The OCID of the Big Data Service resource.
     */ "id" : string ; /**
     * The OCID of the compartment.
     */ "compartmentId" : string ; /**
     * The name of the cluster.
     */ "displayName" : string ; /**
     * The state of the cluster.
     */ "lifecycleState" : BdsInstance . LifecycleState ; /**
     * Version of the Hadoop distribution.
     */ "clusterVersion" ? : BdsInstance . ClusterVersion ; /**
     * Boolean flag specifying whether or not the cluster is highly available (HA)
     */ "isHighAvailability" : boolean ; /**
     * Boolean flag specifying whether or not the cluster should be set up as secure.
     */ "isSecure" : boolean ; /**
     * Boolean flag specifying whether or not Cloud SQL should be configured.
     */ "isCloudSqlConfigured" : boolean ; "networkConfig" ? : model . NetworkConfig ; "clusterDetails" ? : model . ClusterDetails ; /**
     * The list of nodes in the cluster.
     */ "nodes" : Array < model . Node > ; "cloudSqlDetails" ? : model . CloudSqlDetails ; /**
     * The user who created the cluster.
     */ "createdBy" ? : string ; /**
     * The time the cluster was created, shown as an RFC 3339 formatted datetime string.
     */ "timeCreated" ? : Date ; /**
     * The time the cluster was updated, shown as an RFC 3339 formatted datetime string.
     */ "timeUpdated" ? : Date ; /**
     * Number of nodes that forming the cluster Note: Numbers greater than Number.MAX_SAFE_INTEGER will result in rounding issues.
     */ "numberOfNodes" : number ; /**
     * Simple key-value pair that is applied without any predefined name, type, or scope.
     * Exists for cross-compatibility only. For example, `{\"bar-key\": \"value\"}`
     *
     */ "freeformTags" ? : { [ key ] : string ; } ; /**
     * Defined tags for this resource. Each key is predefined and scoped to a namespace.
     * For example, `{\"foo-namespace\": {\"bar-key\": \"value\"}}`
     *
     */ "definedTags" ? : { [ key ] : { [ key ] : any ; } ; } ; } export namespace BdsInstance { export enum LifecycleState { Creating = "CREATING" , Active = "ACTIVE" , Updating = "UPDATING" , Suspending = "SUSPENDING" , Suspended = "SUSPENDED" , Resuming = "RESUMING" , Deleting = "DELETING" , Deleted = "DELETED" , Failed = "FAILED" , /**
         * This value is used if a service returns a value for this enum that is not recognized by this
         * version of the SDK.
         */ UnknownValue = "UNKNOWN_VALUE" } export enum ClusterVersion { Cdh5 = "CDH5" , Cdh6 = "CDH6" , Odh1 = "ODH1" , /**
         * This value is used if a service returns a value for this enum that is not recognized by this
         * version of the SDK.
         */ UnknownValue = "UNKNOWN_VALUE" } export function getJsonObj ( obj ) { const jsonObj = { ... obj , ... { "networkConfig" : obj . networkConfig ? model . NetworkConfig . getJsonObj ( obj . networkConfig ) : undefined , "clusterDetails" : obj . clusterDetails ? model . ClusterDetails . getJsonObj ( obj . clusterDetails ) : undefined , "nodes" : obj . nodes ? obj . nodes . map ( item => { return model . Node . getJsonObj ( item ) ; } ) : undefined , "cloudSqlDetails" : obj . cloudSqlDetails ? model . CloudSqlDetails . getJsonObj ( obj . cloudSqlDetails ) : undefined } } ; return jsonObj ; } export function getDeserializedJsonObj ( obj ) { const jsonObj = { ... obj , ... { "networkConfig" : obj . networkConfig ? model . NetworkConfig . getDeserializedJsonObj ( obj . networkConfig ) : undefined , "clusterDetails" : obj . clusterDetails ? model . ClusterDetails . getDeserializedJsonObj ( obj . clusterDetails ) : undefined , "nodes" : obj . nodes ? obj . nodes . map ( item => { return model . Node . getDeserializedJsonObj ( item ) ; } ) : undefined , "cloudSqlDetails" : obj . cloudSqlDetails ? model . CloudSqlDetails . getDeserializedJsonObj ( obj . cloudSqlDetails ) : undefined } } ; return jsonObj ; } }