/**
 * Database Migration API
 * Use the Oracle Cloud Infrastructure Database Migration APIs to perform database migration operations.
 * OpenAPI spec version: 20210929
 *
 *
 * 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" ) ; /**
 * Migration resource
 *
 */ export interface Migration { /**
     * The OCID of the resource
     *
     */ "id" : string ; /**
     * Migration Display Name
     *
     */ "displayName" : string ; /**
     * OCID of the compartment
     *
     */ "compartmentId" : string ; /**
     * Migration type.
     *
     */ "type" : model . MigrationTypes ; /**
     * Name of a migration phase. The Job will wait after executing this
     * phase until the Resume Job endpoint is called.
     *
     */ "waitAfter" ? : model . OdmsJobPhases ; /**
     * The OCID of the registered on-premises ODMS Agent. Only valid for Offline Migrations.
     *
     */ "agentId" ? : string ; /**
     * OCID of the Secret in the OCI vault containing the Migration credentials. Used to store GoldenGate administrator user credentials.
     *
     */ "credentialsSecretId" ? : string ; /**
     * The OCID of the Source Database Connection.
     *
     */ "sourceDatabaseConnectionId" : string ; /**
     * The OCID of the Source Container Database Connection.
     *
     */ "sourceContainerDatabaseConnectionId" ? : string ; /**
     * The OCID of the Target Database Connection.
     *
     */ "targetDatabaseConnectionId" : string ; /**
     * OCID of the current ODMS Job in execution for the Migration, if any.
     *
     */ "executingJobId" ? : string ; "dataTransferMediumDetails" ? : model . DataTransferMediumDetails ; "dumpTransferDetails" ? : model . DumpTransferDetails ; "datapumpSettings" ? : model . DataPumpSettings ; "advisorSettings" ? : model . AdvisorSettings ; /**
     * Database objects to exclude from migration.
     * If 'includeObjects' are specified, only exclude object types can be specified with general wildcards (.*) for owner and objectName.
     *
     */ "excludeObjects" ? : Array < model . DatabaseObject > ; /**
     * Database objects to include from migration.
     *
     */ "includeObjects" ? : Array < model . DatabaseObject > ; "goldenGateDetails" ? : model . GoldenGateDetails ; "vaultDetails" ? : model . VaultDetails ; /**
     * The time the Migration was created. An RFC3339 formatted datetime string.
     *
     */ "timeCreated" : Date ; /**
     * The time of the last Migration details update. An RFC3339 formatted datetime string.
     *
     */ "timeUpdated" ? : Date ; /**
     * The time of last Migration. An RFC3339 formatted datetime string.
     *
     */ "timeLastMigration" ? : Date ; /**
     * The current state of the Migration resource.
     *
     */ "lifecycleState" : model . MigrationLifecycleStates ; /**
     * Additional status related to the execution and current state of the Migration.
     *
     */ "lifecycleDetails" ? : model . MigrationStatus ; /**
     * 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 ; } ; } ; /**
     * Usage of system tag keys. These predefined keys are scoped to namespaces.
     * Example: `{\"orcl-cloud\": {\"free-tier-retained\": \"true\"}}`
     *
     */ "systemTags" ? : { [ key ] : { [ key ] : any ; } ; } ; } export namespace Migration { export function getJsonObj ( obj ) { const jsonObj = { ... obj , ... { "dataTransferMediumDetails" : obj . dataTransferMediumDetails ? model . DataTransferMediumDetails . getJsonObj ( obj . dataTransferMediumDetails ) : undefined , "dumpTransferDetails" : obj . dumpTransferDetails ? model . DumpTransferDetails . getJsonObj ( obj . dumpTransferDetails ) : undefined , "datapumpSettings" : obj . datapumpSettings ? model . DataPumpSettings . getJsonObj ( obj . datapumpSettings ) : undefined , "advisorSettings" : obj . advisorSettings ? model . AdvisorSettings . getJsonObj ( obj . advisorSettings ) : undefined , "excludeObjects" : obj . excludeObjects ? obj . excludeObjects . map ( item => { return model . DatabaseObject . getJsonObj ( item ) ; } ) : undefined , "includeObjects" : obj . includeObjects ? obj . includeObjects . map ( item => { return model . DatabaseObject . getJsonObj ( item ) ; } ) : undefined , "goldenGateDetails" : obj . goldenGateDetails ? model . GoldenGateDetails . getJsonObj ( obj . goldenGateDetails ) : undefined , "vaultDetails" : obj . vaultDetails ? model . VaultDetails . getJsonObj ( obj . vaultDetails ) : undefined } } ; return jsonObj ; } export function getDeserializedJsonObj ( obj ) { const jsonObj = { ... obj , ... { "dataTransferMediumDetails" : obj . dataTransferMediumDetails ? model . DataTransferMediumDetails . getDeserializedJsonObj ( obj . dataTransferMediumDetails ) : undefined , "dumpTransferDetails" : obj . dumpTransferDetails ? model . DumpTransferDetails . getDeserializedJsonObj ( obj . dumpTransferDetails ) : undefined , "datapumpSettings" : obj . datapumpSettings ? model . DataPumpSettings . getDeserializedJsonObj ( obj . datapumpSettings ) : undefined , "advisorSettings" : obj . advisorSettings ? model . AdvisorSettings . getDeserializedJsonObj ( obj . advisorSettings ) : undefined , "excludeObjects" : obj . excludeObjects ? obj . excludeObjects . map ( item => { return model . DatabaseObject . getDeserializedJsonObj ( item ) ; } ) : undefined , "includeObjects" : obj . includeObjects ? obj . includeObjects . map ( item => { return model . DatabaseObject . getDeserializedJsonObj ( item ) ; } ) : undefined , "goldenGateDetails" : obj . goldenGateDetails ? model . GoldenGateDetails . getDeserializedJsonObj ( obj . goldenGateDetails ) : undefined , "vaultDetails" : obj . vaultDetails ? model . VaultDetails . getDeserializedJsonObj ( obj . vaultDetails ) : undefined } } ; return jsonObj ; } }