"use strict";
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
    if (mod && mod.__esModule) return mod;
    var result = {};
    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
    __setModuleDefault(result, mod);
    return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ScheduledJob = void 0;
const pulumi = __importStar(require("@pulumi/pulumi"));
const utilities = __importStar(require("../utilities"));
/**
 * This resource provides the Scheduled Job resource in Oracle Cloud Infrastructure Os Management Hub service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/os-management/latest/ScheduledJob
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/os_management_hub
 *
 * Creates a new scheduled job.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testScheduledJob = new oci.osmanagementhub.ScheduledJob("test_scheduled_job", {
 *     compartmentId: compartmentId,
 *     operations: [{
 *         operationType: scheduledJobOperationsOperationType,
 *         installSnapDetails: {
 *             name: scheduledJobOperationsInstallSnapDetailsName,
 *             channel: scheduledJobOperationsInstallSnapDetailsChannel,
 *             isSigned: scheduledJobOperationsInstallSnapDetailsIsSigned === "true",
 *             mode: scheduledJobOperationsInstallSnapDetailsMode,
 *             revision: scheduledJobOperationsInstallSnapDetailsRevision,
 *         },
 *         manageModuleStreamsDetails: {
 *             disables: [{
 *                 moduleName: scheduledJobOperationsManageModuleStreamsDetailsDisableModuleName,
 *                 streamName: testStream.name,
 *                 softwareSourceId: testSoftwareSource.id,
 *             }],
 *             enables: [{
 *                 moduleName: scheduledJobOperationsManageModuleStreamsDetailsEnableModuleName,
 *                 streamName: testStream.name,
 *                 softwareSourceId: testSoftwareSource.id,
 *             }],
 *             installs: [{
 *                 moduleName: scheduledJobOperationsManageModuleStreamsDetailsInstallModuleName,
 *                 profileName: testProfile.name,
 *                 streamName: testStream.name,
 *                 softwareSourceId: testSoftwareSource.id,
 *             }],
 *             removes: [{
 *                 moduleName: scheduledJobOperationsManageModuleStreamsDetailsRemoveModuleName,
 *                 profileName: testProfile.name,
 *                 streamName: testStream.name,
 *                 softwareSourceId: testSoftwareSource.id,
 *             }],
 *         },
 *         packageNames: scheduledJobOperationsPackageNames,
 *         rebootTimeoutInMins: Number(scheduledJobOperationsRebootTimeoutInMins),
 *         removeSnapDetails: {
 *             name: scheduledJobOperationsRemoveSnapDetailsName,
 *             revision: scheduledJobOperationsRemoveSnapDetailsRevision,
 *         },
 *         softwareSourceIds: scheduledJobOperationsSoftwareSourceIds,
 *         switchModuleStreamsDetails: {
 *             moduleName: scheduledJobOperationsSwitchModuleStreamsDetailsModuleName,
 *             streamName: testStream.name,
 *             softwareSourceId: testSoftwareSource.id,
 *         },
 *         switchSnapChannelDetails: {
 *             name: scheduledJobOperationsSwitchSnapChannelDetailsName,
 *             channel: scheduledJobOperationsSwitchSnapChannelDetailsChannel,
 *         },
 *         windowsUpdateNames: scheduledJobOperationsWindowsUpdateNames,
 *     }],
 *     scheduleType: scheduledJobScheduleType,
 *     timeNextExecution: scheduledJobTimeNextExecution,
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     description: scheduledJobDescription,
 *     displayName: scheduledJobDisplayName,
 *     dynamicSetIds: scheduledJobDynamicSetIds,
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     isManagedByAutonomousLinux: scheduledJobIsManagedByAutonomousLinux === "true",
 *     isSubcompartmentIncluded: scheduledJobIsSubcompartmentIncluded === "true",
 *     lifecycleStageIds: scheduledJobLifecycleStageIds,
 *     locations: scheduledJobLocations,
 *     managedCompartmentIds: scheduledJobManagedCompartmentIds,
 *     managedInstanceGroupIds: scheduledJobManagedInstanceGroupIds,
 *     managedInstanceIds: scheduledJobManagedInstanceIds,
 *     recurringRule: scheduledJobRecurringRule,
 *     retryIntervals: scheduledJobRetryIntervals,
 *     workRequestId: testWorkRequest.id,
 * });
 * ```
 *
 * ## Import
 *
 * ScheduledJobs can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:OsManagementHub/scheduledJob:ScheduledJob test_scheduled_job "id"
 * ```
 */
class ScheduledJob extends pulumi.CustomResource {
    /**
     * Get an existing ScheduledJob resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name, id, state, opts) {
        return new ScheduledJob(name, state, { ...opts, id: id });
    }
    /** @internal */
    static __pulumiType = 'oci:OsManagementHub/scheduledJob:ScheduledJob';
    /**
     * Returns true if the given object is an instance of ScheduledJob.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj) {
        if (obj === undefined || obj === null) {
            return false;
        }
        return obj['__pulumiType'] === ScheduledJob.__pulumiType;
    }
    constructor(name, argsOrState, opts) {
        let resourceInputs = {};
        opts = opts || {};
        if (opts.id) {
            const state = argsOrState;
            resourceInputs["compartmentId"] = state?.compartmentId;
            resourceInputs["definedTags"] = state?.definedTags;
            resourceInputs["description"] = state?.description;
            resourceInputs["displayName"] = state?.displayName;
            resourceInputs["dynamicSetIds"] = state?.dynamicSetIds;
            resourceInputs["freeformTags"] = state?.freeformTags;
            resourceInputs["isManagedByAutonomousLinux"] = state?.isManagedByAutonomousLinux;
            resourceInputs["isRestricted"] = state?.isRestricted;
            resourceInputs["isSubcompartmentIncluded"] = state?.isSubcompartmentIncluded;
            resourceInputs["lifecycleStageIds"] = state?.lifecycleStageIds;
            resourceInputs["locations"] = state?.locations;
            resourceInputs["managedCompartmentIds"] = state?.managedCompartmentIds;
            resourceInputs["managedInstanceGroupIds"] = state?.managedInstanceGroupIds;
            resourceInputs["managedInstanceIds"] = state?.managedInstanceIds;
            resourceInputs["operations"] = state?.operations;
            resourceInputs["recurringRule"] = state?.recurringRule;
            resourceInputs["retryIntervals"] = state?.retryIntervals;
            resourceInputs["scheduleType"] = state?.scheduleType;
            resourceInputs["state"] = state?.state;
            resourceInputs["systemTags"] = state?.systemTags;
            resourceInputs["timeCreated"] = state?.timeCreated;
            resourceInputs["timeLastExecution"] = state?.timeLastExecution;
            resourceInputs["timeNextExecution"] = state?.timeNextExecution;
            resourceInputs["timeUpdated"] = state?.timeUpdated;
            resourceInputs["workRequestId"] = state?.workRequestId;
            resourceInputs["workRequestIds"] = state?.workRequestIds;
        }
        else {
            const args = argsOrState;
            if (args?.compartmentId === undefined && !opts.urn) {
                throw new Error("Missing required property 'compartmentId'");
            }
            if (args?.operations === undefined && !opts.urn) {
                throw new Error("Missing required property 'operations'");
            }
            if (args?.scheduleType === undefined && !opts.urn) {
                throw new Error("Missing required property 'scheduleType'");
            }
            if (args?.timeNextExecution === undefined && !opts.urn) {
                throw new Error("Missing required property 'timeNextExecution'");
            }
            resourceInputs["compartmentId"] = args?.compartmentId;
            resourceInputs["definedTags"] = args?.definedTags;
            resourceInputs["description"] = args?.description;
            resourceInputs["displayName"] = args?.displayName;
            resourceInputs["dynamicSetIds"] = args?.dynamicSetIds;
            resourceInputs["freeformTags"] = args?.freeformTags;
            resourceInputs["isManagedByAutonomousLinux"] = args?.isManagedByAutonomousLinux;
            resourceInputs["isSubcompartmentIncluded"] = args?.isSubcompartmentIncluded;
            resourceInputs["lifecycleStageIds"] = args?.lifecycleStageIds;
            resourceInputs["locations"] = args?.locations;
            resourceInputs["managedCompartmentIds"] = args?.managedCompartmentIds;
            resourceInputs["managedInstanceGroupIds"] = args?.managedInstanceGroupIds;
            resourceInputs["managedInstanceIds"] = args?.managedInstanceIds;
            resourceInputs["operations"] = args?.operations;
            resourceInputs["recurringRule"] = args?.recurringRule;
            resourceInputs["retryIntervals"] = args?.retryIntervals;
            resourceInputs["scheduleType"] = args?.scheduleType;
            resourceInputs["timeNextExecution"] = args?.timeNextExecution;
            resourceInputs["workRequestId"] = args?.workRequestId;
            resourceInputs["isRestricted"] = undefined /*out*/;
            resourceInputs["state"] = undefined /*out*/;
            resourceInputs["systemTags"] = undefined /*out*/;
            resourceInputs["timeCreated"] = undefined /*out*/;
            resourceInputs["timeLastExecution"] = undefined /*out*/;
            resourceInputs["timeUpdated"] = undefined /*out*/;
            resourceInputs["workRequestIds"] = undefined /*out*/;
        }
        opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
        super(ScheduledJob.__pulumiType, name, resourceInputs, opts);
    }
}
exports.ScheduledJob = ScheduledJob;
//# sourceMappingURL=scheduledJob.js.map