# What this PR does Refactors the PagerDuty migration script to be a bit more generic + adds a migration script to migrate from Splunk OnCall (VictorOps) tldr; ```bash ❯ docker build -t oncall-migrator . [+] Building 0.4s (10/10) FINISHED ❯ docker run --rm \ -e MIGRATING_FROM="pagerduty" \ -e MODE="plan" \ -e ONCALL_API_URL="http://localhost:8080" \ -e ONCALL_API_TOKEN="<ONCALL_API_TOKEN>" \ -e PAGERDUTY_API_TOKEN="<PAGERDUTY_API_TOKEN>" \ oncall-migrator running pagerduty migration script... ❯ docker run --rm \ -e MIGRATING_FROM="splunk" \ -e MODE="plan" \ -e ONCALL_API_URL="http://localhost:8080" \ -e ONCALL_API_TOKEN="<ONCALL_API_TOKEN>" \ -e SPLUNK_API_ID="<SPLUNK_API_ID>" \ -e SPLUNK_API_KEY="<SPLUNK_API_KEY>" \ oncall-migrator migrating from splunk oncall... ``` https://www.loom.com/share/a855062d436a4ef79f030e22528d8c71 ## Checklist - [x] Unit, integration, and e2e (if applicable) tests updated - [x] Documentation added (or `pr:no public docs` PR label added if not required) - [x] Added the relevant release notes label (see labels prefixed w/ `release:`). These labels dictate how your PR will show up in the autogenerated release notes.
25 lines
674 B
Python
25 lines
674 B
Python
import os
|
|
from urllib.parse import urljoin
|
|
|
|
PAGERDUTY = "pagerduty"
|
|
SPLUNK = "splunk"
|
|
MIGRATING_FROM = os.getenv("MIGRATING_FROM")
|
|
assert MIGRATING_FROM in (PAGERDUTY, SPLUNK)
|
|
|
|
MODE_PLAN = "plan"
|
|
MODE_MIGRATE = "migrate"
|
|
MODE = os.getenv("MODE", default=MODE_PLAN)
|
|
assert MODE in (MODE_PLAN, MODE_MIGRATE)
|
|
|
|
ONCALL_API_TOKEN = os.environ["ONCALL_API_TOKEN"]
|
|
ONCALL_API_URL = urljoin(
|
|
os.environ["ONCALL_API_URL"].removesuffix("/") + "/",
|
|
"api/v1/",
|
|
)
|
|
ONCALL_DELAY_OPTIONS = [1, 5, 15, 30, 60]
|
|
|
|
SCHEDULE_MIGRATION_MODE_ICAL = "ical"
|
|
SCHEDULE_MIGRATION_MODE_WEB = "web"
|
|
SCHEDULE_MIGRATION_MODE = os.getenv(
|
|
"SCHEDULE_MIGRATION_MODE", SCHEDULE_MIGRATION_MODE_ICAL
|
|
)
|