diff --git a/404.html b/404.html index 07bce281f..5072ad394 100644 --- a/404.html +++ b/404.html @@ -4,7 +4,7 @@ Page Not Found | Operational Recovery Cloud Archive (ORCA) - + diff --git a/assets/js/7c9fa1db.60fe90f6.js b/assets/js/7c9fa1db.c16c7c9e.js similarity index 65% rename from assets/js/7c9fa1db.60fe90f6.js rename to assets/js/7c9fa1db.c16c7c9e.js index 2e171b715..efd7ae37f 100644 --- a/assets/js/7c9fa1db.60fe90f6.js +++ b/assets/js/7c9fa1db.c16c7c9e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkorca_website=self.webpackChunkorca_website||[]).push([[2096],{4099:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>d,toc:()=>l});var t=n(4848),s=n(8453);const i={id:"deployment-with-cumulus",title:"Deploying ORCA with Cumulus",description:"Provides developer information for ORCA code deployment with Cumulus."},o=void 0,d={id:"developer/deployment-guide/deployment-with-cumulus",title:"Deploying ORCA with Cumulus",description:"Provides developer information for ORCA code deployment with Cumulus.",source:"@site/docs/developer/deployment-guide/deployment-with-cumulus.md",sourceDirName:"developer/deployment-guide",slug:"/developer/deployment-guide/deployment-with-cumulus",permalink:"/cumulus-orca/docs/developer/deployment-guide/deployment-with-cumulus",draft:!1,unlisted:!1,editUrl:"https://github.com/nasa/cumulus-orca/edit/develop/website/docs/developer/deployment-guide/deployment-with-cumulus.md",tags:[],version:"current",frontMatter:{id:"deployment-with-cumulus",title:"Deploying ORCA with Cumulus",description:"Provides developer information for ORCA code deployment with Cumulus."},sidebar:"dev_guide",previous:{title:"Generating S3 credentials",permalink:"/cumulus-orca/docs/developer/deployment-guide/deployment-s3-credentials"},next:{title:"Upgrading ORCA",permalink:"/cumulus-orca/docs/developer/deployment-guide/deployment-upgrading-orca"}},a={},l=[{value:"Configuring the ORCA Deployment",id:"configuring-the-orca-deployment",level:2},{value:"Creating cumulus-tf/orca.tf",id:"creating-cumulus-tforcatf",level:3},{value:"Required Values Unique to the ORCA Module",id:"required-values-unique-to-the-orca-module",level:4},{value:"Required Values Retrieved from Cumulus Variables",id:"required-values-retrieved-from-cumulus-variables",level:4},{value:"Creating cumulus-tf/orca_variables.tf",id:"creating-cumulus-tforca_variablestf",level:3},{value:"Modifying cumulus-tf/terraform.tfvars",id:"modifying-cumulus-tfterraformtfvars",level:3},{value:"Define the ORCA Workflows",id:"define-the-orca-workflows",level:2},{value:"Add the Move Granule Step to an Ingest Workflow",id:"add-the-move-granule-step-to-an-ingest-workflow",level:3},{value:"Add the CopyToArchive Step to an Ingest Workflow",id:"add-the-copytoarchive-step-to-an-ingest-workflow",level:3},{value:"Modify the Recovery Workflow",id:"modify-the-recovery-workflow",level:3},{value:"Workflow Failures",id:"workflow-failures",level:3},{value:"ORCA Variables",id:"orca-variables",level:2},{value:"Required Variables",id:"required-variables",level:3},{value:"Cumulus Required Variables",id:"cumulus-required-variables",level:4},{value:"ORCA Required Variables",id:"orca-required-variables",level:4},{value:"Optional Variables",id:"optional-variables",level:3},{value:"Cumulus Optional Variables",id:"cumulus-optional-variables",level:4},{value:"ORCA Optional Variables",id:"orca-optional-variables",level:4},{value:"ORCA Module Outputs",id:"orca-module-outputs",level:2},{value:"Deploy ORCA with Terraform",id:"deploy-orca-with-terraform",level:2},{value:"Collection Configuration",id:"collection-configuration",level:2},{value:"Enable Recover Granule Button",id:"enable-recover-granule-button",level:2}];function c(e){const r={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.admonition,{type:"important",children:(0,t.jsxs)(r.p,{children:["Prior to following this document, make sure that your ",(0,t.jsx)(r.a,{href:"/cumulus-orca/docs/developer/deployment-guide/deployment-environment",children:"deployment environment"}),"\nis setup and an ",(0,t.jsx)(r.a,{href:"/cumulus-orca/docs/developer/deployment-guide/deployment-s3-bucket",children:"ORCA archive bucket"})," is\ncreated."]})}),"\n",(0,t.jsxs)(r.p,{children:["ORCA is meant to be deployed with Cumulus. To deploy ORCA add and/or modify the\nfiles in the Cumulus ",(0,t.jsx)(r.code,{children:"cumulus-tf"})," deployment."]}),"\n",(0,t.jsx)(r.p,{children:"The general steps to deploy and use ORCA are:"}),"\n",(0,t.jsxs)(r.ol,{children:["\n",(0,t.jsx)(r.li,{children:(0,t.jsx)(r.a,{href:"#configuring-the-orca-deployment",children:"Configure the ORCA deployment."})}),"\n",(0,t.jsx)(r.li,{children:(0,t.jsx)(r.a,{href:"#define-the-orca-wokflows",children:"Define the ORCA Ingest and Recovery workflows."})}),"\n",(0,t.jsx)(r.li,{children:(0,t.jsx)(r.a,{href:"#deploy-orca-with-terraform",children:"Deploy ORCA using terraform."})}),"\n",(0,t.jsx)(r.li,{children:(0,t.jsx)(r.a,{href:"#collection-configuration",children:"Configure ORCA in the collection configuration of the running Cumulus instance."})}),"\n"]}),"\n",(0,t.jsx)(r.h2,{id:"configuring-the-orca-deployment",children:"Configuring the ORCA Deployment"}),"\n",(0,t.jsxs)(r.p,{children:["Follow the instructions for ",(0,t.jsx)(r.a,{href:"https://nasa.github.io/cumulus/docs/deployment/deployment-readme",children:"deploying Cumulus"}),"\non the Cumulus website through the configuration of the Cumulus module ",(0,t.jsx)(r.code,{children:"cumulus-tf"}),"."]}),"\n",(0,t.jsxs)(r.p,{children:["Prior to deploying the ",(0,t.jsx)(r.code,{children:"cumulus-tf"})," module, the following files need to be added\nand/or modified to deploy ORCA with Cumulus."]}),"\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsx)(r.li,{children:"orca.tf"}),"\n",(0,t.jsx)(r.li,{children:"orca_variables.tf"}),"\n",(0,t.jsx)(r.li,{children:"terraform.tfvars"}),"\n",(0,t.jsx)(r.li,{children:"main.tf"}),"\n"]}),"\n",(0,t.jsxs)(r.h3,{id:"creating-cumulus-tforcatf",children:["Creating ",(0,t.jsx)(r.code,{children:"cumulus-tf/orca.tf"})]}),"\n",(0,t.jsxs)(r.p,{children:["Create the ",(0,t.jsx)(r.code,{children:"orca.tf"})," file in the ",(0,t.jsx)(r.code,{children:"cumulus-tf"})," directory and copy the code below\ninto the new ",(0,t.jsx)(r.code,{children:"orca.tf"})," file. Update the source variable with the preferred\nORCA version."]}),"\n",(0,t.jsx)(r.admonition,{title:"Only change the value of source",type:"important",children:(0,t.jsxs)(r.p,{children:["Only change the value of ",(0,t.jsx)(r.code,{children:"source"})," in the code example below to point to the\nproper ORCA version. The ORCA version is specified right after ",(0,t.jsx)(r.em,{children:"download"})," in the\nURL path to the release. In the example below the release being used is v3.0.2."]})}),"\n",(0,t.jsx)(r.admonition,{title:"Deploying a local version",type:"tip",children:(0,t.jsxs)(r.p,{children:["If you wish to deploy code cloned locally from ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus-orca",children:"Github"})," instead of a release zip, run\n",(0,t.jsx)(r.code,{children:"./bin/build_tasks.sh"}),". This will crawl the ",(0,t.jsx)(r.code,{children:"tasks"})," directory and build a ",(0,t.jsx)(r.code,{children:".zip"})," file (currently by just ",(0,t.jsx)(r.code,{children:"zipping"})," all python files and dependencies) in each of it's sub-directories. You may then set ",(0,t.jsx)(r.code,{children:"source"})," to the root folder of your cloned Orca repository."]})}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-terraform",children:'## ORCA Module\n## =============================================================================\nmodule "orca" {\n source = "https://github.com/nasa/cumulus-orca/releases/download/v9.0.0/cumulus-orca-terraform.zip"\n ## --------------------------\n ## Cumulus Variables\n ## --------------------------\n ## REQUIRED\n aws_region = var.region\n buckets = var.buckets\n lambda_subnet_ids = var.lambda_subnet_ids\n permissions_boundary_arn = var.permissions_boundary_arn\n prefix = var.prefix\n system_bucket = var.system_bucket\n vpc_id = var.vpc_id\n\n ## OPTIONAL\n tags = var.tags\n\n ## --------------------------\n ## ORCA Variables\n ## --------------------------\n ## REQUIRED\n db_admin_password = var.db_admin_password\n db_host_endpoint = var.db_host_endpoint\n db_user_password = var.db_user_password\n dlq_subscription_email = var.dlq_subscription_email\n orca_default_bucket = var.orca_default_bucket\n orca_reports_bucket_name = var.orca_reports_bucket_name\n rds_security_group_id = var.rds_security_group_id\n\n ## OPTIONAL\n # archive_recovery_queue_message_retention_time_seconds = 777600\n # db_admin_username = "postgres"\n # default_multipart_chunksize_mb = 250\n # log_level = "INFO"\n # metadata_queue_message_retention_time = 777600\n # orca_default_recovery_type = "Standard"\n # orca_default_storage_class = "GLACIER"\n # orca_delete_old_reconcile_jobs_frequency_cron = "cron(0 0 ? * SUN *)"\n # orca_ingest_lambda_memory_size = 2240\n # orca_ingest_lambda_timeout = 600\n # orca_internal_reconciliation_expiration_days = 30\n # orca_reconciliation_lambda_memory_size = 128\n # orca_reconciliation_lambda_timeout = 720\n # orca_recovery_buckets = []\n # orca_recovery_complete_filter_prefix = ""\n # orca_recovery_expiration_days = 5\n # orca_recovery_lambda_memory_size = 128\n # orca_recovery_lambda_timeout = 720\n # orca_recovery_retry_limit = 3\n # orca_recovery_retry_interval = 1\n # orca_recovery_retry_backoff = 2\n # s3_inventory_queue_message_retention_time_seconds = 432000\n # s3_report_frequency = "Daily"\n # sqs_delay_time_seconds = 0\n # sqs_maximum_message_size = 262144\n # staged_recovery_queue_message_retention_time_seconds = 432000\n # status_update_queue_message_retention_time_seconds = 777600\n\n\n}\n'})}),"\n",(0,t.jsx)(r.h4,{id:"required-values-unique-to-the-orca-module",children:"Required Values Unique to the ORCA Module"}),"\n",(0,t.jsxs)(r.p,{children:["The following variables are unique to the ORCA module and required to be set by\nthe user. More information about these required variables, as well as the\noptional variables can be found in the ",(0,t.jsx)(r.a,{href:"#orca-variables",children:"variables section"}),"."]}),"\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsx)(r.li,{children:"db_admin_password"}),"\n",(0,t.jsx)(r.li,{children:"orca_default_bucket"}),"\n",(0,t.jsx)(r.li,{children:"orca_reports_bucket_name"}),"\n",(0,t.jsx)(r.li,{children:"db_user_password"}),"\n",(0,t.jsx)(r.li,{children:"db_host_endpoint"}),"\n",(0,t.jsx)(r.li,{children:"rds_security_group_id"}),"\n",(0,t.jsx)(r.li,{children:"dlq_subscription_email"}),"\n"]}),"\n",(0,t.jsx)(r.h4,{id:"required-values-retrieved-from-cumulus-variables",children:"Required Values Retrieved from Cumulus Variables"}),"\n",(0,t.jsxs)(r.p,{children:["The following variables are set as part of your Cumulus deployment and are\nrequired by the ORCA module. More information about setting these variables can\nbe found in the ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/blob/master/tf-modules/cumulus/variables.tf",children:"Cumulus variable definitions"}),".\nThe variables must be set with the proper values in the ",(0,t.jsx)(r.code,{children:"terraform.tfvars"})," file."]}),"\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsx)(r.li,{children:"buckets"}),"\n",(0,t.jsx)(r.li,{children:"lambda_subnet_ids"}),"\n",(0,t.jsx)(r.li,{children:"permissions_boundary_arn"}),"\n",(0,t.jsx)(r.li,{children:"prefix"}),"\n",(0,t.jsx)(r.li,{children:"system_bucket"}),"\n",(0,t.jsx)(r.li,{children:"vpc_id"}),"\n"]}),"\n",(0,t.jsx)(r.admonition,{title:"Optional Cumulus Values",type:"note",children:(0,t.jsxs)(r.p,{children:["The ",(0,t.jsx)(r.code,{children:"tags"})," value automatically adds a ",(0,t.jsx)(r.em,{children:"Deployment"})," tag like the Cumulus\ndeployment."]})}),"\n",(0,t.jsxs)(r.h3,{id:"creating-cumulus-tforca_variablestf",children:["Creating ",(0,t.jsx)(r.code,{children:"cumulus-tf/orca_variables.tf"})]}),"\n",(0,t.jsxs)(r.p,{children:["In the ",(0,t.jsx)(r.code,{children:"cumulus-tf"})," directory create the ",(0,t.jsx)(r.code,{children:"orca_variables.tf"})," file. Copy the\ncontents below into the file so that the ORCA unique variables are defined.\nFor more information on the variables, see the ",(0,t.jsx)(r.a,{href:"#orca-variables",children:"variables section"}),"."]}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-terraform",children:'## Variables unique to ORCA\n## REQUIRED\nvariable "db_admin_password" {\n description = "Password for RDS database administrator authentication"\n type = string\n}\n\nvariable "db_user_password" {\n description = "Password for RDS database user authentication"\n type = string\n}\n\nvariable "db_host_endpoint" {\n type = string\n description = "Database host endpoint to connect to."\n}\n\nvariable "dlq_subscription_email" {\n type = string\n description = "The email to notify users when messages are received in dead letter SQS queue due to restore failure. Sends one email until the dead letter queue is emptied."\n}\n\nvariable "orca_default_bucket" {\n type = string\n description = "Default archive bucket to use."\n}\n\nvariable "orca_reports_bucket_name" {\n type = string\n description = "The name of the bucket to store s3 inventory reports."\n}\n\nvariable "rds_security_group_id" {\n type = string\n description = "Cumulus\' RDS Security Group\'s ID."\n}\n\n'})}),"\n",(0,t.jsxs)(r.h3,{id:"modifying-cumulus-tfterraformtfvars",children:["Modifying ",(0,t.jsx)(r.code,{children:"cumulus-tf/terraform.tfvars"})]}),"\n",(0,t.jsxs)(r.p,{children:["At the end of the ",(0,t.jsx)(r.code,{children:"terraform.tfvars"})," file, add the following code. Update the\nrequired and optional variable values to the values needed for your particular\nenvironment."]}),"\n",(0,t.jsx)(r.admonition,{type:"note",children:(0,t.jsxs)(r.p,{children:["The example below shows the minimum variables to set for the module and accepting\ndefault values for all of the optional items. The ",(0,t.jsx)(r.a,{href:"#orca-variables",children:"ORCA variables section"}),"\nprovides additional information on variables that can be set for the ORCA application."]})}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-terraform",children:'## =============================================================================\n## ORCA Variables\n## =============================================================================\n\n## REQUIRED TO BE SET\n## -----------------------------------------------------------------------------\n\n## ORCA application database user password.\ndb_user_password = "my-super-secret-orca-application-user-password"\n\n## Default archive bucket to use\norca_default_bucket = "orca-archive-primary"\n\n## The name of the bucket to store s3 inventory reports.\norca_reports_bucket_name = "PREFIX-orca-reports"\n\n## PostgreSQL database (root) user password\ndb_admin_password = "my-super-secret-database-owner-password"\n\n## PostgreSQL database host endpoint to connect to.\ndb_host_endpoint = "aws.postgresrds.host"\n\n## Cumulus\' RDS Security Group\'s ID.\nrds_security_group_id = "sg-01234567890123456"\n\n## Dead letter queue SNS topic subscription email.\ndlq_subscription_email = "test@email.com"\n\n'})}),"\n",(0,t.jsx)(r.p,{children:"Below describes the type of value expected for each variable."}),"\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"db_user_password"})," (string) - the password for the application user."]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"orca_default_bucket"})," (string) - default S3 archive bucket to use for ORCA data."]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"db_admin_password"})," (string) - password for the admin user."]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"db_host_endpoint"}),"(string) - Database host endpoint to connect to."]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"db_user_password"})," (string) - the password for the application user."]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"dlq_subscription_email"}),'(string) - "The email to notify users when messages are received in dead letter SQS queue due to restore failure. Sends one email until the dead letter queue is emptied."']}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"orca_default_bucket"})," (string) - Default S3 archive bucket to use for ORCA data."]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"orca_reports_bucket_name"})," (string) - The name of the bucket to store s3 inventory reports."]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"rds_security_group_id"}),"(string) - Cumulus' RDS Security Group's ID. Output as ",(0,t.jsx)(r.code,{children:"security_group_id"})," from the rds-cluster deployment."]}),"\n"]}),"\n",(0,t.jsxs)(r.p,{children:["Additional variable definitions can be found in the ",(0,t.jsx)(r.a,{href:"#orca-variables",children:"ORCA variables"}),"\nsection of the document."]}),"\n",(0,t.jsxs)(r.admonition,{type:"important",children:[(0,t.jsxs)(r.p,{children:["The cumulus ",(0,t.jsx)(r.code,{children:"buckets"})," variable will have to be modified to include the\ndisaster recovery buckets with a ",(0,t.jsx)(r.em,{children:"type"})," of ",(0,t.jsx)(r.strong,{children:"orca"}),". An example can be seen below.\nThis addition is required for ORCA to have the proper bucket permissions to\nwork with Cumulus."]}),(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-terraform",children:'buckets = {\n orca_default = {\n name = "orca-archive-primary"\n type = "orca"\n },\n internal = {\n name = "orca-internal"\n type = "internal"\n },\n private = {\n name = "orca-private"\n type = "private"\n },\n protected = {\n name = "orca-protected"\n type = "protected"\n },\n public = {\n name = "orca-public"\n type = "public"\n }\n}\n'})})]}),"\n",(0,t.jsx)(r.h2,{id:"define-the-orca-workflows",children:"Define the ORCA Workflows"}),"\n",(0,t.jsx)(r.p,{children:"The ORCA Ingest Workflows follows each step listed below. Adding the\nMoveGranuleStep and the CopyToArchive Step are detailed in their respective\nsections."}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"ORCA Ingest Workflow"}),"\nSyncGranule\nFilesToGranuleStep\nMoveGranuleStep\nCopyToArchive"]}),"\n",(0,t.jsx)(r.h3,{id:"add-the-move-granule-step-to-an-ingest-workflow",children:"Add the Move Granule Step to an Ingest Workflow"}),"\n",(0,t.jsxs)(r.p,{children:["Navigate to ",(0,t.jsx)(r.code,{children:"cumulus-tf/ingest_granule_workflow.tf"})," then add the following\nstep anywhere after the FilesToGranuleStep step being sure to change the\nFilesToGranuleStep's ",(0,t.jsx)(r.code,{children:'"Next"'}),' parameter equal to "MoveGranuleStep".']}),"\n",(0,t.jsx)(r.admonition,{type:"important",children:(0,t.jsxs)(r.p,{children:["Adjust the ",(0,t.jsx)(r.code,{children:'"Next"'})," step in the example below to point to the proper step in\nthe ingest workflow."]})}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-json",children:'"MoveGranuleStep": {\n "Parameters": {\n "cma": {\n "event.$": "$",\n "task_config": {\n "bucket": "{$.meta.buckets.internal.name}",\n "buckets": "{$.meta.buckets}",\n "distribution_endpoint": "{$.meta.distribution_endpoint}",\n "collection": "{$.meta.collection}",\n "duplicateHandling": "{$.meta.collection.duplicateHandling}",\n "s3MultipartChunksizeMb": "{$.meta.collection.meta.s3MultipartChunksizeMb}",\n "cumulus_message": {\n "outputs": [\n { "source": "{$}", "destination": "{$.payload}" },\n { "source": "{$.granules}", "destination": "{$.meta.processed_granules}" }\n ]\n }\n }\n }\n },\n "Type": "Task",\n "Resource": "${move_granules_task_arn}",\n "Retry": [\n {\n "ErrorEquals": [\n "Lambda.ServiceException",\n "Lambda.AWSLambdaException",\n "Lambda.SdkClientException"\n ],\n "IntervalSeconds": 2,\n "MaxAttempts": 6,\n "BackoffRate": 2\n }\n ],\n "Catch": [\n {\n "ErrorEquals": [\n "States.ALL"\n ],\n "ResultPath": "$.exception",\n "Next": "WorkflowFailed"\n }\n ],\n'})}),"\n",(0,t.jsx)(r.h3,{id:"add-the-copytoarchive-step-to-an-ingest-workflow",children:"Add the CopyToArchive Step to an Ingest Workflow"}),"\n",(0,t.jsxs)(r.p,{children:["Navigate to ",(0,t.jsx)(r.code,{children:"cumulus-tf/ingest_granule_workflow.tf"})," then add the following step\nanywhere after the MoveGranuleStep step being sure to change the MoveGranuleStep's\n",(0,t.jsx)(r.code,{children:'"Next"'}),' parameter equal to "CopyToArchive".']}),"\n",(0,t.jsx)(r.admonition,{type:"important",children:(0,t.jsxs)(r.p,{children:["Adjust the ",(0,t.jsx)(r.code,{children:'"Next"'})," step in the example below to point to the proper step in\nthe ingest workflow."]})}),"\n",(0,t.jsxs)(r.p,{children:["Since ORCA is decoupling from Cumulus starting in ORCA v8.0, users will now run the same ",(0,t.jsxs)(r.a,{href:"https://github.com/nasa/cumulus-orca/tree/master/modules/workflows/OrcaCopyToArchiveWorkflow",children:["ORCA ",(0,t.jsx)(r.code,{children:"copy_to_archive"})," workflow"]})," but must need to update the existing workflow configuration to point to ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/tree/master/tasks/orca-copy-to-archive-adapter",children:"copy_to_archive_adapter lambda"})," (owned by Cumulus) which then runs our existing ",(0,t.jsx)(r.code,{children:"copy_to_archive"})," lambda."]}),"\n",(0,t.jsx)(r.admonition,{type:"note",children:(0,t.jsxs)(r.p,{children:["Make sure to replace ",(0,t.jsx)(r.code,{children:""})," under ",(0,t.jsx)(r.code,{children:"Resource"})," property below. See ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/blob/master/tf-modules/cumulus/outputs.tf#L86",children:"cumulus terraform modules"})," for additional details on how to add this."]})}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-json",children:'"CopyToArchive":{\n "Parameters":{\n "cma":{\n "event.$":"$",\n "task_config": {\n "excludedFileExtensions": "{$.meta.collection.meta.orca.excludedFileExtensions}",\n "s3MultipartChunksizeMb": "{$.meta.collection.meta.s3MultipartChunksizeMb}",\n "providerId": "{$.meta.provider.id}",\n "providerName": "{$.meta.provider.name}",\n "executionId": "{$.cumulus_meta.execution_name}",\n "collectionShortname": "{$.meta.collection.name}",\n "collectionVersion": "{$.meta.collection.version}",\n "defaultBucketOverride": "{$.meta.collection.meta.orca.defaultBucketOverride}"\n }\n }\n }\n},\n "Type":"Task",\n "Resource":"",\n "Catch":[\n {\n "ErrorEquals":[\n "States.ALL"\n ],\n "ResultPath":"$.exception",\n "Next":"WorkflowFailed"\n }\n ],\n "Retry": [\n {\n "ErrorEquals": [\n "States.ALL"\n ],\n "IntervalSeconds": 2,\n "MaxAttempts": 3,\n "BackoffRate": 2\n }\n ],\n "Next":"WorkflowSucceeded"\n},\n'})}),"\n",(0,t.jsxs)(r.p,{children:["As part of the ",(0,t.jsx)(r.a,{href:"https://nasa.github.io/cumulus/docs/workflows/input_output#cma-configuration",children:"Cumulus Message Adapter configuration"}),"\nfor ",(0,t.jsx)(r.code,{children:"copy_to_archive"}),", the ",(0,t.jsx)(r.code,{children:"excludedFileExtensions"}),", ",(0,t.jsx)(r.code,{children:"s3MultipartChunksizeMb"}),", ",(0,t.jsx)(r.code,{children:"providerId"}),", ",(0,t.jsx)(r.code,{children:"executionId"}),", ",(0,t.jsx)(r.code,{children:"collectionShortname"}),", ",(0,t.jsx)(r.code,{children:"collectionVersion"}),", ",(0,t.jsx)(r.code,{children:"defaultBucketOverride"}),", and ",(0,t.jsx)(r.code,{children:"defaultStorageClassOverride"})," keys must be present under the\n",(0,t.jsx)(r.code,{children:"task_config"})," object as seen above.\nPer the ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/blob/master/tasks/orca-copy-to-archive-adapter/schemas/config.json",children:"config schema"}),",\nthe values of the keys are used the following ways.\nThe ",(0,t.jsx)(r.code,{children:"provider"})," key should contain an ",(0,t.jsx)(r.code,{children:"id"})," key that returns the provider id from Cumulus.\nThe ",(0,t.jsx)(r.code,{children:"cumulus_meta"})," key should contain an ",(0,t.jsx)(r.code,{children:"execution_name"})," key that returns the step function execution ID from AWS.\nThe ",(0,t.jsx)(r.code,{children:"collection"})," key value should contain a ",(0,t.jsx)(r.code,{children:"name"})," key and a ",(0,t.jsx)(r.code,{children:"version"})," key that return the required collection shortname and collection version from Cumulus respectively.\nThe ",(0,t.jsx)(r.code,{children:"collection"})," key value should also contain a ",(0,t.jsx)(r.code,{children:"meta"})," key that includes an ",(0,t.jsx)(r.code,{children:"orca"})," key having an optional ",(0,t.jsx)(r.code,{children:"excludedFileExtensions"})," key that is used to determine file patterns that should not be\nsent to ORCA. In addition, the ",(0,t.jsx)(r.code,{children:"orca"})," key also contains optional ",(0,t.jsx)(r.code,{children:"defaultBucketOverride"})," key that overrides the ",(0,t.jsx)(r.code,{children:"ORCA_DEFAULT_BUCKET"})," set on deployment and optional ",(0,t.jsx)(r.code,{children:"defaultStorageClassOverride"})," key that overrides the storage class to use when storing files in Orca.\nThe optional ",(0,t.jsx)(r.code,{children:"s3MultipartChunksizeMb"})," is used to override the default setting for the lambda s3 copy maximum multipart chunk size value when copying large files to ORCA.\nThese settings can often be derived from the collection configuration in Cumulus.\nSee the copy_to_archive_adapter json schema ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/blob/master/tasks/orca-copy-to-archive-adapter/schemas/config.json",children:"configuration file"}),", ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/blob/master/tasks/orca-copy-to-archive-adapter/schemas/input.json",children:"input file"})," and ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/blob/master/tasks/orca-copy-to-archive-adapter/schemas/output.json",children:"output file"})," for more information."]}),"\n",(0,t.jsx)(r.h3,{id:"modify-the-recovery-workflow",children:"Modify the Recovery Workflow"}),"\n",(0,t.jsxs)(r.p,{children:["Since ORCA is decoupling from Cumulus starting in ORCA v8.0, users will now need to deploy a ",(0,t.jsx)(r.code,{children:"recovery_workflow_adapter"})," workflow that triggers ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/tree/master/tasks/orca-recovery-adapter",children:"the recovery_adapter lambda"})," (owned by Cumulus) which then runs our existing orca recovery workflow.\nAs part of the ",(0,t.jsx)(r.a,{href:"https://nasa.github.io/cumulus/docs/workflows/input_output/#cma-configuration",children:"Cumulus Message Adapter configuration"}),", several properties must be passed into the adapter lambda. See ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/tree/master/tasks/orca-recovery-adapter/schemas",children:"input and config schemas"})," for more information."]}),"\n",(0,t.jsxs)(r.p,{children:["Here is an example of a ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/blob/master/example/cumulus-tf/orca_recovery_adapter_workflow.asl.json",children:"recovery adapter workflow step function definition"})," and the ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/blob/master/example/cumulus-tf/orca_recovery_adapter_workflow.tf",children:"terraform code"})," provided by Cumulus that can be used to deploy the step function workflow in AWS. Once deployed, you can run that workflow to test ORCA recovery."]}),"\n",(0,t.jsx)(r.admonition,{type:"note",children:(0,t.jsx)(r.p,{children:"Users should reach out to Cumulus team if they want to automate this adapter workflow in Cumulus deployment since Cumulus owns the adapter lambdas."})}),"\n",(0,t.jsx)(r.h3,{id:"workflow-failures",children:"Workflow Failures"}),"\n",(0,t.jsxs)(r.p,{children:["Failures within ORCA break through to the Cumulus workflow they are a part\nof. More information on addressing workflow failures can be found on the\nORCA ",(0,t.jsx)(r.a,{href:"/cumulus-orca/docs/developer/development-guide/code/best-practices",children:"Best Practices"}),"\npage."]}),"\n",(0,t.jsx)(r.h2,{id:"orca-variables",children:"ORCA Variables"}),"\n",(0,t.jsx)(r.p,{children:"The following sections detail the variables used by the ORCA module."}),"\n",(0,t.jsx)(r.h3,{id:"required-variables",children:"Required Variables"}),"\n",(0,t.jsx)(r.p,{children:"The following variables are required for the ORCA module and must be set to valid\nvalues."}),"\n",(0,t.jsx)(r.h4,{id:"cumulus-required-variables",children:"Cumulus Required Variables"}),"\n",(0,t.jsxs)(r.p,{children:["The following variables should be present already in the ",(0,t.jsx)(r.code,{children:"cumulus-tf/terraform.tfvars"}),"\nfile. The variables must be set with proper values for your environment in the\n",(0,t.jsx)(r.code,{children:"cumulus-tf/terraform.tfvars"})," file."]}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Variable"}),(0,t.jsx)(r.th,{children:"Definition"}),(0,t.jsx)(r.th,{children:"Example Value"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"buckets"})}),(0,t.jsxs)(r.td,{children:["Mapping of all S3 buckets used by Cumulus and ORCA that contains a S3 ",(0,t.jsx)(r.code,{children:"name"})," and ",(0,t.jsx)(r.code,{children:"type"}),". A bucket with a ",(0,t.jsx)(r.code,{children:"type"})," of ",(0,t.jsx)(r.strong,{children:"orca"})," is required."]}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:'buckets = { orca_default = { name = "PREFIX-orca-primary", type = "orca", ...}}'})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"lambda_subnet_ids"})}),(0,t.jsx)(r.td,{children:"A list of subnets that the Lambda's and the database have access to for working with Cumulus."}),(0,t.jsx)(r.td,{children:'["subnet-12345", "subnet-abc123"]'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"permissions_boundary_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN value of the permission boundary for the VPC account."}),(0,t.jsxs)(r.td,{children:['"arn:aws:iam::1234567890',":policy",'/NGAPShRoleBoundary"']})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"prefix"})}),(0,t.jsx)(r.td,{children:"Prefix that will be pre-pended to resource names created by terraform."}),(0,t.jsx)(r.td,{children:'"daac-sndbx"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"system_bucket"})}),(0,t.jsx)(r.td,{children:"Cumulus system bucket used to store internal files and configurations for deployments."}),(0,t.jsx)(r.td,{children:'"PREFIX-internal"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"vpc_id"})}),(0,t.jsx)(r.td,{children:"ID of VPC to place resources in - recommended that this be a private VPC (or at least one with restricted access)."}),(0,t.jsx)(r.td,{children:'"vpc-abc123456789"'})]})]})]}),"\n",(0,t.jsx)(r.h4,{id:"orca-required-variables",children:"ORCA Required Variables"}),"\n",(0,t.jsxs)(r.p,{children:["The following variables should be present in the ",(0,t.jsx)(r.code,{children:"cumulus-tf/orca_variables.tf"}),"\nfile. The variables must be set with proper values for your environment in the\n",(0,t.jsx)(r.code,{children:"cumulus-tf/terraform.tfvars"})," file."]}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Variable"}),(0,t.jsx)(r.th,{children:"Definition"}),(0,t.jsx)(r.th,{children:"Example Value"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"aws_region"})}),(0,t.jsx)(r.td,{children:"AWS Region to create resources in."}),(0,t.jsx)(r.td,{children:'"us-west-2"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"db_admin_password"})}),(0,t.jsx)(r.td,{children:"Password for RDS database administrator authentication"}),(0,t.jsx)(r.td,{children:'"My_Sup3rS3cr3t_admin_Passw0rd"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"db_host_endpoint"})}),(0,t.jsx)(r.td,{children:"Database host endpoint to connect to."}),(0,t.jsx)(r.td,{children:'"aws.postgresrds.host"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"db_user_password"})}),(0,t.jsx)(r.td,{children:"Password for RDS database user authentication"}),(0,t.jsx)(r.td,{children:'"My_Sup3rS3cr3tuserPassw0rd"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"dlq_subscription_email"})}),(0,t.jsx)(r.td,{children:"The email to notify users when messages are received in dead letter SQS queue"}),(0,t.jsxs)(r.td,{children:['"',(0,t.jsx)(r.a,{href:"mailto:test@email.com",children:"test@email.com"}),'"']})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_default_bucket"})}),(0,t.jsx)(r.td,{children:"Default archive bucket to use."}),(0,t.jsx)(r.td,{children:'"PREFIX-orca-primary"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_reports_bucket_name"})}),(0,t.jsx)(r.td,{children:"The Name of the bucket to store s3 inventory reports."}),(0,t.jsx)(r.td,{children:'"PREFIX-orca-reports"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"rds_security_group_id"})}),(0,t.jsx)(r.td,{children:"Cumulus' RDS Security Group's ID."}),(0,t.jsx)(r.td,{children:'"sg-01234567890123456"'})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"optional-variables",children:"Optional Variables"}),"\n",(0,t.jsx)(r.p,{children:"The following variables are optional for the ORCA module and can be set by the\nend user to better adjust ORCA for their specific environment."}),"\n",(0,t.jsx)(r.h4,{id:"cumulus-optional-variables",children:"Cumulus Optional Variables"}),"\n",(0,t.jsxs)(r.p,{children:["The following variables should be present already in the ",(0,t.jsx)(r.code,{children:"cumulus-tf/terraform.tfvars"}),"\nfile. The variables can be set with proper values for your environment in the\n",(0,t.jsx)(r.code,{children:"cumulus-tf/terraform.tfvars"})," file. It is recommended that the ",(0,t.jsx)(r.code,{children:"region"})," variable\nis set to the proper AWS region for deployments."]}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Variable"}),(0,t.jsx)(r.th,{children:"Definition"}),(0,t.jsx)(r.th,{children:"Example Value"})]})}),(0,t.jsx)(r.tbody,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"tags"})}),(0,t.jsx)(r.td,{children:"Tags to be applied to resources that support tags."}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:'{ environment = "development", developer = "me" }'})})]})})]}),"\n",(0,t.jsx)(r.h4,{id:"orca-optional-variables",children:"ORCA Optional Variables"}),"\n",(0,t.jsxs)(r.p,{children:["The following variables should be present in the ",(0,t.jsx)(r.code,{children:"cumulus-tf/orca_variables.tf"}),"\nfile. The variables can be set with proper values for your environment in the\n",(0,t.jsx)(r.code,{children:"cumulus-tf/terraform.tfvars"})," file. The default setting for each of the optional\nvariables is shown in the table below."]}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Variable"}),(0,t.jsx)(r.th,{children:"Type"}),(0,t.jsx)(r.th,{children:"Definition"}),(0,t.jsx)(r.th,{children:"Default"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"archive_recovery_queue_message_retention_time_seconds"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsx)(r.td,{children:"The number of seconds archive-recovery-queue SQS retains a message in seconds."}),(0,t.jsx)(r.td,{children:"777600"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"db_admin_username"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsx)(r.td,{children:"Username for RDS database administrator authentication."}),(0,t.jsx)(r.td,{children:'"postgres"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"default_multipart_chunksize_mb"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"The default maximum size of chunks to use when copying. Can be overridden by collection config."}),(0,t.jsx)(r.td,{children:"250"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"internal_report_queue_message_retention_time_seconds"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Number of seconds the internal-report-queue SQS retains a message."}),(0,t.jsx)(r.td,{children:"432000"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"metadata_queue_message_retention_time_seconds"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Number of seconds the metadata-queue fifo SQS retains a message."}),(0,t.jsx)(r.td,{children:"777600"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"db_name"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsxs)(r.td,{children:["The name of the Orca database within the RDS cluster. Any ",(0,t.jsx)(r.code,{children:"-"})," in ",(0,t.jsx)(r.code,{children:"prefix"})," will be replaced with ",(0,t.jsx)(r.code,{children:"_"}),"."]}),(0,t.jsx)(r.td,{children:"PREFIX_orca"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"db_user_name"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsxs)(r.td,{children:["The name of the application user for the Orca database. Any ",(0,t.jsx)(r.code,{children:"-"})," in ",(0,t.jsx)(r.code,{children:"prefix"})," will be replaced with ",(0,t.jsx)(r.code,{children:"_"}),"."]}),(0,t.jsx)(r.td,{children:"PREFIX_orcauser"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"log_level"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsx)(r.td,{children:"sets the verbose of PowerTools logger. Must be one of 'INFO', 'DEBUG', 'WARN', 'ERROR'. Defaults to 'INFO'."}),(0,t.jsx)(r.td,{children:'"INFO"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_default_recovery_type"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsx)(r.td,{children:"The Tier for the restore request. Valid values are 'Standard', 'Bulk', 'Expedited'"}),(0,t.jsx)(r.td,{children:'"Standard"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_default_storage_class"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsxs)(r.td,{children:["The ",(0,t.jsx)(r.a,{href:"/cumulus-orca/docs/operator/storage-classes",children:"class of storage"})," to use when ingesting files. Can be overridden by collection config."]}),(0,t.jsx)(r.td,{children:'"GLACIER"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_delete_old_reconcile_jobs_frequency_cron"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsx)(r.td,{children:"Frequency cron for running the delete_old_reconcile_jobs lambda."}),(0,t.jsx)(r.td,{children:'"cron(0 0 ? * SUN *)"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_ingest_lambda_memory_size"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Amount of memory in MB the ORCA copy_to_archive lambda can use at runtime."}),(0,t.jsx)(r.td,{children:"2240"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_ingest_lambda_timeout"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Timeout in number of seconds for ORCA copy_to_archive lambda."}),(0,t.jsx)(r.td,{children:"600"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_internal_reconciliation_expiration_days"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Only reports updated before this many days ago will be deleted."}),(0,t.jsx)(r.td,{children:"30"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_reconciliation_lambda_memory_size"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Amount of memory in MB the ORCA reconciliation lambda can use at runtime."}),(0,t.jsx)(r.td,{children:"128"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_reconciliation_lambda_timeout"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Timeout in number of seconds for ORCA reconciliation lambdas."}),(0,t.jsx)(r.td,{children:"720"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_recovery_buckets"})}),(0,t.jsx)(r.td,{children:"List (string)"}),(0,t.jsxs)(r.td,{children:["List of bucket names that ORCA has permissions to restore data to. Default is all in the ",(0,t.jsx)(r.code,{children:"buckets"})," map."]}),(0,t.jsx)(r.td,{children:"[]"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_recovery_complete_filter_prefix"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsx)(r.td,{children:"Specifies object key name prefix by the archive Bucket trigger."}),(0,t.jsx)(r.td,{children:'""'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_recovery_expiration_days"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Number of days a recovered file will remain available for copy."}),(0,t.jsx)(r.td,{children:"5"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_recovery_lambda_memory_size"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Amount of memory in MB the ORCA recovery lambda can use at runtime."}),(0,t.jsx)(r.td,{children:"128"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_recovery_lambda_timeout"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Timeout in number of seconds for ORCA recovery lambdas."}),(0,t.jsx)(r.td,{children:"720"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_recovery_retry_limit"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Maximum number of retries of a recovery failure before giving up."}),(0,t.jsx)(r.td,{children:"3"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_recovery_retry_interval"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Number of seconds to wait between recovery failure retries."}),(0,t.jsx)(r.td,{children:"1"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_recovery_retry_backoff"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"The multiplier by which the retry interval increases during each attempt."}),(0,t.jsx)(r.td,{children:"2"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"s3_inventory_queue_message_retention_time_seconds"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"The number of seconds s3-inventory-queue fifo SQS retains a message in seconds. Maximum value is 14 days."}),(0,t.jsx)(r.td,{children:"432000"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"s3_report_frequency"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsxs)(r.td,{children:["How often to generate s3 reports for internal reconciliation. ",(0,t.jsx)(r.code,{children:"Daily"})," or ",(0,t.jsx)(r.code,{children:"Weekly"})]}),(0,t.jsx)(r.td,{children:"Daily"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"sqs_delay_time_seconds"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Number of seconds that the delivery of all messages in the queue will be delayed."}),(0,t.jsx)(r.td,{children:"0"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"sqs_maximum_message_size"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"The limit of how many bytes a message can contain before Amazon SQS rejects it."}),(0,t.jsx)(r.td,{children:"262144"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"staged_recovery_queue_message_retention_time_seconds"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Number of seconds the staged-recovery-queue fifo SQS retains a message."}),(0,t.jsx)(r.td,{children:"432000"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"status_update_queue_message_retention_time_seconds"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Number of seconds the status_update_queue fifo SQS retains a message."}),(0,t.jsx)(r.td,{children:"777600"})]})]})]}),"\n",(0,t.jsx)(r.h2,{id:"orca-module-outputs",children:"ORCA Module Outputs"}),"\n",(0,t.jsxs)(r.p,{children:["The orca module provides the outputs seen below in the table. Outputs are\naccessed using terraform dot syntax in the format of ",(0,t.jsx)(r.code,{children:"module.orca.variable_name"}),"."]}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Output Variable"}),(0,t.jsx)(r.th,{children:"Description"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_api_deployment_invoke_url"})}),(0,t.jsx)(r.td,{children:"The URL to invoke the ORCA Cumulus reconciliation API gateway. Excludes the resource path"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_graphql_load_balancer_dns_name"})}),(0,t.jsx)(r.td,{children:"The DNS Name of the Application Load Balancer that handles access to ORCA GraphQL."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_copy_to_archive_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA copy_to_archive lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_extract_filepaths_for_granule_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA extract_filepaths_for_granule lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_orca_catalog_reporting_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA orca_catalog_reporting lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_request_from_archive_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA request_from_archive lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_copy_from_archive_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA copy_from_archive lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_request_status_for_granule_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA request_status_for_granule lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_request_status_for_job_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA request_status_for_job lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_post_copy_request_to_queue_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA post_copy_request_to_queue lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_orca_catalog_reporting_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA orca_catalog_reporting lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_secretsmanager_arn"})}),(0,t.jsx)(r.td,{children:"The Amazon Resource Name (ARN) of the AWS secretsmanager"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sfn_recovery_workflow_arn"})}),(0,t.jsx)(r.td,{children:"The ARN of the recovery step function."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sqs_archive_recovery_queue_arn"})}),(0,t.jsx)(r.td,{children:"The ARN of the archive-recovery-queue SQS"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sqs_archive_recovery_queue_id"})}),(0,t.jsx)(r.td,{children:"The URL of the archive-recovery-queue SQS"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sqs_metadata_queue_arn"})}),(0,t.jsx)(r.td,{children:"The ARN of the metadata-queue SQS"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sqs_metadata_queue_id"})}),(0,t.jsx)(r.td,{children:"The URL ID of the metadata-queue SQS"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sqs_staged_recovery_queue_arn"})}),(0,t.jsx)(r.td,{children:"The ARN of the staged-recovery-queue SQS"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sqs_staged_recovery_queue_id"})}),(0,t.jsx)(r.td,{children:"The URL ID of the staged-recovery-queue SQS"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sqs_status_update_queue_arn"})}),(0,t.jsx)(r.td,{children:"The ARN of the status-update-queue SQS"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sqs_status_update_queue_id"})}),(0,t.jsx)(r.td,{children:"The URL ID of the status-update-queue SQS"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_subnet_group_id"})}),(0,t.jsx)(r.td,{children:"The ORCA database subnet group name"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_subnet_group_arn"})}),(0,t.jsx)(r.td,{children:"The ARN of the ORCA database subnet group"})]})]})]}),"\n",(0,t.jsx)(r.h2,{id:"deploy-orca-with-terraform",children:"Deploy ORCA with Terraform"}),"\n",(0,t.jsx)(r.p,{children:"In the proper module directory, initialize and apply changes using the commands\nbelow."}),"\n",(0,t.jsxs)(r.ol,{children:["\n",(0,t.jsxs)(r.li,{children:["Run ",(0,t.jsx)(r.code,{children:"terraform init"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Run ",(0,t.jsx)(r.code,{children:"terraform plan"})," #optional, but allows you to preview the deploy."]}),"\n",(0,t.jsxs)(r.li,{children:["Run ",(0,t.jsx)(r.code,{children:"terraform apply"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(r.p,{children:["This commands above will create and deploy ORCA. To delete the created objects,\nrun ",(0,t.jsx)(r.code,{children:"terraform destroy"}),"."]}),"\n",(0,t.jsx)(r.h2,{id:"collection-configuration",children:"Collection Configuration"}),"\n",(0,t.jsxs)(r.p,{children:["To configure a collection to enable ORCA, add the line\n",(0,t.jsx)(r.code,{children:'"granuleRecoveryWorkflow": "OrcaRecoveryWorkflow"'})," to the collection configuration\nas seen below."]}),"\n",(0,t.jsxs)(r.p,{children:["Optionally, you can exclude files by adding values to an\n",(0,t.jsx)(r.code,{children:"excludedFileExtensions"})," variable as seen below.\nIn addition, when dealing with large files, the ",(0,t.jsx)(r.code,{children:"s3MultipartChunksizeMb"})," variable can also be set to override the\ndefault setting set during ORCA installation.\nIf the file should be stored in a ",(0,t.jsx)(r.a,{href:"/cumulus-orca/docs/operator/storage-classes",children:"storage class"})," other than the default set in ",(0,t.jsx)(r.code,{children:"orca_default_storage_class"})," during installation, specify it using ",(0,t.jsx)(r.code,{children:"defaultStorageClassOverride"}),".\nFor more information, see the documentation on the\n",(0,t.jsxs)(r.a,{href:"https://github.com/nasa/cumulus-orca/tree/master/tasks/copy_to_archive",children:[(0,t.jsx)(r.code,{children:"copy_to_archive"})," task"]}),"."]}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-json",children:'{\n "queriedAt": "2019-11-07T22:49:46.842Z",\n "name": "L0A_HR_RAW",\n "version": "1",\n "sampleFileName": "L0A_HR_RAW_product_0001-of-0420.h5",\n "dataType": "L0A_HR_RAW",\n "granuleIdExtraction": "^(.*)((\\\\.cmr\\\\.json)|(\\\\.iso\\\\.xml)|(\\\\.tar\\\\.gz)|(\\\\.h5)|(\\\\.h5\\\\.mp))$",\n "reportToEms": true,\n "granuleId": "^.*$",\n "provider_path": "L0A_HR_RAW/",\n "meta": {\n "s3MultipartChunksizeMb": 400,\n "granuleRecoveryWorkflow": "OrcaRecoveryWorkflow",\n "orca": {\n "excludedFileExtensions": [".cmr", ".xml", ".met"],\n "defaultBucketOverride": "prod_orca_worm",\n "defaultRecoveryTypeOverride": "Standard",\n "defaultStorageClassOverride": "DEEP_ARCHIVE"\n }\n },\n}\n'})}),"\n",(0,t.jsxs)(r.h2,{id:"enable-recover-granule-button",children:["Enable ",(0,t.jsx)(r.code,{children:"Recover Granule"})," Button"]}),"\n",(0,t.jsxs)(r.p,{children:["To enable the ",(0,t.jsx)(r.code,{children:"Recover Granule"})," button on the Cumulus Dashboard (available at github.com/nasa/cumulus-dashboard),\nset the environment variable ",(0,t.jsx)(r.code,{children:"ENABLE_RECOVERY=true"}),"."]}),"\n",(0,t.jsx)(r.p,{children:"Here is an sample command to run the Cumulus Dashboard locally."}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-bash",children:"APIROOT=https://uttm5y1jcj.execute-api.us-west-2.amazonaws.com:8000/dev ENABLE_RECOVERY=true npm run serve\n"})})]})}function h(e={}){const{wrapper:r}={...(0,s.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,r,n)=>{n.d(r,{R:()=>o,x:()=>d});var t=n(6540);const s={},i=t.createContext(s);function o(e){const r=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),t.createElement(i.Provider,{value:r},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkorca_website=self.webpackChunkorca_website||[]).push([[2096],{4099:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>d,toc:()=>l});var t=n(4848),s=n(8453);const i={id:"deployment-with-cumulus",title:"Deploying ORCA with Cumulus",description:"Provides developer information for ORCA code deployment with Cumulus."},o=void 0,d={id:"developer/deployment-guide/deployment-with-cumulus",title:"Deploying ORCA with Cumulus",description:"Provides developer information for ORCA code deployment with Cumulus.",source:"@site/docs/developer/deployment-guide/deployment-with-cumulus.md",sourceDirName:"developer/deployment-guide",slug:"/developer/deployment-guide/deployment-with-cumulus",permalink:"/cumulus-orca/docs/developer/deployment-guide/deployment-with-cumulus",draft:!1,unlisted:!1,editUrl:"https://github.com/nasa/cumulus-orca/edit/develop/website/docs/developer/deployment-guide/deployment-with-cumulus.md",tags:[],version:"current",frontMatter:{id:"deployment-with-cumulus",title:"Deploying ORCA with Cumulus",description:"Provides developer information for ORCA code deployment with Cumulus."},sidebar:"dev_guide",previous:{title:"Generating S3 credentials",permalink:"/cumulus-orca/docs/developer/deployment-guide/deployment-s3-credentials"},next:{title:"Upgrading ORCA",permalink:"/cumulus-orca/docs/developer/deployment-guide/deployment-upgrading-orca"}},a={},l=[{value:"Configuring the ORCA Deployment",id:"configuring-the-orca-deployment",level:2},{value:"Creating cumulus-tf/orca.tf",id:"creating-cumulus-tforcatf",level:3},{value:"Required Values Unique to the ORCA Module",id:"required-values-unique-to-the-orca-module",level:4},{value:"Required Values Retrieved from Cumulus Variables",id:"required-values-retrieved-from-cumulus-variables",level:4},{value:"Creating cumulus-tf/orca_variables.tf",id:"creating-cumulus-tforca_variablestf",level:3},{value:"Modifying cumulus-tf/terraform.tfvars",id:"modifying-cumulus-tfterraformtfvars",level:3},{value:"Define the ORCA Workflows",id:"define-the-orca-workflows",level:2},{value:"Add the Move Granule Step to an Ingest Workflow",id:"add-the-move-granule-step-to-an-ingest-workflow",level:3},{value:"Add the CopyToArchive Step to an Ingest Workflow",id:"add-the-copytoarchive-step-to-an-ingest-workflow",level:3},{value:"Modify the Recovery Workflow",id:"modify-the-recovery-workflow",level:3},{value:"Workflow Failures",id:"workflow-failures",level:3},{value:"ORCA Variables",id:"orca-variables",level:2},{value:"Required Variables",id:"required-variables",level:3},{value:"Cumulus Required Variables",id:"cumulus-required-variables",level:4},{value:"ORCA Required Variables",id:"orca-required-variables",level:4},{value:"Optional Variables",id:"optional-variables",level:3},{value:"Cumulus Optional Variables",id:"cumulus-optional-variables",level:4},{value:"ORCA Optional Variables",id:"orca-optional-variables",level:4},{value:"ORCA Module Outputs",id:"orca-module-outputs",level:2},{value:"Deploy ORCA with Terraform",id:"deploy-orca-with-terraform",level:2},{value:"Collection Configuration",id:"collection-configuration",level:2},{value:"Enable Recover Granule Button",id:"enable-recover-granule-button",level:2}];function c(e){const r={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.admonition,{type:"important",children:(0,t.jsxs)(r.p,{children:["Prior to following this document, make sure that your ",(0,t.jsx)(r.a,{href:"/cumulus-orca/docs/developer/deployment-guide/deployment-environment",children:"deployment environment"}),"\nis setup and an ",(0,t.jsx)(r.a,{href:"/cumulus-orca/docs/developer/deployment-guide/deployment-s3-bucket",children:"ORCA archive bucket"})," is\ncreated."]})}),"\n",(0,t.jsxs)(r.p,{children:["ORCA is meant to be deployed with Cumulus. To deploy ORCA add and/or modify the\nfiles in the Cumulus ",(0,t.jsx)(r.code,{children:"cumulus-tf"})," deployment."]}),"\n",(0,t.jsx)(r.p,{children:"The general steps to deploy and use ORCA are:"}),"\n",(0,t.jsxs)(r.ol,{children:["\n",(0,t.jsx)(r.li,{children:(0,t.jsx)(r.a,{href:"#configuring-the-orca-deployment",children:"Configure the ORCA deployment."})}),"\n",(0,t.jsx)(r.li,{children:(0,t.jsx)(r.a,{href:"#define-the-orca-wokflows",children:"Define the ORCA Ingest and Recovery workflows."})}),"\n",(0,t.jsx)(r.li,{children:(0,t.jsx)(r.a,{href:"#deploy-orca-with-terraform",children:"Deploy ORCA using terraform."})}),"\n",(0,t.jsx)(r.li,{children:(0,t.jsx)(r.a,{href:"#collection-configuration",children:"Configure ORCA in the collection configuration of the running Cumulus instance."})}),"\n"]}),"\n",(0,t.jsx)(r.h2,{id:"configuring-the-orca-deployment",children:"Configuring the ORCA Deployment"}),"\n",(0,t.jsxs)(r.p,{children:["Follow the instructions for ",(0,t.jsx)(r.a,{href:"https://nasa.github.io/cumulus/docs/deployment/deployment-readme",children:"deploying Cumulus"}),"\non the Cumulus website through the configuration of the Cumulus module ",(0,t.jsx)(r.code,{children:"cumulus-tf"}),"."]}),"\n",(0,t.jsxs)(r.p,{children:["Prior to deploying the ",(0,t.jsx)(r.code,{children:"cumulus-tf"})," module, the following files need to be added\nand/or modified to deploy ORCA with Cumulus."]}),"\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsx)(r.li,{children:"orca.tf"}),"\n",(0,t.jsx)(r.li,{children:"orca_variables.tf"}),"\n",(0,t.jsx)(r.li,{children:"terraform.tfvars"}),"\n",(0,t.jsx)(r.li,{children:"main.tf"}),"\n"]}),"\n",(0,t.jsxs)(r.h3,{id:"creating-cumulus-tforcatf",children:["Creating ",(0,t.jsx)(r.code,{children:"cumulus-tf/orca.tf"})]}),"\n",(0,t.jsxs)(r.p,{children:["Create the ",(0,t.jsx)(r.code,{children:"orca.tf"})," file in the ",(0,t.jsx)(r.code,{children:"cumulus-tf"})," directory and copy the code below\ninto the new ",(0,t.jsx)(r.code,{children:"orca.tf"})," file. Update the source variable with the preferred\nORCA version."]}),"\n",(0,t.jsx)(r.admonition,{title:"Only change the value of source",type:"important",children:(0,t.jsxs)(r.p,{children:["Only change the value of ",(0,t.jsx)(r.code,{children:"source"})," in the code example below to point to the\nproper ORCA version. The ORCA version is specified right after ",(0,t.jsx)(r.em,{children:"download"})," in the\nURL path to the release. In the example below the release being used is v3.0.2."]})}),"\n",(0,t.jsx)(r.admonition,{title:"Deploying a local version",type:"tip",children:(0,t.jsxs)(r.p,{children:["If you wish to deploy code cloned locally from ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus-orca",children:"Github"})," instead of a release zip, run\n",(0,t.jsx)(r.code,{children:"./bin/build_tasks.sh"}),". This will crawl the ",(0,t.jsx)(r.code,{children:"tasks"})," directory and build a ",(0,t.jsx)(r.code,{children:".zip"})," file (currently by just ",(0,t.jsx)(r.code,{children:"zipping"})," all python files and dependencies) in each of it's sub-directories. You may then set ",(0,t.jsx)(r.code,{children:"source"})," to the root folder of your cloned Orca repository."]})}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-terraform",children:'## ORCA Module\n## =============================================================================\nmodule "orca" {\n source = "https://github.com/nasa/cumulus-orca/releases/download/v9.0.0/cumulus-orca-terraform.zip"\n ## --------------------------\n ## Cumulus Variables\n ## --------------------------\n ## REQUIRED\n aws_region = var.region\n buckets = var.buckets\n lambda_subnet_ids = var.lambda_subnet_ids\n permissions_boundary_arn = var.permissions_boundary_arn\n prefix = var.prefix\n system_bucket = var.system_bucket\n vpc_id = var.vpc_id\n\n ## OPTIONAL\n tags = var.tags\n\n ## --------------------------\n ## ORCA Variables\n ## --------------------------\n ## REQUIRED\n db_admin_password = var.db_admin_password\n db_host_endpoint = var.db_host_endpoint\n db_user_password = var.db_user_password\n dlq_subscription_email = var.dlq_subscription_email\n orca_default_bucket = var.orca_default_bucket\n orca_reports_bucket_name = var.orca_reports_bucket_name\n rds_security_group_id = var.rds_security_group_id\n\n ## OPTIONAL\n # archive_recovery_queue_message_retention_time_seconds = 777600\n # db_admin_username = "postgres"\n # default_multipart_chunksize_mb = 250\n # deploy_rds_cluster_role_association = true\n # log_level = "INFO"\n # metadata_queue_message_retention_time = 777600\n # orca_default_recovery_type = "Standard"\n # orca_default_storage_class = "GLACIER"\n # orca_delete_old_reconcile_jobs_frequency_cron = "cron(0 0 ? * SUN *)"\n # orca_ingest_lambda_memory_size = 2240\n # orca_ingest_lambda_timeout = 600\n # orca_internal_reconciliation_expiration_days = 30\n # orca_reconciliation_lambda_memory_size = 128\n # orca_reconciliation_lambda_timeout = 720\n # orca_recovery_buckets = []\n # orca_recovery_complete_filter_prefix = ""\n # orca_recovery_expiration_days = 5\n # orca_recovery_lambda_memory_size = 128\n # orca_recovery_lambda_timeout = 720\n # orca_recovery_retry_limit = 3\n # orca_recovery_retry_interval = 1\n # orca_recovery_retry_backoff = 2\n # s3_inventory_queue_message_retention_time_seconds = 432000\n # s3_report_frequency = "Daily"\n # sqs_delay_time_seconds = 0\n # sqs_maximum_message_size = 262144\n # staged_recovery_queue_message_retention_time_seconds = 432000\n # status_update_queue_message_retention_time_seconds = 777600\n\n}\n'})}),"\n",(0,t.jsx)(r.h4,{id:"required-values-unique-to-the-orca-module",children:"Required Values Unique to the ORCA Module"}),"\n",(0,t.jsxs)(r.p,{children:["The following variables are unique to the ORCA module and required to be set by\nthe user. More information about these required variables, as well as the\noptional variables can be found in the ",(0,t.jsx)(r.a,{href:"#orca-variables",children:"variables section"}),"."]}),"\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsx)(r.li,{children:"db_admin_password"}),"\n",(0,t.jsx)(r.li,{children:"orca_default_bucket"}),"\n",(0,t.jsx)(r.li,{children:"orca_reports_bucket_name"}),"\n",(0,t.jsx)(r.li,{children:"db_user_password"}),"\n",(0,t.jsx)(r.li,{children:"db_host_endpoint"}),"\n",(0,t.jsx)(r.li,{children:"rds_security_group_id"}),"\n",(0,t.jsx)(r.li,{children:"dlq_subscription_email"}),"\n"]}),"\n",(0,t.jsx)(r.h4,{id:"required-values-retrieved-from-cumulus-variables",children:"Required Values Retrieved from Cumulus Variables"}),"\n",(0,t.jsxs)(r.p,{children:["The following variables are set as part of your Cumulus deployment and are\nrequired by the ORCA module. More information about setting these variables can\nbe found in the ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/blob/master/tf-modules/cumulus/variables.tf",children:"Cumulus variable definitions"}),".\nThe variables must be set with the proper values in the ",(0,t.jsx)(r.code,{children:"terraform.tfvars"})," file."]}),"\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsx)(r.li,{children:"buckets"}),"\n",(0,t.jsx)(r.li,{children:"lambda_subnet_ids"}),"\n",(0,t.jsx)(r.li,{children:"permissions_boundary_arn"}),"\n",(0,t.jsx)(r.li,{children:"prefix"}),"\n",(0,t.jsx)(r.li,{children:"system_bucket"}),"\n",(0,t.jsx)(r.li,{children:"vpc_id"}),"\n"]}),"\n",(0,t.jsx)(r.admonition,{title:"Optional Cumulus Values",type:"note",children:(0,t.jsxs)(r.p,{children:["The ",(0,t.jsx)(r.code,{children:"tags"})," value automatically adds a ",(0,t.jsx)(r.em,{children:"Deployment"})," tag like the Cumulus\ndeployment."]})}),"\n",(0,t.jsxs)(r.h3,{id:"creating-cumulus-tforca_variablestf",children:["Creating ",(0,t.jsx)(r.code,{children:"cumulus-tf/orca_variables.tf"})]}),"\n",(0,t.jsxs)(r.p,{children:["In the ",(0,t.jsx)(r.code,{children:"cumulus-tf"})," directory create the ",(0,t.jsx)(r.code,{children:"orca_variables.tf"})," file. Copy the\ncontents below into the file so that the ORCA unique variables are defined.\nFor more information on the variables, see the ",(0,t.jsx)(r.a,{href:"#orca-variables",children:"variables section"}),"."]}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-terraform",children:'## Variables unique to ORCA\n## REQUIRED\nvariable "db_admin_password" {\n description = "Password for RDS database administrator authentication"\n type = string\n}\n\nvariable "db_user_password" {\n description = "Password for RDS database user authentication"\n type = string\n}\n\nvariable "db_host_endpoint" {\n type = string\n description = "Database host endpoint to connect to."\n}\n\nvariable "dlq_subscription_email" {\n type = string\n description = "The email to notify users when messages are received in dead letter SQS queue due to restore failure. Sends one email until the dead letter queue is emptied."\n}\n\nvariable "orca_default_bucket" {\n type = string\n description = "Default archive bucket to use."\n}\n\nvariable "orca_reports_bucket_name" {\n type = string\n description = "The name of the bucket to store s3 inventory reports."\n}\n\nvariable "rds_security_group_id" {\n type = string\n description = "Cumulus\' RDS Security Group\'s ID."\n}\n\n'})}),"\n",(0,t.jsxs)(r.h3,{id:"modifying-cumulus-tfterraformtfvars",children:["Modifying ",(0,t.jsx)(r.code,{children:"cumulus-tf/terraform.tfvars"})]}),"\n",(0,t.jsxs)(r.p,{children:["At the end of the ",(0,t.jsx)(r.code,{children:"terraform.tfvars"})," file, add the following code. Update the\nrequired and optional variable values to the values needed for your particular\nenvironment."]}),"\n",(0,t.jsx)(r.admonition,{type:"note",children:(0,t.jsxs)(r.p,{children:["The example below shows the minimum variables to set for the module and accepting\ndefault values for all of the optional items. The ",(0,t.jsx)(r.a,{href:"#orca-variables",children:"ORCA variables section"}),"\nprovides additional information on variables that can be set for the ORCA application."]})}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-terraform",children:'## =============================================================================\n## ORCA Variables\n## =============================================================================\n\n## REQUIRED TO BE SET\n## -----------------------------------------------------------------------------\n\n## ORCA application database user password.\ndb_user_password = "my-super-secret-orca-application-user-password"\n\n## Default archive bucket to use\norca_default_bucket = "orca-archive-primary"\n\n## The name of the bucket to store s3 inventory reports.\norca_reports_bucket_name = "PREFIX-orca-reports"\n\n## PostgreSQL database (root) user password\ndb_admin_password = "my-super-secret-database-owner-password"\n\n## PostgreSQL database host endpoint to connect to.\ndb_host_endpoint = "aws.postgresrds.host"\n\n## Cumulus\' RDS Security Group\'s ID.\nrds_security_group_id = "sg-01234567890123456"\n\n## Dead letter queue SNS topic subscription email.\ndlq_subscription_email = "test@email.com"\n\n'})}),"\n",(0,t.jsx)(r.p,{children:"Below describes the type of value expected for each variable."}),"\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"db_user_password"})," (string) - the password for the application user."]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"orca_default_bucket"})," (string) - default S3 archive bucket to use for ORCA data."]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"db_admin_password"})," (string) - password for the admin user."]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"db_host_endpoint"}),"(string) - Database host endpoint to connect to."]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"db_user_password"})," (string) - the password for the application user."]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"dlq_subscription_email"}),'(string) - "The email to notify users when messages are received in dead letter SQS queue due to restore failure. Sends one email until the dead letter queue is emptied."']}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"orca_default_bucket"})," (string) - Default S3 archive bucket to use for ORCA data."]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"orca_reports_bucket_name"})," (string) - The name of the bucket to store s3 inventory reports."]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"rds_security_group_id"}),"(string) - Cumulus' RDS Security Group's ID. Output as ",(0,t.jsx)(r.code,{children:"security_group_id"})," from the rds-cluster deployment."]}),"\n"]}),"\n",(0,t.jsxs)(r.p,{children:["Additional variable definitions can be found in the ",(0,t.jsx)(r.a,{href:"#orca-variables",children:"ORCA variables"}),"\nsection of the document."]}),"\n",(0,t.jsxs)(r.admonition,{type:"important",children:[(0,t.jsxs)(r.p,{children:["The cumulus ",(0,t.jsx)(r.code,{children:"buckets"})," variable will have to be modified to include the\ndisaster recovery buckets with a ",(0,t.jsx)(r.em,{children:"type"})," of ",(0,t.jsx)(r.strong,{children:"orca"}),". An example can be seen below.\nThis addition is required for ORCA to have the proper bucket permissions to\nwork with Cumulus."]}),(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-terraform",children:'buckets = {\n orca_default = {\n name = "orca-archive-primary"\n type = "orca"\n },\n internal = {\n name = "orca-internal"\n type = "internal"\n },\n private = {\n name = "orca-private"\n type = "private"\n },\n protected = {\n name = "orca-protected"\n type = "protected"\n },\n public = {\n name = "orca-public"\n type = "public"\n }\n}\n'})})]}),"\n",(0,t.jsx)(r.h2,{id:"define-the-orca-workflows",children:"Define the ORCA Workflows"}),"\n",(0,t.jsx)(r.p,{children:"The ORCA Ingest Workflows follows each step listed below. Adding the\nMoveGranuleStep and the CopyToArchive Step are detailed in their respective\nsections."}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"ORCA Ingest Workflow"}),"\nSyncGranule\nFilesToGranuleStep\nMoveGranuleStep\nCopyToArchive"]}),"\n",(0,t.jsx)(r.h3,{id:"add-the-move-granule-step-to-an-ingest-workflow",children:"Add the Move Granule Step to an Ingest Workflow"}),"\n",(0,t.jsxs)(r.p,{children:["Navigate to ",(0,t.jsx)(r.code,{children:"cumulus-tf/ingest_granule_workflow.tf"})," then add the following\nstep anywhere after the FilesToGranuleStep step being sure to change the\nFilesToGranuleStep's ",(0,t.jsx)(r.code,{children:'"Next"'}),' parameter equal to "MoveGranuleStep".']}),"\n",(0,t.jsx)(r.admonition,{type:"important",children:(0,t.jsxs)(r.p,{children:["Adjust the ",(0,t.jsx)(r.code,{children:'"Next"'})," step in the example below to point to the proper step in\nthe ingest workflow."]})}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-json",children:'"MoveGranuleStep": {\n "Parameters": {\n "cma": {\n "event.$": "$",\n "task_config": {\n "bucket": "{$.meta.buckets.internal.name}",\n "buckets": "{$.meta.buckets}",\n "distribution_endpoint": "{$.meta.distribution_endpoint}",\n "collection": "{$.meta.collection}",\n "duplicateHandling": "{$.meta.collection.duplicateHandling}",\n "s3MultipartChunksizeMb": "{$.meta.collection.meta.s3MultipartChunksizeMb}",\n "cumulus_message": {\n "outputs": [\n { "source": "{$}", "destination": "{$.payload}" },\n { "source": "{$.granules}", "destination": "{$.meta.processed_granules}" }\n ]\n }\n }\n }\n },\n "Type": "Task",\n "Resource": "${move_granules_task_arn}",\n "Retry": [\n {\n "ErrorEquals": [\n "Lambda.ServiceException",\n "Lambda.AWSLambdaException",\n "Lambda.SdkClientException"\n ],\n "IntervalSeconds": 2,\n "MaxAttempts": 6,\n "BackoffRate": 2\n }\n ],\n "Catch": [\n {\n "ErrorEquals": [\n "States.ALL"\n ],\n "ResultPath": "$.exception",\n "Next": "WorkflowFailed"\n }\n ],\n'})}),"\n",(0,t.jsx)(r.h3,{id:"add-the-copytoarchive-step-to-an-ingest-workflow",children:"Add the CopyToArchive Step to an Ingest Workflow"}),"\n",(0,t.jsxs)(r.p,{children:["Navigate to ",(0,t.jsx)(r.code,{children:"cumulus-tf/ingest_granule_workflow.tf"})," then add the following step\nanywhere after the MoveGranuleStep step being sure to change the MoveGranuleStep's\n",(0,t.jsx)(r.code,{children:'"Next"'}),' parameter equal to "CopyToArchive".']}),"\n",(0,t.jsx)(r.admonition,{type:"important",children:(0,t.jsxs)(r.p,{children:["Adjust the ",(0,t.jsx)(r.code,{children:'"Next"'})," step in the example below to point to the proper step in\nthe ingest workflow."]})}),"\n",(0,t.jsxs)(r.p,{children:["Since ORCA is decoupling from Cumulus starting in ORCA v8.0, users will now run the same ",(0,t.jsxs)(r.a,{href:"https://github.com/nasa/cumulus-orca/tree/master/modules/workflows/OrcaCopyToArchiveWorkflow",children:["ORCA ",(0,t.jsx)(r.code,{children:"copy_to_archive"})," workflow"]})," but must need to update the existing workflow configuration to point to ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/tree/master/tasks/orca-copy-to-archive-adapter",children:"copy_to_archive_adapter lambda"})," (owned by Cumulus) which then runs our existing ",(0,t.jsx)(r.code,{children:"copy_to_archive"})," lambda."]}),"\n",(0,t.jsx)(r.admonition,{type:"note",children:(0,t.jsxs)(r.p,{children:["Make sure to replace ",(0,t.jsx)(r.code,{children:""})," under ",(0,t.jsx)(r.code,{children:"Resource"})," property below. See ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/blob/master/tf-modules/cumulus/outputs.tf#L86",children:"cumulus terraform modules"})," for additional details on how to add this."]})}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-json",children:'"CopyToArchive":{\n "Parameters":{\n "cma":{\n "event.$":"$",\n "task_config": {\n "excludedFileExtensions": "{$.meta.collection.meta.orca.excludedFileExtensions}",\n "s3MultipartChunksizeMb": "{$.meta.collection.meta.s3MultipartChunksizeMb}",\n "providerId": "{$.meta.provider.id}",\n "providerName": "{$.meta.provider.name}",\n "executionId": "{$.cumulus_meta.execution_name}",\n "collectionShortname": "{$.meta.collection.name}",\n "collectionVersion": "{$.meta.collection.version}",\n "defaultBucketOverride": "{$.meta.collection.meta.orca.defaultBucketOverride}"\n }\n }\n }\n},\n "Type":"Task",\n "Resource":"",\n "Catch":[\n {\n "ErrorEquals":[\n "States.ALL"\n ],\n "ResultPath":"$.exception",\n "Next":"WorkflowFailed"\n }\n ],\n "Retry": [\n {\n "ErrorEquals": [\n "States.ALL"\n ],\n "IntervalSeconds": 2,\n "MaxAttempts": 3,\n "BackoffRate": 2\n }\n ],\n "Next":"WorkflowSucceeded"\n},\n'})}),"\n",(0,t.jsxs)(r.p,{children:["As part of the ",(0,t.jsx)(r.a,{href:"https://nasa.github.io/cumulus/docs/workflows/input_output#cma-configuration",children:"Cumulus Message Adapter configuration"}),"\nfor ",(0,t.jsx)(r.code,{children:"copy_to_archive"}),", the ",(0,t.jsx)(r.code,{children:"excludedFileExtensions"}),", ",(0,t.jsx)(r.code,{children:"s3MultipartChunksizeMb"}),", ",(0,t.jsx)(r.code,{children:"providerId"}),", ",(0,t.jsx)(r.code,{children:"executionId"}),", ",(0,t.jsx)(r.code,{children:"collectionShortname"}),", ",(0,t.jsx)(r.code,{children:"collectionVersion"}),", ",(0,t.jsx)(r.code,{children:"defaultBucketOverride"}),", and ",(0,t.jsx)(r.code,{children:"defaultStorageClassOverride"})," keys must be present under the\n",(0,t.jsx)(r.code,{children:"task_config"})," object as seen above.\nPer the ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/blob/master/tasks/orca-copy-to-archive-adapter/schemas/config.json",children:"config schema"}),",\nthe values of the keys are used the following ways.\nThe ",(0,t.jsx)(r.code,{children:"provider"})," key should contain an ",(0,t.jsx)(r.code,{children:"id"})," key that returns the provider id from Cumulus.\nThe ",(0,t.jsx)(r.code,{children:"cumulus_meta"})," key should contain an ",(0,t.jsx)(r.code,{children:"execution_name"})," key that returns the step function execution ID from AWS.\nThe ",(0,t.jsx)(r.code,{children:"collection"})," key value should contain a ",(0,t.jsx)(r.code,{children:"name"})," key and a ",(0,t.jsx)(r.code,{children:"version"})," key that return the required collection shortname and collection version from Cumulus respectively.\nThe ",(0,t.jsx)(r.code,{children:"collection"})," key value should also contain a ",(0,t.jsx)(r.code,{children:"meta"})," key that includes an ",(0,t.jsx)(r.code,{children:"orca"})," key having an optional ",(0,t.jsx)(r.code,{children:"excludedFileExtensions"})," key that is used to determine file patterns that should not be\nsent to ORCA. In addition, the ",(0,t.jsx)(r.code,{children:"orca"})," key also contains optional ",(0,t.jsx)(r.code,{children:"defaultBucketOverride"})," key that overrides the ",(0,t.jsx)(r.code,{children:"ORCA_DEFAULT_BUCKET"})," set on deployment and optional ",(0,t.jsx)(r.code,{children:"defaultStorageClassOverride"})," key that overrides the storage class to use when storing files in Orca.\nThe optional ",(0,t.jsx)(r.code,{children:"s3MultipartChunksizeMb"})," is used to override the default setting for the lambda s3 copy maximum multipart chunk size value when copying large files to ORCA.\nThese settings can often be derived from the collection configuration in Cumulus.\nSee the copy_to_archive_adapter json schema ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/blob/master/tasks/orca-copy-to-archive-adapter/schemas/config.json",children:"configuration file"}),", ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/blob/master/tasks/orca-copy-to-archive-adapter/schemas/input.json",children:"input file"})," and ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/blob/master/tasks/orca-copy-to-archive-adapter/schemas/output.json",children:"output file"})," for more information."]}),"\n",(0,t.jsx)(r.h3,{id:"modify-the-recovery-workflow",children:"Modify the Recovery Workflow"}),"\n",(0,t.jsxs)(r.p,{children:["Since ORCA is decoupling from Cumulus starting in ORCA v8.0, users will now need to deploy a ",(0,t.jsx)(r.code,{children:"recovery_workflow_adapter"})," workflow that triggers ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/tree/master/tasks/orca-recovery-adapter",children:"the recovery_adapter lambda"})," (owned by Cumulus) which then runs our existing orca recovery workflow.\nAs part of the ",(0,t.jsx)(r.a,{href:"https://nasa.github.io/cumulus/docs/workflows/input_output/#cma-configuration",children:"Cumulus Message Adapter configuration"}),", several properties must be passed into the adapter lambda. See ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/tree/master/tasks/orca-recovery-adapter/schemas",children:"input and config schemas"})," for more information."]}),"\n",(0,t.jsxs)(r.p,{children:["Here is an example of a ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/blob/master/example/cumulus-tf/orca_recovery_adapter_workflow.asl.json",children:"recovery adapter workflow step function definition"})," and the ",(0,t.jsx)(r.a,{href:"https://github.com/nasa/cumulus/blob/master/example/cumulus-tf/orca_recovery_adapter_workflow.tf",children:"terraform code"})," provided by Cumulus that can be used to deploy the step function workflow in AWS. Once deployed, you can run that workflow to test ORCA recovery."]}),"\n",(0,t.jsx)(r.admonition,{type:"note",children:(0,t.jsx)(r.p,{children:"Users should reach out to Cumulus team if they want to automate this adapter workflow in Cumulus deployment since Cumulus owns the adapter lambdas."})}),"\n",(0,t.jsx)(r.h3,{id:"workflow-failures",children:"Workflow Failures"}),"\n",(0,t.jsxs)(r.p,{children:["Failures within ORCA break through to the Cumulus workflow they are a part\nof. More information on addressing workflow failures can be found on the\nORCA ",(0,t.jsx)(r.a,{href:"/cumulus-orca/docs/developer/development-guide/code/best-practices",children:"Best Practices"}),"\npage."]}),"\n",(0,t.jsx)(r.h2,{id:"orca-variables",children:"ORCA Variables"}),"\n",(0,t.jsx)(r.p,{children:"The following sections detail the variables used by the ORCA module."}),"\n",(0,t.jsx)(r.h3,{id:"required-variables",children:"Required Variables"}),"\n",(0,t.jsx)(r.p,{children:"The following variables are required for the ORCA module and must be set to valid\nvalues."}),"\n",(0,t.jsx)(r.h4,{id:"cumulus-required-variables",children:"Cumulus Required Variables"}),"\n",(0,t.jsxs)(r.p,{children:["The following variables should be present already in the ",(0,t.jsx)(r.code,{children:"cumulus-tf/terraform.tfvars"}),"\nfile. The variables must be set with proper values for your environment in the\n",(0,t.jsx)(r.code,{children:"cumulus-tf/terraform.tfvars"})," file."]}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Variable"}),(0,t.jsx)(r.th,{children:"Definition"}),(0,t.jsx)(r.th,{children:"Example Value"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"buckets"})}),(0,t.jsxs)(r.td,{children:["Mapping of all S3 buckets used by Cumulus and ORCA that contains a S3 ",(0,t.jsx)(r.code,{children:"name"})," and ",(0,t.jsx)(r.code,{children:"type"}),". A bucket with a ",(0,t.jsx)(r.code,{children:"type"})," of ",(0,t.jsx)(r.strong,{children:"orca"})," is required."]}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:'buckets = { orca_default = { name = "PREFIX-orca-primary", type = "orca", ...}}'})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"lambda_subnet_ids"})}),(0,t.jsx)(r.td,{children:"A list of subnets that the Lambda's and the database have access to for working with Cumulus."}),(0,t.jsx)(r.td,{children:'["subnet-12345", "subnet-abc123"]'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"permissions_boundary_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN value of the permission boundary for the VPC account."}),(0,t.jsxs)(r.td,{children:['"arn:aws:iam::1234567890',":policy",'/NGAPShRoleBoundary"']})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"prefix"})}),(0,t.jsx)(r.td,{children:"Prefix that will be pre-pended to resource names created by terraform."}),(0,t.jsx)(r.td,{children:'"daac-sndbx"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"system_bucket"})}),(0,t.jsx)(r.td,{children:"Cumulus system bucket used to store internal files and configurations for deployments."}),(0,t.jsx)(r.td,{children:'"PREFIX-internal"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"vpc_id"})}),(0,t.jsx)(r.td,{children:"ID of VPC to place resources in - recommended that this be a private VPC (or at least one with restricted access)."}),(0,t.jsx)(r.td,{children:'"vpc-abc123456789"'})]})]})]}),"\n",(0,t.jsx)(r.h4,{id:"orca-required-variables",children:"ORCA Required Variables"}),"\n",(0,t.jsxs)(r.p,{children:["The following variables should be present in the ",(0,t.jsx)(r.code,{children:"cumulus-tf/orca_variables.tf"}),"\nfile. The variables must be set with proper values for your environment in the\n",(0,t.jsx)(r.code,{children:"cumulus-tf/terraform.tfvars"})," file."]}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Variable"}),(0,t.jsx)(r.th,{children:"Definition"}),(0,t.jsx)(r.th,{children:"Example Value"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"aws_region"})}),(0,t.jsx)(r.td,{children:"AWS Region to create resources in."}),(0,t.jsx)(r.td,{children:'"us-west-2"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"db_admin_password"})}),(0,t.jsx)(r.td,{children:"Password for RDS database administrator authentication"}),(0,t.jsx)(r.td,{children:'"My_Sup3rS3cr3t_admin_Passw0rd"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"db_host_endpoint"})}),(0,t.jsx)(r.td,{children:"Database host endpoint to connect to."}),(0,t.jsx)(r.td,{children:'"aws.postgresrds.host"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"db_user_password"})}),(0,t.jsx)(r.td,{children:"Password for RDS database user authentication"}),(0,t.jsx)(r.td,{children:'"My_Sup3rS3cr3tuserPassw0rd"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"dlq_subscription_email"})}),(0,t.jsx)(r.td,{children:"The email to notify users when messages are received in dead letter SQS queue"}),(0,t.jsxs)(r.td,{children:['"',(0,t.jsx)(r.a,{href:"mailto:test@email.com",children:"test@email.com"}),'"']})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_default_bucket"})}),(0,t.jsx)(r.td,{children:"Default archive bucket to use."}),(0,t.jsx)(r.td,{children:'"PREFIX-orca-primary"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_reports_bucket_name"})}),(0,t.jsx)(r.td,{children:"The Name of the bucket to store s3 inventory reports."}),(0,t.jsx)(r.td,{children:'"PREFIX-orca-reports"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"rds_security_group_id"})}),(0,t.jsx)(r.td,{children:"Cumulus' RDS Security Group's ID."}),(0,t.jsx)(r.td,{children:'"sg-01234567890123456"'})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"optional-variables",children:"Optional Variables"}),"\n",(0,t.jsx)(r.p,{children:"The following variables are optional for the ORCA module and can be set by the\nend user to better adjust ORCA for their specific environment."}),"\n",(0,t.jsx)(r.h4,{id:"cumulus-optional-variables",children:"Cumulus Optional Variables"}),"\n",(0,t.jsxs)(r.p,{children:["The following variables should be present already in the ",(0,t.jsx)(r.code,{children:"cumulus-tf/terraform.tfvars"}),"\nfile. The variables can be set with proper values for your environment in the\n",(0,t.jsx)(r.code,{children:"cumulus-tf/terraform.tfvars"})," file. It is recommended that the ",(0,t.jsx)(r.code,{children:"region"})," variable\nis set to the proper AWS region for deployments."]}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Variable"}),(0,t.jsx)(r.th,{children:"Definition"}),(0,t.jsx)(r.th,{children:"Example Value"})]})}),(0,t.jsx)(r.tbody,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"tags"})}),(0,t.jsx)(r.td,{children:"Tags to be applied to resources that support tags."}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:'{ environment = "development", developer = "me" }'})})]})})]}),"\n",(0,t.jsx)(r.h4,{id:"orca-optional-variables",children:"ORCA Optional Variables"}),"\n",(0,t.jsxs)(r.p,{children:["The following variables should be present in the ",(0,t.jsx)(r.code,{children:"cumulus-tf/orca_variables.tf"}),"\nfile. The variables can be set with proper values for your environment in the\n",(0,t.jsx)(r.code,{children:"cumulus-tf/terraform.tfvars"})," file. The default setting for each of the optional\nvariables is shown in the table below."]}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Variable"}),(0,t.jsx)(r.th,{children:"Type"}),(0,t.jsx)(r.th,{children:"Definition"}),(0,t.jsx)(r.th,{children:"Default"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"archive_recovery_queue_message_retention_time_seconds"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsx)(r.td,{children:"The number of seconds archive-recovery-queue SQS retains a message in seconds."}),(0,t.jsx)(r.td,{children:"777600"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"db_admin_username"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsx)(r.td,{children:"Username for RDS database administrator authentication."}),(0,t.jsx)(r.td,{children:'"postgres"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"default_multipart_chunksize_mb"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"The default maximum size of chunks to use when copying. Can be overridden by collection config."}),(0,t.jsx)(r.td,{children:"250"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"deploy_rds_cluster_role_association"})}),(0,t.jsx)(r.td,{children:"boolean"}),(0,t.jsx)(r.td,{children:"Attaches IAM role for Aurora v2 cluster if true."}),(0,t.jsx)(r.td,{children:"true"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"internal_report_queue_message_retention_time_seconds"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Number of seconds the internal-report-queue SQS retains a message."}),(0,t.jsx)(r.td,{children:"432000"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"metadata_queue_message_retention_time_seconds"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Number of seconds the metadata-queue fifo SQS retains a message."}),(0,t.jsx)(r.td,{children:"777600"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"db_name"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsxs)(r.td,{children:["The name of the Orca database within the RDS cluster. Any ",(0,t.jsx)(r.code,{children:"-"})," in ",(0,t.jsx)(r.code,{children:"prefix"})," will be replaced with ",(0,t.jsx)(r.code,{children:"_"}),"."]}),(0,t.jsx)(r.td,{children:"PREFIX_orca"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"db_user_name"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsxs)(r.td,{children:["The name of the application user for the Orca database. Any ",(0,t.jsx)(r.code,{children:"-"})," in ",(0,t.jsx)(r.code,{children:"prefix"})," will be replaced with ",(0,t.jsx)(r.code,{children:"_"}),"."]}),(0,t.jsx)(r.td,{children:"PREFIX_orcauser"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"log_level"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsx)(r.td,{children:"sets the verbose of PowerTools logger. Must be one of 'INFO', 'DEBUG', 'WARN', 'ERROR'. Defaults to 'INFO'."}),(0,t.jsx)(r.td,{children:'"INFO"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_default_recovery_type"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsx)(r.td,{children:"The Tier for the restore request. Valid values are 'Standard', 'Bulk', 'Expedited'"}),(0,t.jsx)(r.td,{children:'"Standard"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_default_storage_class"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsxs)(r.td,{children:["The ",(0,t.jsx)(r.a,{href:"/cumulus-orca/docs/operator/storage-classes",children:"class of storage"})," to use when ingesting files. Can be overridden by collection config."]}),(0,t.jsx)(r.td,{children:'"GLACIER"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_delete_old_reconcile_jobs_frequency_cron"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsx)(r.td,{children:"Frequency cron for running the delete_old_reconcile_jobs lambda."}),(0,t.jsx)(r.td,{children:'"cron(0 0 ? * SUN *)"'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_ingest_lambda_memory_size"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Amount of memory in MB the ORCA copy_to_archive lambda can use at runtime."}),(0,t.jsx)(r.td,{children:"2240"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_ingest_lambda_timeout"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Timeout in number of seconds for ORCA copy_to_archive lambda."}),(0,t.jsx)(r.td,{children:"600"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_internal_reconciliation_expiration_days"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Only reports updated before this many days ago will be deleted."}),(0,t.jsx)(r.td,{children:"30"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_reconciliation_lambda_memory_size"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Amount of memory in MB the ORCA reconciliation lambda can use at runtime."}),(0,t.jsx)(r.td,{children:"128"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_reconciliation_lambda_timeout"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Timeout in number of seconds for ORCA reconciliation lambdas."}),(0,t.jsx)(r.td,{children:"720"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_recovery_buckets"})}),(0,t.jsx)(r.td,{children:"List (string)"}),(0,t.jsxs)(r.td,{children:["List of bucket names that ORCA has permissions to restore data to. Default is all in the ",(0,t.jsx)(r.code,{children:"buckets"})," map."]}),(0,t.jsx)(r.td,{children:"[]"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_recovery_complete_filter_prefix"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsx)(r.td,{children:"Specifies object key name prefix by the archive Bucket trigger."}),(0,t.jsx)(r.td,{children:'""'})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_recovery_expiration_days"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Number of days a recovered file will remain available for copy."}),(0,t.jsx)(r.td,{children:"5"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_recovery_lambda_memory_size"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Amount of memory in MB the ORCA recovery lambda can use at runtime."}),(0,t.jsx)(r.td,{children:"128"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_recovery_lambda_timeout"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Timeout in number of seconds for ORCA recovery lambdas."}),(0,t.jsx)(r.td,{children:"720"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_recovery_retry_limit"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Maximum number of retries of a recovery failure before giving up."}),(0,t.jsx)(r.td,{children:"3"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_recovery_retry_interval"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Number of seconds to wait between recovery failure retries."}),(0,t.jsx)(r.td,{children:"1"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_recovery_retry_backoff"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"The multiplier by which the retry interval increases during each attempt."}),(0,t.jsx)(r.td,{children:"2"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"s3_inventory_queue_message_retention_time_seconds"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"The number of seconds s3-inventory-queue fifo SQS retains a message in seconds. Maximum value is 14 days."}),(0,t.jsx)(r.td,{children:"432000"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"s3_report_frequency"})}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsxs)(r.td,{children:["How often to generate s3 reports for internal reconciliation. ",(0,t.jsx)(r.code,{children:"Daily"})," or ",(0,t.jsx)(r.code,{children:"Weekly"})]}),(0,t.jsx)(r.td,{children:"Daily"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"sqs_delay_time_seconds"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Number of seconds that the delivery of all messages in the queue will be delayed."}),(0,t.jsx)(r.td,{children:"0"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"sqs_maximum_message_size"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"The limit of how many bytes a message can contain before Amazon SQS rejects it."}),(0,t.jsx)(r.td,{children:"262144"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"staged_recovery_queue_message_retention_time_seconds"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Number of seconds the staged-recovery-queue fifo SQS retains a message."}),(0,t.jsx)(r.td,{children:"432000"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"status_update_queue_message_retention_time_seconds"})}),(0,t.jsx)(r.td,{children:"number"}),(0,t.jsx)(r.td,{children:"Number of seconds the status_update_queue fifo SQS retains a message."}),(0,t.jsx)(r.td,{children:"777600"})]})]})]}),"\n",(0,t.jsx)(r.h2,{id:"orca-module-outputs",children:"ORCA Module Outputs"}),"\n",(0,t.jsxs)(r.p,{children:["The orca module provides the outputs seen below in the table. Outputs are\naccessed using terraform dot syntax in the format of ",(0,t.jsx)(r.code,{children:"module.orca.variable_name"}),"."]}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Output Variable"}),(0,t.jsx)(r.th,{children:"Description"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_api_deployment_invoke_url"})}),(0,t.jsx)(r.td,{children:"The URL to invoke the ORCA Cumulus reconciliation API gateway. Excludes the resource path"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_graphql_load_balancer_dns_name"})}),(0,t.jsx)(r.td,{children:"The DNS Name of the Application Load Balancer that handles access to ORCA GraphQL."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_copy_to_archive_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA copy_to_archive lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_extract_filepaths_for_granule_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA extract_filepaths_for_granule lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_orca_catalog_reporting_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA orca_catalog_reporting lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_request_from_archive_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA request_from_archive lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_copy_from_archive_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA copy_from_archive lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_request_status_for_granule_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA request_status_for_granule lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_request_status_for_job_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA request_status_for_job lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_post_copy_request_to_queue_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA post_copy_request_to_queue lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_lambda_orca_catalog_reporting_arn"})}),(0,t.jsx)(r.td,{children:"AWS ARN of the ORCA orca_catalog_reporting lambda."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_secretsmanager_arn"})}),(0,t.jsx)(r.td,{children:"The Amazon Resource Name (ARN) of the AWS secretsmanager"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sfn_recovery_workflow_arn"})}),(0,t.jsx)(r.td,{children:"The ARN of the recovery step function."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sqs_archive_recovery_queue_arn"})}),(0,t.jsx)(r.td,{children:"The ARN of the archive-recovery-queue SQS"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sqs_archive_recovery_queue_id"})}),(0,t.jsx)(r.td,{children:"The URL of the archive-recovery-queue SQS"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sqs_metadata_queue_arn"})}),(0,t.jsx)(r.td,{children:"The ARN of the metadata-queue SQS"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sqs_metadata_queue_id"})}),(0,t.jsx)(r.td,{children:"The URL ID of the metadata-queue SQS"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sqs_staged_recovery_queue_arn"})}),(0,t.jsx)(r.td,{children:"The ARN of the staged-recovery-queue SQS"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sqs_staged_recovery_queue_id"})}),(0,t.jsx)(r.td,{children:"The URL ID of the staged-recovery-queue SQS"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sqs_status_update_queue_arn"})}),(0,t.jsx)(r.td,{children:"The ARN of the status-update-queue SQS"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_sqs_status_update_queue_id"})}),(0,t.jsx)(r.td,{children:"The URL ID of the status-update-queue SQS"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_subnet_group_id"})}),(0,t.jsx)(r.td,{children:"The ORCA database subnet group name"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"orca_subnet_group_arn"})}),(0,t.jsx)(r.td,{children:"The ARN of the ORCA database subnet group"})]})]})]}),"\n",(0,t.jsx)(r.h2,{id:"deploy-orca-with-terraform",children:"Deploy ORCA with Terraform"}),"\n",(0,t.jsx)(r.p,{children:"In the proper module directory, initialize and apply changes using the commands\nbelow."}),"\n",(0,t.jsxs)(r.ol,{children:["\n",(0,t.jsxs)(r.li,{children:["Run ",(0,t.jsx)(r.code,{children:"terraform init"}),"."]}),"\n",(0,t.jsxs)(r.li,{children:["Run ",(0,t.jsx)(r.code,{children:"terraform plan"})," #optional, but allows you to preview the deploy."]}),"\n",(0,t.jsxs)(r.li,{children:["Run ",(0,t.jsx)(r.code,{children:"terraform apply"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(r.p,{children:["This commands above will create and deploy ORCA. To delete the created objects,\nrun ",(0,t.jsx)(r.code,{children:"terraform destroy"}),"."]}),"\n",(0,t.jsx)(r.h2,{id:"collection-configuration",children:"Collection Configuration"}),"\n",(0,t.jsxs)(r.p,{children:["To configure a collection to enable ORCA, add the line\n",(0,t.jsx)(r.code,{children:'"granuleRecoveryWorkflow": "OrcaRecoveryWorkflow"'})," to the collection configuration\nas seen below."]}),"\n",(0,t.jsxs)(r.p,{children:["Optionally, you can exclude files by adding values to an\n",(0,t.jsx)(r.code,{children:"excludedFileExtensions"})," variable as seen below.\nIn addition, when dealing with large files, the ",(0,t.jsx)(r.code,{children:"s3MultipartChunksizeMb"})," variable can also be set to override the\ndefault setting set during ORCA installation.\nIf the file should be stored in a ",(0,t.jsx)(r.a,{href:"/cumulus-orca/docs/operator/storage-classes",children:"storage class"})," other than the default set in ",(0,t.jsx)(r.code,{children:"orca_default_storage_class"})," during installation, specify it using ",(0,t.jsx)(r.code,{children:"defaultStorageClassOverride"}),".\nFor more information, see the documentation on the\n",(0,t.jsxs)(r.a,{href:"https://github.com/nasa/cumulus-orca/tree/master/tasks/copy_to_archive",children:[(0,t.jsx)(r.code,{children:"copy_to_archive"})," task"]}),"."]}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-json",children:'{\n "queriedAt": "2019-11-07T22:49:46.842Z",\n "name": "L0A_HR_RAW",\n "version": "1",\n "sampleFileName": "L0A_HR_RAW_product_0001-of-0420.h5",\n "dataType": "L0A_HR_RAW",\n "granuleIdExtraction": "^(.*)((\\\\.cmr\\\\.json)|(\\\\.iso\\\\.xml)|(\\\\.tar\\\\.gz)|(\\\\.h5)|(\\\\.h5\\\\.mp))$",\n "reportToEms": true,\n "granuleId": "^.*$",\n "provider_path": "L0A_HR_RAW/",\n "meta": {\n "s3MultipartChunksizeMb": 400,\n "granuleRecoveryWorkflow": "OrcaRecoveryWorkflow",\n "orca": {\n "excludedFileExtensions": [".cmr", ".xml", ".met"],\n "defaultBucketOverride": "prod_orca_worm",\n "defaultRecoveryTypeOverride": "Standard",\n "defaultStorageClassOverride": "DEEP_ARCHIVE"\n }\n },\n}\n'})}),"\n",(0,t.jsxs)(r.h2,{id:"enable-recover-granule-button",children:["Enable ",(0,t.jsx)(r.code,{children:"Recover Granule"})," Button"]}),"\n",(0,t.jsxs)(r.p,{children:["To enable the ",(0,t.jsx)(r.code,{children:"Recover Granule"})," button on the Cumulus Dashboard (available at github.com/nasa/cumulus-dashboard),\nset the environment variable ",(0,t.jsx)(r.code,{children:"ENABLE_RECOVERY=true"}),"."]}),"\n",(0,t.jsx)(r.p,{children:"Here is an sample command to run the Cumulus Dashboard locally."}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-bash",children:"APIROOT=https://uttm5y1jcj.execute-api.us-west-2.amazonaws.com:8000/dev ENABLE_RECOVERY=true npm run serve\n"})})]})}function h(e={}){const{wrapper:r}={...(0,s.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,r,n)=>{n.d(r,{R:()=>o,x:()=>d});var t=n(6540);const s={},i=t.createContext(s);function o(e){const r=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),t.createElement(i.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/afd690bf.15c73034.js b/assets/js/afd690bf.26bfb6dd.js similarity index 71% rename from assets/js/afd690bf.15c73034.js rename to assets/js/afd690bf.26bfb6dd.js index 003428fa4..af9fa47f1 100644 --- a/assets/js/afd690bf.15c73034.js +++ b/assets/js/afd690bf.26bfb6dd.js @@ -1 +1 @@ -"use strict";(self.webpackChunkorca_website=self.webpackChunkorca_website||[]).push([[4607],{2733:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>r,toc:()=>l});var s=n(4848),t=n(8453);const a={id:"research-bamboo",title:"Bamboo specs Research Notes",description:"Research Notes on Bamboo CI/CD."},i=void 0,r={id:"developer/research/research-bamboo",title:"Bamboo specs Research Notes",description:"Research Notes on Bamboo CI/CD.",source:"@site/docs/developer/research/research-bamboo.md",sourceDirName:"developer/research",slug:"/developer/research/research-bamboo",permalink:"/cumulus-orca/docs/developer/research/research-bamboo",draft:!1,unlisted:!1,editUrl:"https://github.com/nasa/cumulus-orca/edit/develop/website/docs/developer/research/research-bamboo.md",tags:[],version:"current",frontMatter:{id:"research-bamboo",title:"Bamboo specs Research Notes",description:"Research Notes on Bamboo CI/CD."},sidebar:"dev_guide",previous:{title:"Multipart Chunksize Research Notes",permalink:"/cumulus-orca/docs/developer/research/research-multipart-chunksize"},next:{title:"Research Notes on ORCA delete functionality.",permalink:"/cumulus-orca/docs/developer/research/research-orca-delete-functionality"}},c={},l=[{value:"Overview",id:"overview",level:2},{value:"Bamboo specs",id:"bamboo-specs",level:2},{value:"Bamboo configuration",id:"bamboo-configuration",level:3},{value:"Running Bamboo specs",id:"running-bamboo-specs",level:2},{value:"Creating a prototype",id:"creating-a-prototype",level:2},{value:"Testing/Prototyping a Bamboo plan from a branch",id:"testingprototyping-a-bamboo-plan-from-a-branch",level:2},{value:"Future directions",id:"future-directions",level:2},{value:"References",id:"references",level:5}];function h(e){const o={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h5:"h5",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o.h2,{id:"overview",children:"Overview"}),"\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.a,{href:"https://confluence.atlassian.com/bamboo/getting-started-with-bamboo-289277283.html",children:"Bamboo"})," is a continuous integration (CI) and continuous deployment (CD) server used to automate the release and deployment of software applications. A typical bamboo workflow configuration consists of the following:"]}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:"Plan - It consists of single or multiple stages that are run sequentially using the same repository and defines the build that is triggered."}),"\n",(0,s.jsx)(o.li,{children:"Stage - It consists of single or multiple jobs that run simultaneously."}),"\n",(0,s.jsx)(o.li,{children:"Job - It processes one or more tasks that run simultaneously in an ordered fashion."}),"\n",(0,s.jsx)(o.li,{children:"Task - It is the actual work that is being executed as part of the build (e.g., running a shell script)."}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"bamboo-specs",children:"Bamboo specs"}),"\n",(0,s.jsxs)(o.p,{children:["Bamboo Specs are used to write Bamboo configuration as code either in Java or YAML and have corresponding plans/deployments created or updated automatically in Bamboo. YAML specs will be used in ORCA to convert Bamboo specs to code as its configuration is easy to understand. Check ",(0,s.jsx)(o.a,{href:"https://docs.atlassian.com/bamboo-specs-docs/7.0.1/specs.html#starting-with-yaml",children:"documentation"})," for details on the YAML specs."]}),"\n",(0,s.jsx)(o.admonition,{type:"note",children:(0,s.jsx)(o.p,{children:"A project has to be created manually first in Bamboo since it not possible to create a project with YAML file."})}),"\n",(0,s.jsxs)(o.p,{children:["An example of a bamboo config spec in YAML is shown below. This plan named ",(0,s.jsx)(o.code,{children:"test-orca"})," consists of a manual stage named ",(0,s.jsx)(o.code,{children:"orca test stage"})," which consists of a job named ",(0,s.jsx)(o.code,{children:"orca test job"}),". This ",(0,s.jsx)(o.code,{children:"orca test job"})," has a task that runs a shell script."]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:'---\nversion: 2\nplan:\n project-key: ORCA\n key: ORCA\n name: test-orca\nstages:\n- orca test stage:\n manual: true\n jobs:\n - orca test job\norca test job:\n key: OTJ\n tasks:\n - script:\n interpreter: SHELL\n scripts:\n - |-\n set -ex\n echo "hello"\n'})}),"\n",(0,s.jsx)(o.h3,{id:"bamboo-configuration",children:"Bamboo configuration"}),"\n",(0,s.jsx)(o.p,{children:"Some of the important configuration parameters used to create a Bamboo plan is described below:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Triggers- This is used to automatically run a bamboo plan. Users can specify how and when the build will be triggered. Some of the different types of triggers include repository polling, remote trigger, scheduled trigger, single day build trigger and tag trigger. Currently, ORCA uses ",(0,s.jsx)(o.code,{children:"repository polling"})," trigger that polls source repository and builds when new changes are found. In this example, Bamboo will check the repository for changes every 60 seconds and automatically build it when changes are detected."]}),"\n"]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:"triggers:\n- polling:\n period: '60'\n"})}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:"Repositories- One or more repositories can be added to a plan, which will be available to every job in the plan. The first repository in the list is the plan\u2019s default repository. An example of how a repository can be added to a bamboo plan is shown below."}),"\n"]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:"repositories:\n- ORCA repo:\n type: git\n url: https://github.com/nasa/cumulus-orca\n branch: develop\n"})}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:"Branches - Plan branches allow the user to run builds across different branches in the source repository using the same plan configuration.\nIn the example below, this pipeline will use the same plan when new branches are created in the repo and also link to a Jira issue if the branch name contains a Jira issue key."}),"\n"]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:"branches:\n create: for-new-branch\n delete:\n after-deleted-days: 7\n after-inactive-days: 30\n link-to-jira: true\n"})}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Variables- Variables are used to substitute values in the task config and inline scripts. To use in task scripts, use the syntax ",(0,s.jsx)(o.code,{children:"${bamboo.variable_name}"})," and replace variable_name with yours. An example of using variables in a plan is shown below."]}),"\n"]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:"variables:\n ORCA_VERSION: 0.0.1\n RELEASE_FLAG: 'false'\n"})}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:"Permissions- Permissions are used to restrict access to specific users to a Bamboo plan. In the following example, only the user rhassan can do some specific actions on this plan."}),"\n"]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:"version: 2\nplan:\n key: ORCA\nplan-permissions:\n- users:\n - rhassan\n permissions:\n - view\n - edit\n - build\n - clone\n - admin\n"})}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Docker- It is also possible to run a job inside a docker image rather than the bamboo agent if required. Check this ",(0,s.jsx)(o.a,{href:"https://hub.docker.com/r/atlassian/bamboo-agent-base",children:"documentation"})," for more information."]}),"\n"]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:"test job name:\n key: TJN\n docker:\n image: alpine\n"})}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Artifact- Artifacts are files created by a job build that can be used in other stages. An artifact definition can be created to specify which artifacts to keep and share from a build job. In the example below, an artifact definition named ",(0,s.jsx)(o.code,{children:"test-artifact"})," is created under the job ",(0,s.jsx)(o.code,{children:"test job"})," which is shared with other builds and deployments. Only the file matching the pattern .xml will be stored under artifact directory."]}),"\n"]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:"test job:\n artifacts:\n - name: test-artifact\n location: artifact\n pattern: '*.xml'\n shared: true\n"})}),"\n",(0,s.jsxs)(o.p,{children:["Check artifact ",(0,s.jsx)(o.a,{href:"https://confluence.atlassian.com/bamboo/configuring-a-job-s-build-artifacts-289277071.html",children:"documentation"})," for more information."]}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Checkout- This is a task to check out a repository for use by just one job. In the example below, the job named ",(0,s.jsx)(o.code,{children:"test job"})," has a checkout task that will checkout to the default repo defined in the plan before the tasks executes."]}),"\n"]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:"test job:\n tasks:\n - checkout:\n description: Checkout Default Repository\n"})}),"\n",(0,s.jsxs)(o.p,{children:["Check this ",(0,s.jsx)(o.a,{href:"https://confluence.atlassian.com/bamboo0800/checking-out-code-1077778795.html",children:"documentation"})," for more information."]}),"\n",(0,s.jsx)(o.h2,{id:"running-bamboo-specs",children:"Running Bamboo specs"}),"\n",(0,s.jsxs)(o.p,{children:["In order to run the YAML definition file, it has to be stored at ",(0,s.jsx)(o.code,{children:"bamboo-specs/bamboo.yml"})," or ",(0,s.jsx)(o.code,{children:"bamboo-specs/bamboo.yaml"}),"under the repository specified. Check this ",(0,s.jsx)(o.a,{href:"https://confluence.atlassian.com/bamboo/bamboo-yaml-specs-938844479.html",children:"documentation"})," for more information."]}),"\n",(0,s.jsx)(o.admonition,{type:"important",children:(0,s.jsx)(o.p,{children:"Make sure the linked repository have permissions to create plans within given project in order to execute the YAML definition and create a plan."})}),"\n",(0,s.jsxs)(o.p,{children:["In order to run this YAML definition from github repo, user has to setup ",(0,s.jsx)(o.code,{children:"Repository-stored Specs"})," on Bamboo CI/CD ",(0,s.jsx)(o.a,{href:"https://ci.earthdata.nasa.gov/build/admin/create/newSpecs.action",children:"website"}),". From the Bamboo dashboard, Choose ",(0,s.jsx)(o.code,{children:"Specs"}),"->",(0,s.jsx)(o.code,{children:"Set up Specs repository"})," and then select ",(0,s.jsx)(o.code,{children:"Build project"})," as ",(0,s.jsx)(o.code,{children:"ORCA"})," and ",(0,s.jsx)(o.code,{children:"Repository host"})," as ",(0,s.jsx)(o.code,{children:"ORCA repo"}),".\nThe next step is to create a ",(0,s.jsx)(o.code,{children:"Webhook"})," on the source repository by going to the settings option so that Bamboo knows about new commits. Webhooks allow Github repositories to communicate with Bamboo. A webhook has been created for ",(0,s.jsx)(o.a,{href:"https://ci.earthdata.nasa.gov/browse/ORCA",children:"ORCA project"})," in Bamboo which needs to be copied to the ",(0,s.jsx)(o.code,{children:"webhook"})," section in cumulus-orca repo. The webhook can be seen under the ",(0,s.jsx)(o.code,{children:"Specs"})," section on Bamboo CI website. Without adding webhook, Bamboo was not able to recognize the new Spec file added to the ",(0,s.jsx)(o.code,{children:"cumulus-orca"})," repo. Email ",(0,s.jsx)(o.code,{children:"nasa-data@lists.arc.nasa.gov"})," to NASA Github admin team to make that change. More instructions can be found ",(0,s.jsx)(o.a,{href:"https://github.com/nasa/instructions/blob/master/docs/INSTRUCTIONS.md#org-owners",children:"here"})]}),"\n",(0,s.jsx)(o.admonition,{type:"important",children:(0,s.jsxs)(o.p,{children:["Webhooks must be triggered by HTTP POST method and the Content-Type header should be set to ",(0,s.jsx)(o.code,{children:"application/json"}),"."]})}),"\n",(0,s.jsxs)(o.p,{children:["If Webhook is not created, then user has to ",(0,s.jsx)(o.code,{children:"set up Specs repository"})," as shown above every time the YAML definition is changed. Otherwise, it will not pull the latest changes. Check this ",(0,s.jsx)(o.a,{href:"https://confluence.atlassian.com/bamboo0800/enabling-webhooks-1077778691.html",children:"documentation"})," for details on setting up Webhook."]}),"\n",(0,s.jsx)(o.h2,{id:"creating-a-prototype",children:"Creating a prototype"}),"\n",(0,s.jsxs)(o.p,{children:["A prototype using Bamboo has been created ",(0,s.jsx)(o.a,{href:"https://ci.earthdata.nasa.gov/browse/ORCA-PROTOTYPE",children:"here"}),". Make sure NASA VPN is connected and that you have access to ORCA project on CI site.\nCode for the prototype resides currently in this ",(0,s.jsx)(o.a,{href:"https://github.com/nasa/cumulus-orca/blob/feature/ORCA-test-bamboo/bamboo-specs/bamboo.yaml",children:"branch"})," since we do not want to merge this into develop."]}),"\n",(0,s.jsx)(o.h2,{id:"testingprototyping-a-bamboo-plan-from-a-branch",children:"Testing/Prototyping a Bamboo plan from a branch"}),"\n",(0,s.jsxs)(o.p,{children:["In order to test a bamboo plan from a branch that will not affect the current deployment plan, you will need to create a ",(0,s.jsx)(o.code,{children:"Linked repository"})," in bamboo that will integrate with your test branch. Currently, only CI/CD team can create that. Contact the CI/CD for creating the repo in bamboo. Once that is created, you can create/update your ",(0,s.jsx)(o.code,{children:"bamboo.yaml"})," config file in your branch, push the changes to the ORCA repo, and then import the change from ",(0,s.jsx)(o.code,{children:"Set up Bamboo specs"})," section in Bamboo UI."]}),"\n",(0,s.jsx)(o.admonition,{type:"note",children:(0,s.jsxs)(o.p,{children:["Every time the bamboo spec yaml file is updated, it needs to be imported in bamboo via ",(0,s.jsx)(o.code,{children:"Bamboo specs"})," from the UI or else it will not be updated."]})}),"\n",(0,s.jsx)(o.h2,{id:"future-directions",children:"Future directions"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Convert bamboo plans to YAML definition language and store under ",(0,s.jsx)(o.code,{children:"cumulus-orca/bamboo-specs/bamboo.yaml"}),"."]}),"\n",(0,s.jsxs)(o.li,{children:["In order to add the webhook to the ",(0,s.jsx)(o.code,{children:"cumulus-orca"})," repo, email ",(0,s.jsx)(o.code,{children:"nasa-data@lists.arc.nasa.gov"})," to NASA Github admin team to make that change. More instructions can be found ",(0,s.jsx)(o.a,{href:"https://github.com/nasa/instructions/blob/master/docs/INSTRUCTIONS.md#org-owners",children:"here"}),"."]}),"\n"]}),"\n",(0,s.jsx)(o.h5,{id:"references",children:"References"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"https://confluence.atlassian.com/bamboo/understanding-the-bamboo-ci-server-289277285.html",children:"https://confluence.atlassian.com/bamboo/understanding-the-bamboo-ci-server-289277285.html"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"https://confluence.atlassian.com/bamboo/bamboo-yaml-specs-938844479.html",children:"https://confluence.atlassian.com/bamboo/bamboo-yaml-specs-938844479.html"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"https://docs.atlassian.com/bamboo-specs-docs/7.0.1/specs.html",children:"https://docs.atlassian.com/bamboo-specs-docs/7.0.1/specs.html"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"https://ci.earthdata.nasa.gov/",children:"https://ci.earthdata.nasa.gov/"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"https://confluence.atlassian.com/bamboo0800/enabling-webhooks-1077778691.html",children:"https://confluence.atlassian.com/bamboo0800/enabling-webhooks-1077778691.html"})}),"\n"]})]})}function d(e={}){const{wrapper:o}={...(0,t.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},8453:(e,o,n)=>{n.d(o,{R:()=>i,x:()=>r});var s=n(6540);const t={},a=s.createContext(t);function i(e){const o=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function r(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),s.createElement(a.Provider,{value:o},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkorca_website=self.webpackChunkorca_website||[]).push([[4607],{2733:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>r,toc:()=>l});var s=n(4848),t=n(8453);const a={id:"research-bamboo",title:"Bamboo specs Research Notes",description:"Research Notes on Bamboo CI/CD."},i=void 0,r={id:"developer/research/research-bamboo",title:"Bamboo specs Research Notes",description:"Research Notes on Bamboo CI/CD.",source:"@site/docs/developer/research/research-bamboo.md",sourceDirName:"developer/research",slug:"/developer/research/research-bamboo",permalink:"/cumulus-orca/docs/developer/research/research-bamboo",draft:!1,unlisted:!1,editUrl:"https://github.com/nasa/cumulus-orca/edit/develop/website/docs/developer/research/research-bamboo.md",tags:[],version:"current",frontMatter:{id:"research-bamboo",title:"Bamboo specs Research Notes",description:"Research Notes on Bamboo CI/CD."},sidebar:"dev_guide",previous:{title:"Multipart Chunksize Research Notes",permalink:"/cumulus-orca/docs/developer/research/research-multipart-chunksize"},next:{title:"Research Notes on ORCA delete functionality.",permalink:"/cumulus-orca/docs/developer/research/research-orca-delete-functionality"}},c={},l=[{value:"Overview",id:"overview",level:2},{value:"Bamboo specs",id:"bamboo-specs",level:2},{value:"Bamboo configuration",id:"bamboo-configuration",level:3},{value:"Running Bamboo specs",id:"running-bamboo-specs",level:2},{value:"Creating a prototype",id:"creating-a-prototype",level:2},{value:"Testing/Prototyping a Bamboo plan from a branch",id:"testingprototyping-a-bamboo-plan-from-a-branch",level:2},{value:"Future directions",id:"future-directions",level:2},{value:"References",id:"references",level:5}];function h(e){const o={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h5:"h5",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o.h2,{id:"overview",children:"Overview"}),"\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.a,{href:"https://confluence.atlassian.com/bamboo/getting-started-with-bamboo-289277283.html",children:"Bamboo"})," is a continuous integration (CI) and continuous deployment (CD) server used to automate the release and deployment of software applications. A typical bamboo workflow configuration consists of the following:"]}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:"Plan - It consists of single or multiple stages that are run sequentially using the same repository and defines the build that is triggered."}),"\n",(0,s.jsx)(o.li,{children:"Stage - It consists of single or multiple jobs that run simultaneously."}),"\n",(0,s.jsx)(o.li,{children:"Job - It processes one or more tasks that run simultaneously in an ordered fashion."}),"\n",(0,s.jsx)(o.li,{children:"Task - It is the actual work that is being executed as part of the build (e.g., running a shell script)."}),"\n"]}),"\n",(0,s.jsx)(o.h2,{id:"bamboo-specs",children:"Bamboo specs"}),"\n",(0,s.jsxs)(o.p,{children:["Bamboo Specs are used to write Bamboo configuration as code either in Java or YAML and have corresponding plans/deployments created or updated automatically in Bamboo. YAML specs will be used in ORCA to convert Bamboo specs to code as its configuration is easy to understand. Check ",(0,s.jsx)(o.a,{href:"https://docs.atlassian.com/bamboo-specs-docs/7.0.1/specs.html#starting-with-yaml",children:"documentation"})," for details on the YAML specs."]}),"\n",(0,s.jsx)(o.admonition,{type:"note",children:(0,s.jsx)(o.p,{children:"A project has to be created manually first in Bamboo since it not possible to create a project with YAML file."})}),"\n",(0,s.jsxs)(o.p,{children:["An example of a bamboo config spec in YAML is shown below. This plan named ",(0,s.jsx)(o.code,{children:"test-orca"})," consists of a manual stage named ",(0,s.jsx)(o.code,{children:"orca test stage"})," which consists of a job named ",(0,s.jsx)(o.code,{children:"orca test job"}),". This ",(0,s.jsx)(o.code,{children:"orca test job"})," has a task that runs a shell script."]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:'---\nversion: 2\nplan:\n project-key: ORCA\n key: ORCA\n name: test-orca\nstages:\n- orca test stage:\n manual: true\n jobs:\n - orca test job\norca test job:\n key: OTJ\n tasks:\n - script:\n interpreter: SHELL\n scripts:\n - |-\n set -ex\n echo "hello"\n'})}),"\n",(0,s.jsx)(o.h3,{id:"bamboo-configuration",children:"Bamboo configuration"}),"\n",(0,s.jsx)(o.p,{children:"Some of the important configuration parameters used to create a Bamboo plan is described below:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Triggers- This is used to automatically run a bamboo plan. Users can specify how and when the build will be triggered. Some of the different types of triggers include repository polling, remote trigger, scheduled trigger, single day build trigger and tag trigger. Currently, ORCA uses ",(0,s.jsx)(o.code,{children:"repository polling"})," trigger that polls source repository and builds when new changes are found. In this example, Bamboo will check the repository for changes every 60 seconds and automatically build it when changes are detected."]}),"\n"]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:"triggers:\n- polling:\n period: '60'\n"})}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:"Repositories- One or more repositories can be added to a plan, which will be available to every job in the plan. The first repository in the list is the plan\u2019s default repository. An example of how a repository can be added to a bamboo plan is shown below."}),"\n"]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:"repositories:\n- ORCA repo:\n type: git\n url: https://github.com/nasa/cumulus-orca\n branch: develop\n"})}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:"Branches - Plan branches allow the user to run builds across different branches in the source repository using the same plan configuration.\nIn the example below, this pipeline will use the same plan when new branches are created in the repo and also link to a Jira issue if the branch name contains a Jira issue key."}),"\n"]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:"branches:\n create: for-new-branch\n delete:\n after-deleted-days: 7\n after-inactive-days: 30\n link-to-jira: true\n"})}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Variables- Variables are used to substitute values in the task config and inline scripts. To use in task scripts, use the syntax ",(0,s.jsx)(o.code,{children:"${bamboo.variable_name}"})," and replace variable_name with yours. An example of using variables in a plan is shown below."]}),"\n"]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:"variables:\n ORCA_VERSION: 0.0.1\n RELEASE_FLAG: 'false'\n"})}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:"Permissions- Permissions are used to restrict access to specific users to a Bamboo plan. In the following example, only the user rhassan can do some specific actions on this plan."}),"\n"]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:"version: 2\nplan:\n key: ORCA\nplan-permissions:\n- users:\n - rhassan\n permissions:\n - view\n - edit\n - build\n - clone\n - admin\n"})}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Docker- It is also possible to run a job inside a docker image rather than the bamboo agent if required. Check this ",(0,s.jsx)(o.a,{href:"https://hub.docker.com/r/atlassian/bamboo-agent-base",children:"documentation"})," for more information."]}),"\n"]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:"test job name:\n key: TJN\n docker:\n image: alpine\n"})}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Artifact- Artifacts are files created by a job build that can be used in other stages. An artifact definition can be created to specify which artifacts to keep and share from a build job. In the example below, an artifact definition named ",(0,s.jsx)(o.code,{children:"test-artifact"})," is created under the job ",(0,s.jsx)(o.code,{children:"test job"})," which is shared with other builds and deployments. Only the file matching the pattern .xml will be stored under artifact directory."]}),"\n"]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:"test job:\n artifacts:\n - name: test-artifact\n location: artifact\n pattern: '*.xml'\n shared: true\n"})}),"\n",(0,s.jsxs)(o.p,{children:["Check artifact ",(0,s.jsx)(o.a,{href:"https://confluence.atlassian.com/bamboo/configuring-a-job-s-build-artifacts-289277071.html",children:"documentation"})," for more information."]}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Checkout- This is a task to check out a repository for use by just one job. In the example below, the job named ",(0,s.jsx)(o.code,{children:"test job"})," has a checkout task that will checkout to the default repo defined in the plan before the tasks executes."]}),"\n"]}),"\n",(0,s.jsx)(o.pre,{children:(0,s.jsx)(o.code,{className:"language-yaml",children:"test job:\n tasks:\n - checkout:\n description: Checkout Default Repository\n"})}),"\n",(0,s.jsxs)(o.p,{children:["Check this ",(0,s.jsx)(o.a,{href:"https://confluence.atlassian.com/bamboo0800/checking-out-code-1077778795.html",children:"documentation"})," for more information."]}),"\n",(0,s.jsx)(o.h2,{id:"running-bamboo-specs",children:"Running Bamboo specs"}),"\n",(0,s.jsxs)(o.p,{children:["In order to run the YAML definition file, it has to be stored at ",(0,s.jsx)(o.code,{children:"bamboo-specs/bamboo.yml"})," or ",(0,s.jsx)(o.code,{children:"bamboo-specs/bamboo.yaml"}),"under the repository specified. Check this ",(0,s.jsx)(o.a,{href:"https://confluence.atlassian.com/bamboo/bamboo-yaml-specs-938844479.html",children:"documentation"})," for more information."]}),"\n",(0,s.jsx)(o.admonition,{type:"important",children:(0,s.jsx)(o.p,{children:"Make sure the linked repository have permissions to create plans within given project in order to execute the YAML definition and create a plan."})}),"\n",(0,s.jsxs)(o.p,{children:["In order to run this YAML definition from github repo, user has to setup ",(0,s.jsx)(o.code,{children:"Repository-stored Specs"})," on Bamboo CI/CD ",(0,s.jsx)(o.a,{href:"https://ci.earthdata.nasa.gov/build/admin/create/newSpecs.action",children:"website"}),". From the Bamboo dashboard, Choose ",(0,s.jsx)(o.code,{children:"Specs"}),"->",(0,s.jsx)(o.code,{children:"Set up Specs repository"})," and then select ",(0,s.jsx)(o.code,{children:"Build project"})," as ",(0,s.jsx)(o.code,{children:"ORCA"})," and ",(0,s.jsx)(o.code,{children:"Repository host"})," as ",(0,s.jsx)(o.code,{children:"ORCA repo"}),".\nThe next step is to create a ",(0,s.jsx)(o.code,{children:"Webhook"})," on the source repository by going to the settings option so that Bamboo knows about new commits. Webhooks allow Github repositories to communicate with Bamboo. A webhook has been created for ",(0,s.jsx)(o.a,{href:"https://ci.earthdata.nasa.gov/browse/ORCA",children:"ORCA project"})," in Bamboo which needs to be copied to the ",(0,s.jsx)(o.code,{children:"webhook"})," section in cumulus-orca repo. The webhook can be seen under the ",(0,s.jsx)(o.code,{children:"Specs"})," section on Bamboo CI website. Without adding webhook, Bamboo was not able to recognize the new Spec file added to the ",(0,s.jsx)(o.code,{children:"cumulus-orca"})," repo. Email ",(0,s.jsx)(o.code,{children:"hq-open-innovation@mail.nasa.gov"})," to NASA Github admin team to make that change. More instructions can be found ",(0,s.jsx)(o.a,{href:"https://github.com/nasa/instructions/blob/master/docs/INSTRUCTIONS.md#org-owners",children:"here"})]}),"\n",(0,s.jsx)(o.admonition,{type:"important",children:(0,s.jsxs)(o.p,{children:["Webhooks must be triggered by HTTP POST method and the Content-Type header should be set to ",(0,s.jsx)(o.code,{children:"application/json"}),"."]})}),"\n",(0,s.jsxs)(o.p,{children:["If Webhook is not created, then user has to ",(0,s.jsx)(o.code,{children:"set up Specs repository"})," as shown above every time the YAML definition is changed. Otherwise, it will not pull the latest changes. Check this ",(0,s.jsx)(o.a,{href:"https://confluence.atlassian.com/bamboo0800/enabling-webhooks-1077778691.html",children:"documentation"})," for details on setting up Webhook."]}),"\n",(0,s.jsx)(o.h2,{id:"creating-a-prototype",children:"Creating a prototype"}),"\n",(0,s.jsxs)(o.p,{children:["A prototype using Bamboo has been created ",(0,s.jsx)(o.a,{href:"https://ci.earthdata.nasa.gov/browse/ORCA-PROTOTYPE",children:"here"}),". Make sure NASA VPN is connected and that you have access to ORCA project on CI site.\nCode for the prototype resides currently in this ",(0,s.jsx)(o.a,{href:"https://github.com/nasa/cumulus-orca/blob/feature/ORCA-test-bamboo/bamboo-specs/bamboo.yaml",children:"branch"})," since we do not want to merge this into develop."]}),"\n",(0,s.jsx)(o.h2,{id:"testingprototyping-a-bamboo-plan-from-a-branch",children:"Testing/Prototyping a Bamboo plan from a branch"}),"\n",(0,s.jsxs)(o.p,{children:["In order to test a bamboo plan from a branch that will not affect the current deployment plan, you will need to create a ",(0,s.jsx)(o.code,{children:"Linked repository"})," in bamboo that will integrate with your test branch. Currently, only CI/CD team can create that. Contact the CI/CD for creating the repo in bamboo. Once that is created, you can create/update your ",(0,s.jsx)(o.code,{children:"bamboo.yaml"})," config file in your branch, push the changes to the ORCA repo, and then import the change from ",(0,s.jsx)(o.code,{children:"Set up Bamboo specs"})," section in Bamboo UI."]}),"\n",(0,s.jsx)(o.admonition,{type:"note",children:(0,s.jsxs)(o.p,{children:["Every time the bamboo spec yaml file is updated, it needs to be imported in bamboo via ",(0,s.jsx)(o.code,{children:"Bamboo specs"})," from the UI or else it will not be updated."]})}),"\n",(0,s.jsx)(o.h2,{id:"future-directions",children:"Future directions"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Convert bamboo plans to YAML definition language and store under ",(0,s.jsx)(o.code,{children:"cumulus-orca/bamboo-specs/bamboo.yaml"}),"."]}),"\n",(0,s.jsxs)(o.li,{children:["In order to add the webhook to the ",(0,s.jsx)(o.code,{children:"cumulus-orca"})," repo, email ",(0,s.jsx)(o.code,{children:"hq-open-innovation@mail.nasa.gov"})," to NASA Github admin team to make that change. More instructions can be found ",(0,s.jsx)(o.a,{href:"https://github.com/nasa/instructions/blob/master/docs/INSTRUCTIONS.md#org-owners",children:"here"}),"."]}),"\n"]}),"\n",(0,s.jsx)(o.h5,{id:"references",children:"References"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"https://confluence.atlassian.com/bamboo/understanding-the-bamboo-ci-server-289277285.html",children:"https://confluence.atlassian.com/bamboo/understanding-the-bamboo-ci-server-289277285.html"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"https://confluence.atlassian.com/bamboo/bamboo-yaml-specs-938844479.html",children:"https://confluence.atlassian.com/bamboo/bamboo-yaml-specs-938844479.html"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"https://docs.atlassian.com/bamboo-specs-docs/7.0.1/specs.html",children:"https://docs.atlassian.com/bamboo-specs-docs/7.0.1/specs.html"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"https://ci.earthdata.nasa.gov/",children:"https://ci.earthdata.nasa.gov/"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"https://confluence.atlassian.com/bamboo0800/enabling-webhooks-1077778691.html",children:"https://confluence.atlassian.com/bamboo0800/enabling-webhooks-1077778691.html"})}),"\n"]})]})}function d(e={}){const{wrapper:o}={...(0,t.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},8453:(e,o,n)=>{n.d(o,{R:()=>i,x:()=>r});var s=n(6540);const t={},a=s.createContext(t);function i(e){const o=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function r(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),s.createElement(a.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.5c4b3b28.js b/assets/js/runtime~main.0f88f40a.js similarity index 59% rename from assets/js/runtime~main.5c4b3b28.js rename to assets/js/runtime~main.0f88f40a.js index 973f7cccf..b30d90a9e 100644 --- a/assets/js/runtime~main.5c4b3b28.js +++ b/assets/js/runtime~main.0f88f40a.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,c,b,t={},r={};function d(e){var a=r[e];if(void 0!==a)return a.exports;var f=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(f.exports,f,f.exports,d),f.loaded=!0,f.exports}d.m=t,d.c=r,e=[],d.O=(a,f,c,b)=>{if(!f){var t=1/0;for(i=0;i=b)&&Object.keys(d.O).every((e=>d.O[e](f[o])))?f.splice(o--,1):(r=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[f,c,b]},d.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return d.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,c){if(1&c&&(e=this(e)),8&c)return e;if("object"==typeof e&&e){if(4&c&&e.__esModule)return e;if(16&c&&"function"==typeof e.then)return e}var b=Object.create(null);d.r(b);var t={};a=a||[null,f({}),f([]),f(f)];for(var r=2&c&&e;"object"==typeof r&&!~a.indexOf(r);r=f(r))Object.getOwnPropertyNames(r).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,d.d(b,t),b},d.d=(e,a)=>{for(var f in a)d.o(a,f)&&!d.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((a,f)=>(d.f[f](e,a),a)),[])),d.u=e=>"assets/js/"+({197:"6d785239",336:"07a21aad",424:"e6bc1cd7",739:"197d1f4f",794:"0c51e9a9",1097:"565da601",1329:"762e1f90",1377:"f4b45fa4",1457:"b182d274",1566:"84f13883",1702:"b13f152f",1730:"f1da94e7",1789:"efc52324",1874:"29c848cb",1931:"c89f1054",2096:"7c9fa1db",2120:"baba5c87",2269:"d1b0219e",2320:"a9abe928",2445:"701d57ac",2634:"c4f5d8e4",2647:"d967b990",2700:"0e247988",3110:"7954d653",3234:"98575962",3474:"90a5c184",3827:"b10e40e5",3898:"a571a43a",4113:"d297147b",4215:"00c4eb7a",4607:"afd690bf",4626:"0115c7c5",4923:"327607cf",5017:"f2425baf",5143:"15f782ab",5840:"f58f32ef",6093:"9ffd15dc",6102:"214e46ab",6206:"5d0c8449",6470:"26f9f4b2",6566:"41286e30",6578:"3bf5870b",6597:"1d10fdf2",6629:"b36bbf0c",6647:"19b65d6c",6803:"a204b5f4",7074:"0a118fc9",7098:"a7bd4aaa",7146:"ba6f98e6",7411:"015a63e5",7447:"516c4cd8",7465:"d8c497cf",7487:"6d4c9639",7594:"284e9337",7908:"55c0ab8a",7944:"8634c481",8401:"17896441",8416:"204ea10f",8493:"68e3716f",8574:"67141c36",8581:"935f2afb",8999:"b5bb807f",9048:"a94703ab",9121:"b9aa2180",9273:"7e54ef6f",9321:"9401b158",9343:"03e1d4f7",9583:"5ce8e70c",9647:"5e95c892",9695:"5119aa4f",9878:"811b9864"}[e]||e)+"."+{197:"79fe133f",336:"c8076b21",424:"26e5fce2",739:"4cc171c4",794:"e60f956a",1097:"a13a5037",1329:"383a71be",1377:"ba3fa236",1457:"c1a72723",1566:"ec696877",1702:"7e8cfbb3",1730:"157e1dc7",1789:"9671806e",1874:"0e0afe94",1931:"7975817c",2096:"60fe90f6",2120:"bfda191a",2237:"55d6e923",2269:"21749271",2320:"89196a98",2445:"320db1ee",2634:"67a06f2a",2647:"fd6c39fd",2700:"31a98064",3110:"a4605fa6",3234:"030aa144",3474:"c2a35492",3827:"c5db8698",3898:"838e01fd",4113:"c594b92c",4215:"9e871d2a",4607:"15c73034",4626:"1979074d",4923:"f8e1b802",5017:"b612fb6a",5143:"26e02412",5840:"2fc67c65",6093:"20a51648",6102:"3e3ea013",6206:"14768b8b",6470:"fca39235",6566:"698f0db1",6578:"137ccefc",6597:"395182ef",6629:"038d1cbe",6647:"ccb12c09",6803:"e0c4d95c",7074:"6435cd86",7098:"54449359",7146:"74e82afb",7411:"d9f98bdc",7447:"2f2d15b7",7465:"93ef3330",7487:"5479fdff",7594:"93149197",7908:"58bf3f2f",7944:"5695bf69",8401:"fe36ed9e",8416:"fa2c17fd",8493:"6c2aced9",8574:"21e5efaf",8581:"428479e6",8999:"b092ce0e",9048:"ce29abf9",9121:"529a1d79",9273:"71e8f688",9321:"b780cdcc",9343:"58d921fd",9583:"15ceda2d",9647:"ee01e151",9695:"a76af3a9",9878:"023f85e0"}[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),c={},b="orca-website:",d.l=(e,a,f,t)=>{if(c[e])c[e].push(a);else{var r,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var b=c[e];if(delete c[e],r.parentNode&&r.parentNode.removeChild(r),b&&b.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.p="/cumulus-orca/",d.gca=function(e){return e={17896441:"8401",98575962:"3234","6d785239":"197","07a21aad":"336",e6bc1cd7:"424","197d1f4f":"739","0c51e9a9":"794","565da601":"1097","762e1f90":"1329",f4b45fa4:"1377",b182d274:"1457","84f13883":"1566",b13f152f:"1702",f1da94e7:"1730",efc52324:"1789","29c848cb":"1874",c89f1054:"1931","7c9fa1db":"2096",baba5c87:"2120",d1b0219e:"2269",a9abe928:"2320","701d57ac":"2445",c4f5d8e4:"2634",d967b990:"2647","0e247988":"2700","7954d653":"3110","90a5c184":"3474",b10e40e5:"3827",a571a43a:"3898",d297147b:"4113","00c4eb7a":"4215",afd690bf:"4607","0115c7c5":"4626","327607cf":"4923",f2425baf:"5017","15f782ab":"5143",f58f32ef:"5840","9ffd15dc":"6093","214e46ab":"6102","5d0c8449":"6206","26f9f4b2":"6470","41286e30":"6566","3bf5870b":"6578","1d10fdf2":"6597",b36bbf0c:"6629","19b65d6c":"6647",a204b5f4:"6803","0a118fc9":"7074",a7bd4aaa:"7098",ba6f98e6:"7146","015a63e5":"7411","516c4cd8":"7447",d8c497cf:"7465","6d4c9639":"7487","284e9337":"7594","55c0ab8a":"7908","8634c481":"7944","204ea10f":"8416","68e3716f":"8493","67141c36":"8574","935f2afb":"8581",b5bb807f:"8999",a94703ab:"9048",b9aa2180:"9121","7e54ef6f":"9273","9401b158":"9321","03e1d4f7":"9343","5ce8e70c":"9583","5e95c892":"9647","5119aa4f":"9695","811b9864":"9878"}[e]||e,d.p+d.u(e)},(()=>{var e={5354:0,1869:0};d.f.j=(a,f)=>{var c=d.o(e,a)?e[a]:void 0;if(0!==c)if(c)f.push(c[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var b=new Promise(((f,b)=>c=e[a]=[f,b]));f.push(c[2]=b);var t=d.p+d.u(a),r=new Error;d.l(t,(f=>{if(d.o(e,a)&&(0!==(c=e[a])&&(e[a]=void 0),c)){var b=f&&("load"===f.type?"missing":f.type),t=f&&f.target&&f.target.src;r.message="Loading chunk "+a+" failed.\n("+b+": "+t+")",r.name="ChunkLoadError",r.type=b,r.request=t,c[1](r)}}),"chunk-"+a,a)}},d.O.j=a=>0===e[a];var a=(a,f)=>{var c,b,t=f[0],r=f[1],o=f[2],n=0;if(t.some((a=>0!==e[a]))){for(c in r)d.o(r,c)&&(d.m[c]=r[c]);if(o)var i=o(d)}for(a&&a(f);n{"use strict";var e,a,f,c,b,t={},d={};function r(e){var a=d[e];if(void 0!==a)return a.exports;var f=d[e]={id:e,loaded:!1,exports:{}};return t[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=t,r.c=d,e=[],r.O=(a,f,c,b)=>{if(!f){var t=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(d=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[f,c,b]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,c){if(1&c&&(e=this(e)),8&c)return e;if("object"==typeof e&&e){if(4&c&&e.__esModule)return e;if(16&c&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var t={};a=a||[null,f({}),f([]),f(f)];for(var d=2&c&&e;"object"==typeof d&&!~a.indexOf(d);d=f(d))Object.getOwnPropertyNames(d).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,r.d(b,t),b},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,f)=>(r.f[f](e,a),a)),[])),r.u=e=>"assets/js/"+({197:"6d785239",336:"07a21aad",424:"e6bc1cd7",739:"197d1f4f",794:"0c51e9a9",1097:"565da601",1329:"762e1f90",1377:"f4b45fa4",1457:"b182d274",1566:"84f13883",1702:"b13f152f",1730:"f1da94e7",1789:"efc52324",1874:"29c848cb",1931:"c89f1054",2096:"7c9fa1db",2120:"baba5c87",2269:"d1b0219e",2320:"a9abe928",2445:"701d57ac",2634:"c4f5d8e4",2647:"d967b990",2700:"0e247988",3110:"7954d653",3234:"98575962",3474:"90a5c184",3827:"b10e40e5",3898:"a571a43a",4113:"d297147b",4215:"00c4eb7a",4607:"afd690bf",4626:"0115c7c5",4923:"327607cf",5017:"f2425baf",5143:"15f782ab",5840:"f58f32ef",6093:"9ffd15dc",6102:"214e46ab",6206:"5d0c8449",6470:"26f9f4b2",6566:"41286e30",6578:"3bf5870b",6597:"1d10fdf2",6629:"b36bbf0c",6647:"19b65d6c",6803:"a204b5f4",7074:"0a118fc9",7098:"a7bd4aaa",7146:"ba6f98e6",7411:"015a63e5",7447:"516c4cd8",7465:"d8c497cf",7487:"6d4c9639",7594:"284e9337",7908:"55c0ab8a",7944:"8634c481",8401:"17896441",8416:"204ea10f",8493:"68e3716f",8574:"67141c36",8581:"935f2afb",8999:"b5bb807f",9048:"a94703ab",9121:"b9aa2180",9273:"7e54ef6f",9321:"9401b158",9343:"03e1d4f7",9583:"5ce8e70c",9647:"5e95c892",9695:"5119aa4f",9878:"811b9864"}[e]||e)+"."+{197:"79fe133f",336:"c8076b21",424:"26e5fce2",739:"4cc171c4",794:"e60f956a",1097:"a13a5037",1329:"383a71be",1377:"ba3fa236",1457:"c1a72723",1566:"ec696877",1702:"7e8cfbb3",1730:"157e1dc7",1789:"9671806e",1874:"0e0afe94",1931:"7975817c",2096:"c16c7c9e",2120:"bfda191a",2237:"55d6e923",2269:"21749271",2320:"89196a98",2445:"320db1ee",2634:"67a06f2a",2647:"fd6c39fd",2700:"31a98064",3110:"a4605fa6",3234:"030aa144",3474:"c2a35492",3827:"c5db8698",3898:"838e01fd",4113:"c594b92c",4215:"9e871d2a",4607:"26bfb6dd",4626:"1979074d",4923:"f8e1b802",5017:"b612fb6a",5143:"26e02412",5840:"2fc67c65",6093:"20a51648",6102:"3e3ea013",6206:"14768b8b",6470:"fca39235",6566:"698f0db1",6578:"137ccefc",6597:"395182ef",6629:"038d1cbe",6647:"ccb12c09",6803:"e0c4d95c",7074:"6435cd86",7098:"54449359",7146:"74e82afb",7411:"d9f98bdc",7447:"2f2d15b7",7465:"93ef3330",7487:"5479fdff",7594:"93149197",7908:"58bf3f2f",7944:"5695bf69",8401:"fe36ed9e",8416:"fa2c17fd",8493:"6c2aced9",8574:"21e5efaf",8581:"428479e6",8999:"b092ce0e",9048:"ce29abf9",9121:"529a1d79",9273:"71e8f688",9321:"b780cdcc",9343:"58d921fd",9583:"15ceda2d",9647:"ee01e151",9695:"a76af3a9",9878:"023f85e0"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),c={},b="orca-website:",r.l=(e,a,f,t)=>{if(c[e])c[e].push(a);else{var d,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(s);var b=c[e];if(delete c[e],d.parentNode&&d.parentNode.removeChild(d),b&&b.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),o&&document.head.appendChild(d)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/cumulus-orca/",r.gca=function(e){return e={17896441:"8401",98575962:"3234","6d785239":"197","07a21aad":"336",e6bc1cd7:"424","197d1f4f":"739","0c51e9a9":"794","565da601":"1097","762e1f90":"1329",f4b45fa4:"1377",b182d274:"1457","84f13883":"1566",b13f152f:"1702",f1da94e7:"1730",efc52324:"1789","29c848cb":"1874",c89f1054:"1931","7c9fa1db":"2096",baba5c87:"2120",d1b0219e:"2269",a9abe928:"2320","701d57ac":"2445",c4f5d8e4:"2634",d967b990:"2647","0e247988":"2700","7954d653":"3110","90a5c184":"3474",b10e40e5:"3827",a571a43a:"3898",d297147b:"4113","00c4eb7a":"4215",afd690bf:"4607","0115c7c5":"4626","327607cf":"4923",f2425baf:"5017","15f782ab":"5143",f58f32ef:"5840","9ffd15dc":"6093","214e46ab":"6102","5d0c8449":"6206","26f9f4b2":"6470","41286e30":"6566","3bf5870b":"6578","1d10fdf2":"6597",b36bbf0c:"6629","19b65d6c":"6647",a204b5f4:"6803","0a118fc9":"7074",a7bd4aaa:"7098",ba6f98e6:"7146","015a63e5":"7411","516c4cd8":"7447",d8c497cf:"7465","6d4c9639":"7487","284e9337":"7594","55c0ab8a":"7908","8634c481":"7944","204ea10f":"8416","68e3716f":"8493","67141c36":"8574","935f2afb":"8581",b5bb807f:"8999",a94703ab:"9048",b9aa2180:"9121","7e54ef6f":"9273","9401b158":"9321","03e1d4f7":"9343","5ce8e70c":"9583","5e95c892":"9647","5119aa4f":"9695","811b9864":"9878"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,f)=>{var c=r.o(e,a)?e[a]:void 0;if(0!==c)if(c)f.push(c[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var b=new Promise(((f,b)=>c=e[a]=[f,b]));f.push(c[2]=b);var t=r.p+r.u(a),d=new Error;r.l(t,(f=>{if(r.o(e,a)&&(0!==(c=e[a])&&(e[a]=void 0),c)){var b=f&&("load"===f.type?"missing":f.type),t=f&&f.target&&f.target.src;d.message="Loading chunk "+a+" failed.\n("+b+": "+t+")",d.name="ChunkLoadError",d.type=b,d.request=t,c[1](d)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var c,b,t=f[0],d=f[1],o=f[2],n=0;if(t.some((a=>0!==e[a]))){for(c in d)r.o(d,c)&&(r.m[c]=d[c]);if(o)var i=o(r)}for(a&&a(f);n ORCA-Architecture | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/about/architecture/architecture-api-container.html b/docs/about/architecture/architecture-api-container.html index 43f08894c..3c054ff0c 100644 --- a/docs/about/architecture/architecture-api-container.html +++ b/docs/about/architecture/architecture-api-container.html @@ -4,7 +4,7 @@ API Container Architecture | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/about/architecture/architecture-archive-container.html b/docs/about/architecture/architecture-archive-container.html index 71927a6ef..a0094bcfb 100644 --- a/docs/about/architecture/architecture-archive-container.html +++ b/docs/about/architecture/architecture-archive-container.html @@ -4,7 +4,7 @@ Archive Container Architecture | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/about/architecture/architecture-database-container.html b/docs/about/architecture/architecture-database-container.html index 38732030c..5301369aa 100644 --- a/docs/about/architecture/architecture-database-container.html +++ b/docs/about/architecture/architecture-database-container.html @@ -4,7 +4,7 @@ Database Container Architecture | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/about/architecture/architecture-intro.html b/docs/about/architecture/architecture-intro.html index 10d507c77..5ac6a6510 100644 --- a/docs/about/architecture/architecture-intro.html +++ b/docs/about/architecture/architecture-intro.html @@ -4,7 +4,7 @@ ORCA Architecture Introduction | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/about/architecture/architecture-recover-container.html b/docs/about/architecture/architecture-recover-container.html index 4c54e2025..78a157e4f 100644 --- a/docs/about/architecture/architecture-recover-container.html +++ b/docs/about/architecture/architecture-recover-container.html @@ -4,7 +4,7 @@ Recover Container Architecture | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/about/architecture/architecture-software-system.html b/docs/about/architecture/architecture-software-system.html index 6eb107aaf..2780ab86c 100644 --- a/docs/about/architecture/architecture-software-system.html +++ b/docs/about/architecture/architecture-software-system.html @@ -4,7 +4,7 @@ Software System Architecture | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/about/introduction/intro-contributing.html b/docs/about/introduction/intro-contributing.html index 02a7d2c37..32c4e3f80 100644 --- a/docs/about/introduction/intro-contributing.html +++ b/docs/about/introduction/intro-contributing.html @@ -4,7 +4,7 @@ Contributing to ORCA | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/about/introduction/intro-glossary.html b/docs/about/introduction/intro-glossary.html index 388a4cede..39f7d998e 100644 --- a/docs/about/introduction/intro-glossary.html +++ b/docs/about/introduction/intro-glossary.html @@ -4,7 +4,7 @@ Glossary | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/about/introduction/intro-navigating.html b/docs/about/introduction/intro-navigating.html index 760642277..bd734ca9e 100644 --- a/docs/about/introduction/intro-navigating.html +++ b/docs/about/introduction/intro-navigating.html @@ -4,7 +4,7 @@ Navigating the ORCA Documents | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/about/introduction/orca-intro.html b/docs/about/introduction/orca-intro.html index f40b1280b..aa71de0d0 100644 --- a/docs/about/introduction/orca-intro.html +++ b/docs/about/introduction/orca-intro.html @@ -4,7 +4,7 @@ Introduction to ORCA | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/about/team.html b/docs/about/team.html index c18dc454f..8b62c4baf 100644 --- a/docs/about/team.html +++ b/docs/about/team.html @@ -4,7 +4,7 @@ ORCA Team | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/api.html b/docs/developer/api.html index 25e3ce368..346bf50b0 100644 --- a/docs/developer/api.html +++ b/docs/developer/api.html @@ -4,7 +4,7 @@ ORCA API Reference | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/deployment-guide/deploying-from-windows.html b/docs/developer/deployment-guide/deploying-from-windows.html index 0e75bf52c..ffa31c919 100644 --- a/docs/developer/deployment-guide/deploying-from-windows.html +++ b/docs/developer/deployment-guide/deploying-from-windows.html @@ -4,7 +4,7 @@ Deploy from Windows | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/deployment-guide/deployment-environment.html b/docs/developer/deployment-guide/deployment-environment.html index c645355e6..b151fef5d 100644 --- a/docs/developer/deployment-guide/deployment-environment.html +++ b/docs/developer/deployment-guide/deployment-environment.html @@ -4,7 +4,7 @@ Creating a Deployment Environment | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/deployment-guide/deployment-s3-bucket.html b/docs/developer/deployment-guide/deployment-s3-bucket.html index 957e0c54c..2545f052e 100644 --- a/docs/developer/deployment-guide/deployment-s3-bucket.html +++ b/docs/developer/deployment-guide/deployment-s3-bucket.html @@ -4,7 +4,7 @@ Creating the Archive Bucket | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/deployment-guide/deployment-s3-credentials.html b/docs/developer/deployment-guide/deployment-s3-credentials.html index 62d197e1f..c8137cbc1 100644 --- a/docs/developer/deployment-guide/deployment-s3-credentials.html +++ b/docs/developer/deployment-guide/deployment-s3-credentials.html @@ -4,7 +4,7 @@ Generating S3 credentials | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/deployment-guide/deployment-upgrading-orca.html b/docs/developer/deployment-guide/deployment-upgrading-orca.html index 718464737..8b4900fb6 100644 --- a/docs/developer/deployment-guide/deployment-upgrading-orca.html +++ b/docs/developer/deployment-guide/deployment-upgrading-orca.html @@ -4,7 +4,7 @@ Upgrading ORCA | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/deployment-guide/deployment-with-cumulus.html b/docs/developer/deployment-guide/deployment-with-cumulus.html index 603b8c857..30a04d768 100644 --- a/docs/developer/deployment-guide/deployment-with-cumulus.html +++ b/docs/developer/deployment-guide/deployment-with-cumulus.html @@ -4,7 +4,7 @@ Deploying ORCA with Cumulus | Operational Recovery Cloud Archive (ORCA) - + @@ -40,7 +40,7 @@

Cr URL path to the release. In the example below the release being used is v3.0.2.

Deploying a local version

If you wish to deploy code cloned locally from Github instead of a release zip, run ./bin/build_tasks.sh. This will crawl the tasks directory and build a .zip file (currently by just zipping all python files and dependencies) in each of it's sub-directories. You may then set source to the root folder of your cloned Orca repository.

-
## ORCA Module
## =============================================================================
module "orca" {
source = "https://github.com/nasa/cumulus-orca/releases/download/v9.0.0/cumulus-orca-terraform.zip"
## --------------------------
## Cumulus Variables
## --------------------------
## REQUIRED
aws_region = var.region
buckets = var.buckets
lambda_subnet_ids = var.lambda_subnet_ids
permissions_boundary_arn = var.permissions_boundary_arn
prefix = var.prefix
system_bucket = var.system_bucket
vpc_id = var.vpc_id

## OPTIONAL
tags = var.tags

## --------------------------
## ORCA Variables
## --------------------------
## REQUIRED
db_admin_password = var.db_admin_password
db_host_endpoint = var.db_host_endpoint
db_user_password = var.db_user_password
dlq_subscription_email = var.dlq_subscription_email
orca_default_bucket = var.orca_default_bucket
orca_reports_bucket_name = var.orca_reports_bucket_name
rds_security_group_id = var.rds_security_group_id

## OPTIONAL
# archive_recovery_queue_message_retention_time_seconds = 777600
# db_admin_username = "postgres"
# default_multipart_chunksize_mb = 250
# log_level = "INFO"
# metadata_queue_message_retention_time = 777600
# orca_default_recovery_type = "Standard"
# orca_default_storage_class = "GLACIER"
# orca_delete_old_reconcile_jobs_frequency_cron = "cron(0 0 ? * SUN *)"
# orca_ingest_lambda_memory_size = 2240
# orca_ingest_lambda_timeout = 600
# orca_internal_reconciliation_expiration_days = 30
# orca_reconciliation_lambda_memory_size = 128
# orca_reconciliation_lambda_timeout = 720
# orca_recovery_buckets = []
# orca_recovery_complete_filter_prefix = ""
# orca_recovery_expiration_days = 5
# orca_recovery_lambda_memory_size = 128
# orca_recovery_lambda_timeout = 720
# orca_recovery_retry_limit = 3
# orca_recovery_retry_interval = 1
# orca_recovery_retry_backoff = 2
# s3_inventory_queue_message_retention_time_seconds = 432000
# s3_report_frequency = "Daily"
# sqs_delay_time_seconds = 0
# sqs_maximum_message_size = 262144
# staged_recovery_queue_message_retention_time_seconds = 432000
# status_update_queue_message_retention_time_seconds = 777600


}
+
## ORCA Module
## =============================================================================
module "orca" {
source = "https://github.com/nasa/cumulus-orca/releases/download/v9.0.0/cumulus-orca-terraform.zip"
## --------------------------
## Cumulus Variables
## --------------------------
## REQUIRED
aws_region = var.region
buckets = var.buckets
lambda_subnet_ids = var.lambda_subnet_ids
permissions_boundary_arn = var.permissions_boundary_arn
prefix = var.prefix
system_bucket = var.system_bucket
vpc_id = var.vpc_id

## OPTIONAL
tags = var.tags

## --------------------------
## ORCA Variables
## --------------------------
## REQUIRED
db_admin_password = var.db_admin_password
db_host_endpoint = var.db_host_endpoint
db_user_password = var.db_user_password
dlq_subscription_email = var.dlq_subscription_email
orca_default_bucket = var.orca_default_bucket
orca_reports_bucket_name = var.orca_reports_bucket_name
rds_security_group_id = var.rds_security_group_id

## OPTIONAL
# archive_recovery_queue_message_retention_time_seconds = 777600
# db_admin_username = "postgres"
# default_multipart_chunksize_mb = 250
# deploy_rds_cluster_role_association = true
# log_level = "INFO"
# metadata_queue_message_retention_time = 777600
# orca_default_recovery_type = "Standard"
# orca_default_storage_class = "GLACIER"
# orca_delete_old_reconcile_jobs_frequency_cron = "cron(0 0 ? * SUN *)"
# orca_ingest_lambda_memory_size = 2240
# orca_ingest_lambda_timeout = 600
# orca_internal_reconciliation_expiration_days = 30
# orca_reconciliation_lambda_memory_size = 128
# orca_reconciliation_lambda_timeout = 720
# orca_recovery_buckets = []
# orca_recovery_complete_filter_prefix = ""
# orca_recovery_expiration_days = 5
# orca_recovery_lambda_memory_size = 128
# orca_recovery_lambda_timeout = 720
# orca_recovery_retry_limit = 3
# orca_recovery_retry_interval = 1
# orca_recovery_retry_backoff = 2
# s3_inventory_queue_message_retention_time_seconds = 432000
# s3_report_frequency = "Daily"
# sqs_delay_time_seconds = 0
# sqs_maximum_message_size = 262144
# staged_recovery_queue_message_retention_time_seconds = 432000
# status_update_queue_message_retention_time_seconds = 777600

}

Required Values Unique to the ORCA Module

The following variables are unique to the ORCA module and required to be set by the user. More information about these required variables, as well as the @@ -177,7 +177,7 @@

ORCA file. The variables can be set with proper values for your environment in the cumulus-tf/terraform.tfvars file. The default setting for each of the optional variables is shown in the table below.

-
VariableTypeDefinitionDefault
archive_recovery_queue_message_retention_time_secondsstringThe number of seconds archive-recovery-queue SQS retains a message in seconds.777600
db_admin_usernamestringUsername for RDS database administrator authentication."postgres"
default_multipart_chunksize_mbnumberThe default maximum size of chunks to use when copying. Can be overridden by collection config.250
internal_report_queue_message_retention_time_secondsnumberNumber of seconds the internal-report-queue SQS retains a message.432000
metadata_queue_message_retention_time_secondsnumberNumber of seconds the metadata-queue fifo SQS retains a message.777600
db_namestringThe name of the Orca database within the RDS cluster. Any - in prefix will be replaced with _.PREFIX_orca
db_user_namestringThe name of the application user for the Orca database. Any - in prefix will be replaced with _.PREFIX_orcauser
log_levelstringsets the verbose of PowerTools logger. Must be one of 'INFO', 'DEBUG', 'WARN', 'ERROR'. Defaults to 'INFO'."INFO"
orca_default_recovery_typestringThe Tier for the restore request. Valid values are 'Standard', 'Bulk', 'Expedited'"Standard"
orca_default_storage_classstringThe class of storage to use when ingesting files. Can be overridden by collection config."GLACIER"
orca_delete_old_reconcile_jobs_frequency_cronstringFrequency cron for running the delete_old_reconcile_jobs lambda."cron(0 0 ? * SUN *)"
orca_ingest_lambda_memory_sizenumberAmount of memory in MB the ORCA copy_to_archive lambda can use at runtime.2240
orca_ingest_lambda_timeoutnumberTimeout in number of seconds for ORCA copy_to_archive lambda.600
orca_internal_reconciliation_expiration_daysnumberOnly reports updated before this many days ago will be deleted.30
orca_reconciliation_lambda_memory_sizenumberAmount of memory in MB the ORCA reconciliation lambda can use at runtime.128
orca_reconciliation_lambda_timeoutnumberTimeout in number of seconds for ORCA reconciliation lambdas.720
orca_recovery_bucketsList (string)List of bucket names that ORCA has permissions to restore data to. Default is all in the buckets map.[]
orca_recovery_complete_filter_prefixstringSpecifies object key name prefix by the archive Bucket trigger.""
orca_recovery_expiration_daysnumberNumber of days a recovered file will remain available for copy.5
orca_recovery_lambda_memory_sizenumberAmount of memory in MB the ORCA recovery lambda can use at runtime.128
orca_recovery_lambda_timeoutnumberTimeout in number of seconds for ORCA recovery lambdas.720
orca_recovery_retry_limitnumberMaximum number of retries of a recovery failure before giving up.3
orca_recovery_retry_intervalnumberNumber of seconds to wait between recovery failure retries.1
orca_recovery_retry_backoffnumberThe multiplier by which the retry interval increases during each attempt.2
s3_inventory_queue_message_retention_time_secondsnumberThe number of seconds s3-inventory-queue fifo SQS retains a message in seconds. Maximum value is 14 days.432000
s3_report_frequencystringHow often to generate s3 reports for internal reconciliation. Daily or WeeklyDaily
sqs_delay_time_secondsnumberNumber of seconds that the delivery of all messages in the queue will be delayed.0
sqs_maximum_message_sizenumberThe limit of how many bytes a message can contain before Amazon SQS rejects it.262144
staged_recovery_queue_message_retention_time_secondsnumberNumber of seconds the staged-recovery-queue fifo SQS retains a message.432000
status_update_queue_message_retention_time_secondsnumberNumber of seconds the status_update_queue fifo SQS retains a message.777600
+
VariableTypeDefinitionDefault
archive_recovery_queue_message_retention_time_secondsstringThe number of seconds archive-recovery-queue SQS retains a message in seconds.777600
db_admin_usernamestringUsername for RDS database administrator authentication."postgres"
default_multipart_chunksize_mbnumberThe default maximum size of chunks to use when copying. Can be overridden by collection config.250
deploy_rds_cluster_role_associationbooleanAttaches IAM role for Aurora v2 cluster if true.true
internal_report_queue_message_retention_time_secondsnumberNumber of seconds the internal-report-queue SQS retains a message.432000
metadata_queue_message_retention_time_secondsnumberNumber of seconds the metadata-queue fifo SQS retains a message.777600
db_namestringThe name of the Orca database within the RDS cluster. Any - in prefix will be replaced with _.PREFIX_orca
db_user_namestringThe name of the application user for the Orca database. Any - in prefix will be replaced with _.PREFIX_orcauser
log_levelstringsets the verbose of PowerTools logger. Must be one of 'INFO', 'DEBUG', 'WARN', 'ERROR'. Defaults to 'INFO'."INFO"
orca_default_recovery_typestringThe Tier for the restore request. Valid values are 'Standard', 'Bulk', 'Expedited'"Standard"
orca_default_storage_classstringThe class of storage to use when ingesting files. Can be overridden by collection config."GLACIER"
orca_delete_old_reconcile_jobs_frequency_cronstringFrequency cron for running the delete_old_reconcile_jobs lambda."cron(0 0 ? * SUN *)"
orca_ingest_lambda_memory_sizenumberAmount of memory in MB the ORCA copy_to_archive lambda can use at runtime.2240
orca_ingest_lambda_timeoutnumberTimeout in number of seconds for ORCA copy_to_archive lambda.600
orca_internal_reconciliation_expiration_daysnumberOnly reports updated before this many days ago will be deleted.30
orca_reconciliation_lambda_memory_sizenumberAmount of memory in MB the ORCA reconciliation lambda can use at runtime.128
orca_reconciliation_lambda_timeoutnumberTimeout in number of seconds for ORCA reconciliation lambdas.720
orca_recovery_bucketsList (string)List of bucket names that ORCA has permissions to restore data to. Default is all in the buckets map.[]
orca_recovery_complete_filter_prefixstringSpecifies object key name prefix by the archive Bucket trigger.""
orca_recovery_expiration_daysnumberNumber of days a recovered file will remain available for copy.5
orca_recovery_lambda_memory_sizenumberAmount of memory in MB the ORCA recovery lambda can use at runtime.128
orca_recovery_lambda_timeoutnumberTimeout in number of seconds for ORCA recovery lambdas.720
orca_recovery_retry_limitnumberMaximum number of retries of a recovery failure before giving up.3
orca_recovery_retry_intervalnumberNumber of seconds to wait between recovery failure retries.1
orca_recovery_retry_backoffnumberThe multiplier by which the retry interval increases during each attempt.2
s3_inventory_queue_message_retention_time_secondsnumberThe number of seconds s3-inventory-queue fifo SQS retains a message in seconds. Maximum value is 14 days.432000
s3_report_frequencystringHow often to generate s3 reports for internal reconciliation. Daily or WeeklyDaily
sqs_delay_time_secondsnumberNumber of seconds that the delivery of all messages in the queue will be delayed.0
sqs_maximum_message_sizenumberThe limit of how many bytes a message can contain before Amazon SQS rejects it.262144
staged_recovery_queue_message_retention_time_secondsnumberNumber of seconds the staged-recovery-queue fifo SQS retains a message.432000
status_update_queue_message_retention_time_secondsnumberNumber of seconds the status_update_queue fifo SQS retains a message.777600

ORCA Module Outputs

The orca module provides the outputs seen below in the table. Outputs are accessed using terraform dot syntax in the format of module.orca.variable_name.

diff --git a/docs/developer/deployment-guide/deployment.html b/docs/developer/deployment-guide/deployment.html index b8c7bab54..55fa4a750 100644 --- a/docs/developer/deployment-guide/deployment.html +++ b/docs/developer/deployment-guide/deployment.html @@ -4,7 +4,7 @@ Deployment Information | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/deployment-guide/recovery-workflow.html b/docs/developer/deployment-guide/recovery-workflow.html index 759c5458b..10332c564 100644 --- a/docs/developer/deployment-guide/recovery-workflow.html +++ b/docs/developer/deployment-guide/recovery-workflow.html @@ -4,7 +4,7 @@ Recovery Workflow | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/deployment-guide/testing_deployment.html b/docs/developer/deployment-guide/testing_deployment.html index b1576136c..e668c1e38 100644 --- a/docs/developer/deployment-guide/testing_deployment.html +++ b/docs/developer/deployment-guide/testing_deployment.html @@ -4,7 +4,7 @@ Testing Deployment | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/code/best-practices.html b/docs/developer/development-guide/code/best-practices.html index b20bb4ef3..c432db660 100644 --- a/docs/developer/development-guide/code/best-practices.html +++ b/docs/developer/development-guide/code/best-practices.html @@ -4,7 +4,7 @@ Best Practices | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/code/clean-architecture.html b/docs/developer/development-guide/code/clean-architecture.html index 4214854f0..ae54f5dc8 100644 --- a/docs/developer/development-guide/code/clean-architecture.html +++ b/docs/developer/development-guide/code/clean-architecture.html @@ -4,7 +4,7 @@ Clean Architecture | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/code/contrib-code-intro.html b/docs/developer/development-guide/code/contrib-code-intro.html index ae64ab460..978add31a 100644 --- a/docs/developer/development-guide/code/contrib-code-intro.html +++ b/docs/developer/development-guide/code/contrib-code-intro.html @@ -4,7 +4,7 @@ Code Introduction | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/code/integration-tests.html b/docs/developer/development-guide/code/integration-tests.html index e862e6c04..6b96ebee3 100644 --- a/docs/developer/development-guide/code/integration-tests.html +++ b/docs/developer/development-guide/code/integration-tests.html @@ -4,7 +4,7 @@ Integration Tests | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/code/linting.html b/docs/developer/development-guide/code/linting.html index a58cf4f9c..63425e718 100644 --- a/docs/developer/development-guide/code/linting.html +++ b/docs/developer/development-guide/code/linting.html @@ -4,7 +4,7 @@ Running Pylint Against Your Code | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/code/local-debugging.html b/docs/developer/development-guide/code/local-debugging.html index e56cf0d77..2169a722d 100644 --- a/docs/developer/development-guide/code/local-debugging.html +++ b/docs/developer/development-guide/code/local-debugging.html @@ -4,7 +4,7 @@ Local Debugging with AWS Resources | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/code/orca-logging.html b/docs/developer/development-guide/code/orca-logging.html index 370a2fa53..8cfdc649c 100644 --- a/docs/developer/development-guide/code/orca-logging.html +++ b/docs/developer/development-guide/code/orca-logging.html @@ -4,7 +4,7 @@ ORCA Logs | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/code/parallel-scripting.html b/docs/developer/development-guide/code/parallel-scripting.html index 80e32824f..efb21842b 100644 --- a/docs/developer/development-guide/code/parallel-scripting.html +++ b/docs/developer/development-guide/code/parallel-scripting.html @@ -4,7 +4,7 @@ Parallel Scripting | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/code/postgres-tests.html b/docs/developer/development-guide/code/postgres-tests.html index fc015112c..d2bfdac0a 100644 --- a/docs/developer/development-guide/code/postgres-tests.html +++ b/docs/developer/development-guide/code/postgres-tests.html @@ -4,7 +4,7 @@ Postgres Tests | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/code/postgres-tips.html b/docs/developer/development-guide/code/postgres-tips.html index 445a5ad19..b14f13edc 100644 --- a/docs/developer/development-guide/code/postgres-tips.html +++ b/docs/developer/development-guide/code/postgres-tips.html @@ -4,7 +4,7 @@ Postgres Paging | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/code/setup-dev-env.html b/docs/developer/development-guide/code/setup-dev-env.html index 8ff3ce1b0..70e310a94 100644 --- a/docs/developer/development-guide/code/setup-dev-env.html +++ b/docs/developer/development-guide/code/setup-dev-env.html @@ -4,7 +4,7 @@ Setting Up a Dev Environment | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/code/unit-tests.html b/docs/developer/development-guide/code/unit-tests.html index 1fcc84a58..ce7c22670 100644 --- a/docs/developer/development-guide/code/unit-tests.html +++ b/docs/developer/development-guide/code/unit-tests.html @@ -4,7 +4,7 @@ Unit Tests | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/code/versioning-releases.html b/docs/developer/development-guide/code/versioning-releases.html index 51fe4d13c..c6437db2a 100644 --- a/docs/developer/development-guide/code/versioning-releases.html +++ b/docs/developer/development-guide/code/versioning-releases.html @@ -4,7 +4,7 @@ ORCA Versioning and Releases | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/documentation/contrib-documentation-add.html b/docs/developer/development-guide/documentation/contrib-documentation-add.html index 111c98649..91b2b3176 100644 --- a/docs/developer/development-guide/documentation/contrib-documentation-add.html +++ b/docs/developer/development-guide/documentation/contrib-documentation-add.html @@ -4,7 +4,7 @@ Adding New Content | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/documentation/contrib-documentation-deploy.html b/docs/developer/development-guide/documentation/contrib-documentation-deploy.html index bc4d28b4a..1537c2cef 100644 --- a/docs/developer/development-guide/documentation/contrib-documentation-deploy.html +++ b/docs/developer/development-guide/documentation/contrib-documentation-deploy.html @@ -4,7 +4,7 @@ Deploying Documentation | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/documentation/contrib-documentation-env.html b/docs/developer/development-guide/documentation/contrib-documentation-env.html index bd0627091..86d67d61f 100644 --- a/docs/developer/development-guide/documentation/contrib-documentation-env.html +++ b/docs/developer/development-guide/documentation/contrib-documentation-env.html @@ -4,7 +4,7 @@ Development Environment | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/documentation/contrib-documentation-intro.html b/docs/developer/development-guide/documentation/contrib-documentation-intro.html index 7ad2b23dc..319b1f245 100644 --- a/docs/developer/development-guide/documentation/contrib-documentation-intro.html +++ b/docs/developer/development-guide/documentation/contrib-documentation-intro.html @@ -4,7 +4,7 @@ Documentation Introduction | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/documentation/contrib-documentation-tasks.html b/docs/developer/development-guide/documentation/contrib-documentation-tasks.html index 7cfe12090..9d9e28b1e 100644 --- a/docs/developer/development-guide/documentation/contrib-documentation-tasks.html +++ b/docs/developer/development-guide/documentation/contrib-documentation-tasks.html @@ -4,7 +4,7 @@ Task Documentation | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/documentation/contrib-documentation-templates.html b/docs/developer/development-guide/documentation/contrib-documentation-templates.html index 3b17ef48f..6400e8da0 100644 --- a/docs/developer/development-guide/documentation/contrib-documentation-templates.html +++ b/docs/developer/development-guide/documentation/contrib-documentation-templates.html @@ -4,7 +4,7 @@ Documentation Templates | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/development-guide/documentation/documentation-style-guide.html b/docs/developer/development-guide/documentation/documentation-style-guide.html index 580b23f9e..9da8d6686 100644 --- a/docs/developer/development-guide/documentation/documentation-style-guide.html +++ b/docs/developer/development-guide/documentation/documentation-style-guide.html @@ -4,7 +4,7 @@ Documentation Style Guide | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/quickstart/developer-intro.html b/docs/developer/quickstart/developer-intro.html index 241c1f30a..1dc7ecfcd 100644 --- a/docs/developer/quickstart/developer-intro.html +++ b/docs/developer/quickstart/developer-intro.html @@ -4,7 +4,7 @@ Developer Quick Start Guide | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/research/research-APIGateway.html b/docs/developer/research/research-APIGateway.html index 152878fcd..f14cfb018 100644 --- a/docs/developer/research/research-APIGateway.html +++ b/docs/developer/research/research-APIGateway.html @@ -4,7 +4,7 @@ API Gateway Research Notes | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/research/research-AuroraServerless.html b/docs/developer/research/research-AuroraServerless.html index 07e358e43..97a844ac8 100644 --- a/docs/developer/research/research-AuroraServerless.html +++ b/docs/developer/research/research-AuroraServerless.html @@ -4,7 +4,7 @@ Aurora Serverless Research Notes | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/research/research-bamboo-integration-tests.html b/docs/developer/research/research-bamboo-integration-tests.html index 3c6d95e07..d8244d049 100644 --- a/docs/developer/research/research-bamboo-integration-tests.html +++ b/docs/developer/research/research-bamboo-integration-tests.html @@ -4,7 +4,7 @@ Research Notes on running integration tests in bamboo CI/CD | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/research/research-bamboo.html b/docs/developer/research/research-bamboo.html index e206bbedf..329e7b815 100644 --- a/docs/developer/research/research-bamboo.html +++ b/docs/developer/research/research-bamboo.html @@ -4,7 +4,7 @@ Bamboo specs Research Notes | Operational Recovery Cloud Archive (ORCA) - + @@ -62,7 +62,7 @@

Running

In order to run the YAML definition file, it has to be stored at bamboo-specs/bamboo.yml or bamboo-specs/bamboo.yamlunder the repository specified. Check this documentation for more information.

important

Make sure the linked repository have permissions to create plans within given project in order to execute the YAML definition and create a plan.

In order to run this YAML definition from github repo, user has to setup Repository-stored Specs on Bamboo CI/CD website. From the Bamboo dashboard, Choose Specs->Set up Specs repository and then select Build project as ORCA and Repository host as ORCA repo. -The next step is to create a Webhook on the source repository by going to the settings option so that Bamboo knows about new commits. Webhooks allow Github repositories to communicate with Bamboo. A webhook has been created for ORCA project in Bamboo which needs to be copied to the webhook section in cumulus-orca repo. The webhook can be seen under the Specs section on Bamboo CI website. Without adding webhook, Bamboo was not able to recognize the new Spec file added to the cumulus-orca repo. Email nasa-data@lists.arc.nasa.gov to NASA Github admin team to make that change. More instructions can be found here

+The next step is to create a Webhook on the source repository by going to the settings option so that Bamboo knows about new commits. Webhooks allow Github repositories to communicate with Bamboo. A webhook has been created for ORCA project in Bamboo which needs to be copied to the webhook section in cumulus-orca repo. The webhook can be seen under the Specs section on Bamboo CI website. Without adding webhook, Bamboo was not able to recognize the new Spec file added to the cumulus-orca repo. Email hq-open-innovation@mail.nasa.gov to NASA Github admin team to make that change. More instructions can be found here

important

Webhooks must be triggered by HTTP POST method and the Content-Type header should be set to application/json.

If Webhook is not created, then user has to set up Specs repository as shown above every time the YAML definition is changed. Otherwise, it will not pull the latest changes. Check this documentation for details on setting up Webhook.

Creating a prototype

@@ -74,7 +74,7 @@

Future directions

  • Convert bamboo plans to YAML definition language and store under cumulus-orca/bamboo-specs/bamboo.yaml.
  • -
  • In order to add the webhook to the cumulus-orca repo, email nasa-data@lists.arc.nasa.gov to NASA Github admin team to make that change. More instructions can be found here.
  • +
  • In order to add the webhook to the cumulus-orca repo, email hq-open-innovation@mail.nasa.gov to NASA Github admin team to make that change. More instructions can be found here.
References
    diff --git a/docs/developer/research/research-deep-archive-migration.html b/docs/developer/research/research-deep-archive-migration.html index 36e145862..4e98f0372 100644 --- a/docs/developer/research/research-deep-archive-migration.html +++ b/docs/developer/research/research-deep-archive-migration.html @@ -4,7 +4,7 @@ Deep Archive Storage Migration Research Notes | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/research/research-graphql.html b/docs/developer/research/research-graphql.html index 80e409aff..6361b7cec 100644 --- a/docs/developer/research/research-graphql.html +++ b/docs/developer/research/research-graphql.html @@ -4,7 +4,7 @@ GraphQL Research Notes | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/research/research-intro.html b/docs/developer/research/research-intro.html index 9d4137e97..733d19dcf 100644 --- a/docs/developer/research/research-intro.html +++ b/docs/developer/research/research-intro.html @@ -4,7 +4,7 @@ Introduction to ORCA Research | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/research/research-lambda-container.html b/docs/developer/research/research-lambda-container.html index 963f41cc0..17fec998f 100644 --- a/docs/developer/research/research-lambda-container.html +++ b/docs/developer/research/research-lambda-container.html @@ -4,7 +4,7 @@ Using Lambda functions as container research Notes | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/research/research-localstack.html b/docs/developer/research/research-localstack.html index 264169de4..0bda49dc1 100644 --- a/docs/developer/research/research-localstack.html +++ b/docs/developer/research/research-localstack.html @@ -4,7 +4,7 @@ Localstack Research Notes | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/research/research-logging-libraries.html b/docs/developer/research/research-logging-libraries.html index 01b9d5238..448e3d7bc 100644 --- a/docs/developer/research/research-logging-libraries.html +++ b/docs/developer/research/research-logging-libraries.html @@ -4,7 +4,7 @@ Logging Libraries Research Notes | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/research/research-multipart-chunksize.html b/docs/developer/research/research-multipart-chunksize.html index 2e42443c7..8c960a148 100644 --- a/docs/developer/research/research-multipart-chunksize.html +++ b/docs/developer/research/research-multipart-chunksize.html @@ -4,7 +4,7 @@ Multipart Chunksize Research Notes | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/research/research-orca-delete-functionality.html b/docs/developer/research/research-orca-delete-functionality.html index 0d3fe9f79..d9cc354e3 100644 --- a/docs/developer/research/research-orca-delete-functionality.html +++ b/docs/developer/research/research-orca-delete-functionality.html @@ -4,7 +4,7 @@ Research Notes on ORCA delete functionality. | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/research/research-pushing-docker-image.html b/docs/developer/research/research-pushing-docker-image.html index 050dcf3e2..13273d259 100644 --- a/docs/developer/research/research-pushing-docker-image.html +++ b/docs/developer/research/research-pushing-docker-image.html @@ -4,7 +4,7 @@ Notes on pushing and deploying docker images. | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/research/research-reconciliation.html b/docs/developer/research/research-reconciliation.html index fc62278b9..ea7a14527 100644 --- a/docs/developer/research/research-reconciliation.html +++ b/docs/developer/research/research-reconciliation.html @@ -4,7 +4,7 @@ ORCA Reconciliation | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/developer/research/research-s3-bucket-best-practices.html b/docs/developer/research/research-s3-bucket-best-practices.html index 6087f6ec1..3a2bcc777 100644 --- a/docs/developer/research/research-s3-bucket-best-practices.html +++ b/docs/developer/research/research-s3-bucket-best-practices.html @@ -4,7 +4,7 @@ S3 Future Direction/Best Practices | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/operator/collection-configuration.html b/docs/operator/collection-configuration.html index 643625070..3ad75d74e 100644 --- a/docs/operator/collection-configuration.html +++ b/docs/operator/collection-configuration.html @@ -4,7 +4,7 @@ Collection Configuration | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/operator/data-recovery.html b/docs/operator/data-recovery.html index 91ed5aa80..90657b9d7 100644 --- a/docs/operator/data-recovery.html +++ b/docs/operator/data-recovery.html @@ -4,7 +4,7 @@ Data Recovery | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/operator/operator-intro.html b/docs/operator/operator-intro.html index 79d7f053c..9535b8a64 100644 --- a/docs/operator/operator-intro.html +++ b/docs/operator/operator-intro.html @@ -4,7 +4,7 @@ Operator Introduction | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/operator/reingest-to-orca.html b/docs/operator/reingest-to-orca.html index d8ed028b6..ded85c093 100644 --- a/docs/operator/reingest-to-orca.html +++ b/docs/operator/reingest-to-orca.html @@ -4,7 +4,7 @@ Re-Ingesting Data to ORCA | Operational Recovery Cloud Archive (ORCA) - + diff --git a/docs/operator/storage-classes.html b/docs/operator/storage-classes.html index c2eb3be54..01a167d14 100644 --- a/docs/operator/storage-classes.html +++ b/docs/operator/storage-classes.html @@ -4,7 +4,7 @@ S3 Storage Classes in Orca | Operational Recovery Cloud Archive (ORCA) - + diff --git a/index.html b/index.html index a6a7e8658..1a4cf12e2 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ Hello from Operational Recovery Cloud Archive (ORCA) | Operational Recovery Cloud Archive (ORCA) - +