import faker from '@faker-js/faker'; const arrayOf = (f: () => T) => { const length = 3; return Array.from({ length, }, f); }; const objectOf = (f: () => T) => { const keys = ['foo', 'bar', 'qux']; return keys.reduce>((object, key) => { object[key] = f(); return object; }, {}); }; const factories = { boolean: () => faker.datatype.boolean(), date_iso_8601: () => faker.datatype.datetime().toISOString().slice(0, 10), date_time_iso_8601: () => faker.datatype.datetime().toISOString(), decimal: () => faker.datatype.float(), double: () => faker.datatype.float(), integer: () => faker.datatype.number(), json: () => faker.datatype.json(), long: () => faker.datatype.number(), object: () => faker.datatype.json(), string: () => faker.datatype.string(), unit: () => undefined, uuid: () => faker.datatype.uuid(), 'com.gilt.svc.sundial.v0.enums.default_emr_job_flow_role': (): com.gilt.svc.sundial.v0.enums.DefaultEmrJobFlowRole => faker.helpers.arrayElement(['EMR_EC2_DefaultRole']), 'com.gilt.svc.sundial.v0.enums.default_emr_service_role': (): com.gilt.svc.sundial.v0.enums.DefaultEmrServiceRole => faker.helpers.arrayElement(['EMR_DefaultRole']), 'com.gilt.svc.sundial.v0.enums.emr_application': (): com.gilt.svc.sundial.v0.enums.EmrApplication => faker.helpers.arrayElement(['Hadoop', 'Hive', 'Mahout', 'Pig', 'Spark']), 'com.gilt.svc.sundial.v0.enums.emr_release_label': (): com.gilt.svc.sundial.v0.enums.EmrReleaseLabel => faker.helpers.arrayElement([ 'emr-5.14.0', 'emr-5.13.0', 'emr-5.12.1', 'emr-5.12.0', 'emr-5.11.1', 'emr-5.11.0', 'emr-5.10.0', 'emr-5.9.0', 'emr-4.9.2', 'emr-4.9.1', ]), 'com.gilt.svc.sundial.v0.enums.notification_options': (): com.gilt.svc.sundial.v0.enums.NotificationOptions => faker.helpers.arrayElement([ 'always', 'on_failure', 'on_state_change', 'on_state_change_and_failures', 'never', ]), 'com.gilt.svc.sundial.v0.enums.on_demand': (): com.gilt.svc.sundial.v0.enums.OnDemand => faker.helpers.arrayElement(['on_demand']), 'com.gilt.svc.sundial.v0.enums.process_overlap_action': (): com.gilt.svc.sundial.v0.enums.ProcessOverlapAction => faker.helpers.arrayElement(['wait', 'terminate']), 'com.gilt.svc.sundial.v0.enums.process_status': (): com.gilt.svc.sundial.v0.enums.ProcessStatus => faker.helpers.arrayElement(['running', 'succeeded', 'failed']), 'com.gilt.svc.sundial.v0.enums.task_status': (): com.gilt.svc.sundial.v0.enums.TaskStatus => faker.helpers.arrayElement([ 'submitted', 'runnable', 'starting', 'pending', 'running', 'failed', 'succeeded', ]), 'com.gilt.svc.sundial.v0.models.batch_image_command': (): com.gilt.svc.sundial.v0.models.BatchImageCommand => ({ discriminator: 'batch_image_command', image: factories.string(), tag: factories.string(), command: arrayOf(() => factories.string()), memory: factories.integer(), vCpus: factories.integer(), job_role_arn: factories.string(), environment_variables: arrayOf(() => factories['com.gilt.svc.sundial.v0.models.environment_variable']()), job_queue: factories.string(), }), 'com.gilt.svc.sundial.v0.models.continuous_schedule': (): com.gilt.svc.sundial.v0.models.ContinuousSchedule => ({ discriminator: 'continuous_schedule', buffer_seconds: factories.integer(), }), 'com.gilt.svc.sundial.v0.models.cron_schedule': (): com.gilt.svc.sundial.v0.models.CronSchedule => ({ discriminator: 'cron_schedule', day_of_week: factories.string(), month: factories.string(), day_of_month: factories.string(), hours: factories.string(), minutes: factories.string(), }), 'com.gilt.svc.sundial.v0.models.custom_emr_job_flow_role': (): com.gilt.svc.sundial.v0.models.CustomEmrJobFlowRole => ({ discriminator: 'custom_emr_job_flow_role', role_name: factories.string(), }), 'com.gilt.svc.sundial.v0.models.custom_emr_service_role': (): com.gilt.svc.sundial.v0.models.CustomEmrServiceRole => ({ discriminator: 'custom_emr_service_role', role_name: factories.string(), }), 'com.gilt.svc.sundial.v0.models.docker_image_command': (): com.gilt.svc.sundial.v0.models.DockerImageCommand => ({ discriminator: 'docker_image_command', image: factories.string(), tag: factories.string(), command: arrayOf(() => factories.string()), memory: factories.integer(), cpu: factories.integer(), taskRoleArn: factories.string(), log_paths: arrayOf(() => factories.string()), environment_variables: arrayOf(() => factories['com.gilt.svc.sundial.v0.models.environment_variable']()), }), 'com.gilt.svc.sundial.v0.models.email': (): com.gilt.svc.sundial.v0.models.Email => ({ discriminator: 'email', name: factories.string(), email: factories.string(), notify_when: factories['com.gilt.svc.sundial.v0.enums.notification_options'](), }), 'com.gilt.svc.sundial.v0.models.emr_command': (): com.gilt.svc.sundial.v0.models.EmrCommand => ({ discriminator: 'emr_command', emr_cluster: factories['com.gilt.svc.sundial.v0.unions.emr_cluster'](), job_name: factories.string(), region: factories.string(), 'class': factories.string(), s3_jar_path: factories.string(), spark_conf: arrayOf(() => factories.string()), args: arrayOf(() => factories.string()), s3_log_details: factories['com.gilt.svc.sundial.v0.models.s3_log_details'](), load_data: arrayOf(() => factories['com.gilt.svc.sundial.v0.models.s3_cp']()), save_results: arrayOf(() => factories['com.gilt.svc.sundial.v0.models.s3_cp']()), }), 'com.gilt.svc.sundial.v0.models.emr_instance_group_details': (): com.gilt.svc.sundial.v0.models.EmrInstanceGroupDetails => ({ emr_instance_type: factories.string(), instance_count: factories.integer(), aws_market: factories['com.gilt.svc.sundial.v0.unions.aws_market'](), ebs_volume_size: factories.integer(), }), 'com.gilt.svc.sundial.v0.models.environment_variable': (): com.gilt.svc.sundial.v0.models.EnvironmentVariable => ({ variable_name: factories.string(), value: factories.string(), }), 'com.gilt.svc.sundial.v0.models.existing_emr_cluster': (): com.gilt.svc.sundial.v0.models.ExistingEmrCluster => ({ discriminator: 'existing_emr_cluster', cluster_id: factories.string(), }), 'com.gilt.svc.sundial.v0.models.healthcheck': (): com.gilt.svc.sundial.v0.models.Healthcheck => ({ status: factories.string(), }), 'com.gilt.svc.sundial.v0.models.log_entry': (): com.gilt.svc.sundial.v0.models.LogEntry => ({ log_entry_id: factories.uuid(), when: factories.date_time_iso_8601(), source: factories.string(), message: factories.string(), }), 'com.gilt.svc.sundial.v0.models.metadata_entry': (): com.gilt.svc.sundial.v0.models.MetadataEntry => ({ metadata_entry_id: factories.uuid(), when: factories.date_time_iso_8601(), key: factories.string(), value: factories.string(), }), 'com.gilt.svc.sundial.v0.models.new_emr_cluster': (): com.gilt.svc.sundial.v0.models.NewEmrCluster => ({ discriminator: 'new_emr_cluster', name: factories.string(), release_label: factories['com.gilt.svc.sundial.v0.enums.emr_release_label'](), applications: arrayOf(() => factories['com.gilt.svc.sundial.v0.enums.emr_application']()), s3_log_uri: factories.string(), master_instance: factories['com.gilt.svc.sundial.v0.models.emr_instance_group_details'](), core_instance: factories['com.gilt.svc.sundial.v0.models.emr_instance_group_details'](), task_instance: factories['com.gilt.svc.sundial.v0.models.emr_instance_group_details'](), ec2_subnet: factories.string(), emr_service_role: factories['com.gilt.svc.sundial.v0.unions.emr_service_role'](), emr_job_flow_role: factories['com.gilt.svc.sundial.v0.unions.emr_job_flow_role'](), visible_to_all_users: factories.boolean(), }), 'com.gilt.svc.sundial.v0.models.pagerduty': (): com.gilt.svc.sundial.v0.models.Pagerduty => ({ discriminator: 'pagerduty', service_key: factories.string(), num_consecutive_failures: factories.integer(), api_url: factories.string(), }), 'com.gilt.svc.sundial.v0.models.process': (): com.gilt.svc.sundial.v0.models.Process => ({ process_id: factories.uuid(), process_definition_name: factories.string(), start_time: factories.date_time_iso_8601(), status: factories['com.gilt.svc.sundial.v0.enums.process_status'](), task: arrayOf(() => factories['com.gilt.svc.sundial.v0.models.task']()), }), 'com.gilt.svc.sundial.v0.models.process_definition': (): com.gilt.svc.sundial.v0.models.ProcessDefinition => ({ process_definition_name: factories.string(), paused: factories.boolean(), process_description: factories.string(), schedule: factories['com.gilt.svc.sundial.v0.unions.process_schedule'](), task_definitions: arrayOf(() => factories['com.gilt.svc.sundial.v0.models.task_definition']()), overlap_action: factories['com.gilt.svc.sundial.v0.enums.process_overlap_action'](), notifications: arrayOf(() => factories['com.gilt.svc.sundial.v0.unions.notification']()), }), 'com.gilt.svc.sundial.v0.models.s3_cp': (): com.gilt.svc.sundial.v0.models.S3Cp => ({ source: factories.string(), destination: factories.string(), }), 'com.gilt.svc.sundial.v0.models.s3_log_details': (): com.gilt.svc.sundial.v0.models.S3LogDetails => ({ log_group_name: factories.string(), log_stream_name: factories.string(), }), 'com.gilt.svc.sundial.v0.models.shell_script_command': (): com.gilt.svc.sundial.v0.models.ShellScriptCommand => ({ discriminator: 'shell_script_command', script: factories.string(), environment_variables: arrayOf(() => factories['com.gilt.svc.sundial.v0.models.environment_variable']()), }), 'com.gilt.svc.sundial.v0.models.spot': (): com.gilt.svc.sundial.v0.models.Spot => ({ discriminator: 'spot', bid_price: factories.decimal(), }), 'com.gilt.svc.sundial.v0.models.task': (): com.gilt.svc.sundial.v0.models.Task => ({ task_id: factories.uuid(), process_id: factories.uuid(), process_definition_name: factories.string(), task_definition_name: factories.string(), start_time: factories.date_time_iso_8601(), end_time: factories.date_time_iso_8601(), previous_attempt_count: factories.integer(), log_entries: arrayOf(() => factories['com.gilt.svc.sundial.v0.models.log_entry']()), metadata_entries: arrayOf(() => factories['com.gilt.svc.sundial.v0.models.metadata_entry']()), execution_state: arrayOf(() => factories['com.gilt.svc.sundial.v0.models.metadata_entry']()), status: factories['com.gilt.svc.sundial.v0.enums.task_status'](), }), 'com.gilt.svc.sundial.v0.models.task_definition': (): com.gilt.svc.sundial.v0.models.TaskDefinition => ({ task_definition_name: factories.string(), dependencies: arrayOf(() => factories['com.gilt.svc.sundial.v0.models.task_dependency']()), executable: factories['com.gilt.svc.sundial.v0.unions.task_executable'](), max_attempts: factories.integer(), max_runtime_seconds: factories.integer(), backoff_base_seconds: factories.integer(), backoff_exponent: factories.double(), require_explicit_success: factories.boolean(), }), 'com.gilt.svc.sundial.v0.models.task_dependency': (): com.gilt.svc.sundial.v0.models.TaskDependency => ({ task_definition_name: factories.string(), success_required: factories.boolean(), }), 'com.gilt.svc.sundial.v0.unions.aws_market': (): com.gilt.svc.sundial.v0.unions.AwsMarket => { const f = faker.helpers.arrayElement([() => ({ discriminator: 'on_demand' as const, value: factories['com.gilt.svc.sundial.v0.enums.on_demand'](), }), () => factories['com.gilt.svc.sundial.v0.models.spot']()]); return f(); }, 'com.gilt.svc.sundial.v0.unions.emr_cluster': (): com.gilt.svc.sundial.v0.unions.EmrCluster => { const f = faker.helpers.arrayElement([ () => factories['com.gilt.svc.sundial.v0.models.new_emr_cluster'](), () => factories['com.gilt.svc.sundial.v0.models.existing_emr_cluster'](), ]); return f(); }, 'com.gilt.svc.sundial.v0.unions.emr_job_flow_role': (): com.gilt.svc.sundial.v0.unions.EmrJobFlowRole => { const f = faker.helpers.arrayElement([() => ({ discriminator: 'default_emr_job_flow_role' as const, value: factories['com.gilt.svc.sundial.v0.enums.default_emr_job_flow_role'](), }), () => factories['com.gilt.svc.sundial.v0.models.custom_emr_job_flow_role']()]); return f(); }, 'com.gilt.svc.sundial.v0.unions.emr_service_role': (): com.gilt.svc.sundial.v0.unions.EmrServiceRole => { const f = faker.helpers.arrayElement([() => ({ discriminator: 'default_emr_service_role' as const, value: factories['com.gilt.svc.sundial.v0.enums.default_emr_service_role'](), }), () => factories['com.gilt.svc.sundial.v0.models.custom_emr_service_role']()]); return f(); }, 'com.gilt.svc.sundial.v0.unions.notification': (): com.gilt.svc.sundial.v0.unions.Notification => { const f = faker.helpers.arrayElement([ () => factories['com.gilt.svc.sundial.v0.models.email'](), () => factories['com.gilt.svc.sundial.v0.models.pagerduty'](), ]); return f(); }, 'com.gilt.svc.sundial.v0.unions.process_schedule': (): com.gilt.svc.sundial.v0.unions.ProcessSchedule => { const f = faker.helpers.arrayElement([ () => factories['com.gilt.svc.sundial.v0.models.cron_schedule'](), () => factories['com.gilt.svc.sundial.v0.models.continuous_schedule'](), ]); return f(); }, 'com.gilt.svc.sundial.v0.unions.task_executable': (): com.gilt.svc.sundial.v0.unions.TaskExecutable => { const f = faker.helpers.arrayElement([ () => factories['com.gilt.svc.sundial.v0.models.docker_image_command'](), () => factories['com.gilt.svc.sundial.v0.models.shell_script_command'](), () => factories['com.gilt.svc.sundial.v0.models.batch_image_command'](), () => factories['com.gilt.svc.sundial.v0.models.emr_command'](), ]); return f(); }, }; export const makeAwsMarket = () => factories['com.gilt.svc.sundial.v0.unions.aws_market'](); export const makeBatchImageCommand = () => factories['com.gilt.svc.sundial.v0.models.batch_image_command'](); export const makeContinuousSchedule = () => factories['com.gilt.svc.sundial.v0.models.continuous_schedule'](); export const makeCronSchedule = () => factories['com.gilt.svc.sundial.v0.models.cron_schedule'](); export const makeCustomEmrJobFlowRole = () => factories['com.gilt.svc.sundial.v0.models.custom_emr_job_flow_role'](); export const makeCustomEmrServiceRole = () => factories['com.gilt.svc.sundial.v0.models.custom_emr_service_role'](); export const makeDefaultEmrJobFlowRole = () => factories['com.gilt.svc.sundial.v0.enums.default_emr_job_flow_role'](); export const makeDefaultEmrServiceRole = () => factories['com.gilt.svc.sundial.v0.enums.default_emr_service_role'](); export const makeDockerImageCommand = () => factories['com.gilt.svc.sundial.v0.models.docker_image_command'](); export const makeEmail = () => factories['com.gilt.svc.sundial.v0.models.email'](); export const makeEmrApplication = () => factories['com.gilt.svc.sundial.v0.enums.emr_application'](); export const makeEmrCluster = () => factories['com.gilt.svc.sundial.v0.unions.emr_cluster'](); export const makeEmrCommand = () => factories['com.gilt.svc.sundial.v0.models.emr_command'](); export const makeEmrInstanceGroupDetails = () => factories['com.gilt.svc.sundial.v0.models.emr_instance_group_details'](); export const makeEmrJobFlowRole = () => factories['com.gilt.svc.sundial.v0.unions.emr_job_flow_role'](); export const makeEmrReleaseLabel = () => factories['com.gilt.svc.sundial.v0.enums.emr_release_label'](); export const makeEmrServiceRole = () => factories['com.gilt.svc.sundial.v0.unions.emr_service_role'](); export const makeEnvironmentVariable = () => factories['com.gilt.svc.sundial.v0.models.environment_variable'](); export const makeExistingEmrCluster = () => factories['com.gilt.svc.sundial.v0.models.existing_emr_cluster'](); export const makeHealthcheck = () => factories['com.gilt.svc.sundial.v0.models.healthcheck'](); export const makeLogEntry = () => factories['com.gilt.svc.sundial.v0.models.log_entry'](); export const makeMetadataEntry = () => factories['com.gilt.svc.sundial.v0.models.metadata_entry'](); export const makeNewEmrCluster = () => factories['com.gilt.svc.sundial.v0.models.new_emr_cluster'](); export const makeNotification = () => factories['com.gilt.svc.sundial.v0.unions.notification'](); export const makeNotificationOptions = () => factories['com.gilt.svc.sundial.v0.enums.notification_options'](); export const makeOnDemand = () => factories['com.gilt.svc.sundial.v0.enums.on_demand'](); export const makePagerduty = () => factories['com.gilt.svc.sundial.v0.models.pagerduty'](); export const makeProcess = () => factories['com.gilt.svc.sundial.v0.models.process'](); export const makeProcessDefinition = () => factories['com.gilt.svc.sundial.v0.models.process_definition'](); export const makeProcessOverlapAction = () => factories['com.gilt.svc.sundial.v0.enums.process_overlap_action'](); export const makeProcessSchedule = () => factories['com.gilt.svc.sundial.v0.unions.process_schedule'](); export const makeProcessStatus = () => factories['com.gilt.svc.sundial.v0.enums.process_status'](); export const makeS3Cp = () => factories['com.gilt.svc.sundial.v0.models.s3_cp'](); export const makeS3LogDetails = () => factories['com.gilt.svc.sundial.v0.models.s3_log_details'](); export const makeShellScriptCommand = () => factories['com.gilt.svc.sundial.v0.models.shell_script_command'](); export const makeSpot = () => factories['com.gilt.svc.sundial.v0.models.spot'](); export const makeTask = () => factories['com.gilt.svc.sundial.v0.models.task'](); export const makeTaskDefinition = () => factories['com.gilt.svc.sundial.v0.models.task_definition'](); export const makeTaskDependency = () => factories['com.gilt.svc.sundial.v0.models.task_dependency'](); export const makeTaskExecutable = () => factories['com.gilt.svc.sundial.v0.unions.task_executable'](); export const makeTaskStatus = () => factories['com.gilt.svc.sundial.v0.enums.task_status']();