From 8b54db427a4d3b754be5710f2d787218b49649d6 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Sat, 12 Nov 2022 11:02:12 -0800 Subject: [PATCH] k --- README.md | 27 +++++++++++---- ci/generate_samples.sh | 18 ++++++++++ docs/assets/sample_1.svg | 66 ++++++++++++++++++++++++++++++++++++ docs/assets/sample_2.svg | 31 +++++++++++++++++ docs/assets/sample_3.svg | 31 +++++++++++++++++ docs/assets/sample_4.svg | 24 +++++++++++++ docs/assets/sample_5.svg | 39 +++++++++++++++++++++ docs/assets/sample_6.svg | 24 +++++++++++++ docs/d2/sample_1.d2 | 39 +++++++++++++++++++++ docs/d2/sample_2.d2 | 44 ++++++++++++++++++++++++ docs/d2/sample_3.d2 | 31 +++++++++++++++++ docs/d2/sample_4.d2 | 48 ++++++++++++++++++++++++++ docs/d2/sample_5.d2 | 73 ++++++++++++++++++++++++++++++++++++++++ docs/d2/sample_6.d2 | 49 +++++++++++++++++++++++++++ 14 files changed, 537 insertions(+), 7 deletions(-) create mode 100755 ci/generate_samples.sh create mode 100644 docs/assets/sample_1.svg create mode 100644 docs/assets/sample_2.svg create mode 100644 docs/assets/sample_3.svg create mode 100644 docs/assets/sample_4.svg create mode 100644 docs/assets/sample_5.svg create mode 100644 docs/assets/sample_6.svg create mode 100644 docs/d2/sample_1.d2 create mode 100644 docs/d2/sample_2.d2 create mode 100644 docs/d2/sample_3.d2 create mode 100644 docs/d2/sample_4.d2 create mode 100644 docs/d2/sample_5.d2 create mode 100644 docs/d2/sample_6.d2 diff --git a/README.md b/README.md index 27357e1..1275f34 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # TALA -TALA is Terrastruct's proprietary diagram layout engine, made for +TALA is a general-purpose diagram layout engine, made for [D2](https://github.com/terrastruct/d2). TALA is closed-source (for now). This repository is primarily for installation instructions. You can also use this repository to report issues, ask questions, and request features. @@ -11,6 +11,15 @@ To learn more about TALA, please visit To compare TALA with other layout engines, please visit [https://text-to-diagram.com](https://text-to-diagram.com). +## Rendering samples + +You can see the `.d2` text for these in [./docs/d2](./docs/d2). Samples are generated +through the CLI ([./ci/generate_samples.sh](./docs/d2)). + +|||| +|:-------------------------:|:-------------------------:|:-------------------------:| +|||| + ## Installation ### Prerequisites @@ -108,9 +117,13 @@ like to remain anonymous/private, feel free to email us at info@terrastruct.com ### Does TALA use the internet? -We do not collect telemetry or use the internet in any way except to ping to check the -status of a license. This is only done when necessary, e.g. if you purchased a month -subscription, TALA will ping at the end of that month and renew automatically if the -subscription is ongoing. If you purchased a year, it won't ping for a year. The only data -that's sent in these pings is the API token itself. No diagrams or anything else leaves -your computer. +The TALA plugin do not collect telemetry or use the internet in any way except to ping to +check the status of a license. This is only done when necessary, e.g. if you purchased a +month subscription, TALA will ping at the start of the next month and renew automatically +if the subscription is ongoing. If you purchased a year, it won't ping for a year. The + only data that's sent in these pings is the API token itself. No diagrams or anything + else leaves your computer. + +### Others + +Full FAQ at [https://terrastruct.com/tala](https://terrastruct.com/tala). diff --git a/ci/generate_samples.sh b/ci/generate_samples.sh new file mode 100755 index 0000000..c63434f --- /dev/null +++ b/ci/generate_samples.sh @@ -0,0 +1,18 @@ +#!/bin/sh +set -eu +cd -- "$(dirname "$0")/.." + +THEME_INDEX=0 + +# alternate between cool and warm +themes=(0 100 1 102 4 104 5 105 6) + +for f in ./docs/d2/*.d2 +do + echo "Processing $f" + filename=$(basename -- "$f") + filename="${filename%.*}" + D2_LAYOUT=tala d2 --theme=${themes[$THEME_INDEX]} --debug $f ./docs/assets/${filename}.svg + + let THEME_INDEX=${THEME_INDEX}+1 +done diff --git a/docs/assets/sample_1.svg b/docs/assets/sample_1.svg new file mode 100644 index 0000000..fc2c876 --- /dev/null +++ b/docs/assets/sample_1.svg @@ -0,0 +1,66 @@ + +JobRunner- +start +datetime- +end +datetime- +running_server +string- +threads +int- +manager +JobsManager+ +pipeline +Pipeline+ +setPipeline(Pipeline p) +void+ +kickoff(threads int) +boolJobRunner UIBatchkickoffhaltBatchManager- +num +int- +timeout +int- +pid ++ +getStatus() +Enum+ +getJobs() +Job[]+ +setTimeout(seconds int) +voidSystemdSelenium Ensure aliveRun jobKick offQueue jobs \ No newline at end of file diff --git a/docs/assets/sample_2.svg b/docs/assets/sample_2.svg new file mode 100644 index 0000000..95f0440 --- /dev/null +++ b/docs/assets/sample_2.svg @@ -0,0 +1,31 @@ + +logsAT&T CustomerNetworkAPI ServerCell TowerData ProcessorOnline PortalsatellitestransmitterStorageUI phone logsMake callpersistdisplay access \ No newline at end of file diff --git a/docs/assets/sample_3.svg b/docs/assets/sample_3.svg new file mode 100644 index 0000000..e9cf897 --- /dev/null +++ b/docs/assets/sample_3.svg @@ -0,0 +1,31 @@ + +Server side renderFinal buildUser defined templatesValidation testsRendering Engine APINextJSDataRendered HTMLIngestion moduleData fetching moduleSchema version module Integrate user dataGet version \ No newline at end of file diff --git a/docs/assets/sample_4.svg b/docs/assets/sample_4.svg new file mode 100644 index 0000000..92640ff --- /dev/null +++ b/docs/assets/sample_4.svg @@ -0,0 +1,24 @@ + +paymentAWSData backupData warehouseOn-prem backupsOrchestratorApache AirflowQueue 1Queue 2Queue 1Queue 2Queue 3Queue 4 \ No newline at end of file diff --git a/docs/assets/sample_5.svg b/docs/assets/sample_5.svg new file mode 100644 index 0000000..de3cf96 --- /dev/null +++ b/docs/assets/sample_5.svg @@ -0,0 +1,39 @@ + + + + + + + + + +Offsite TenantAuditorsE335 Data RoomWeb based loggerData for prodQuickbooksIRSClientsbackupsAccountantSecurityJanitorWhitelisted ServerMicrosoft Windows FleetNetwork availabilityaccountantsRouting blockerAdd header tokensbuildApp instancesApp DBsAWS SecretsDocker containers Maintain connection \ No newline at end of file diff --git a/docs/assets/sample_6.svg b/docs/assets/sample_6.svg new file mode 100644 index 0000000..40dd839 --- /dev/null +++ b/docs/assets/sample_6.svg @@ -0,0 +1,24 @@ + +IBM "Espresso" CPUAMD "Latte" GPU2 GB DDR3 RAM "MEM2"RTCIBM PowerPC "Broadway" Core 0IBM PowerPC "Broadway" Core 1IBM PowerPC "Broadway" Core 216 KB ROMMemory & I/O BridgeDRAM Controller32 MB EDRAM "MEM1"512 B SEEPROMSATA IFEXI (Efficient XML Interchange)GXAMD Radeon R7xx "GX2"3 MB 1T-SRAM \ No newline at end of file diff --git a/docs/d2/sample_1.d2 b/docs/d2/sample_1.d2 new file mode 100644 index 0000000..290d308 --- /dev/null +++ b/docs/d2/sample_1.d2 @@ -0,0 +1,39 @@ +runner: JobRunner { + shape: class + + -start: datetime + -end: datetime + -running_server: string + -threads: int + -manager: JobsManager + +pipeline: Pipeline + + +setPipeline(Pipeline p): void + +kickoff(threads int): bool +} + +jobsUI: JobRunner UI { + kickoff + halt +} + +batch: Batch { + manager: BatchManager { + shape: class + -num: int + -timeout: int + -pid + + +getStatus(): Enum + +getJobs(): "Job[]" + +setTimeout(seconds int) + } + systemd: Systemd + selenium: Selenium + + systemd -> manager: Ensure alive + manager -> selenium: Run job +} + +jobsUI -> runner: Kick off +runner -> batch.manager: Queue jobs diff --git a/docs/d2/sample_2.d2 b/docs/d2/sample_2.d2 new file mode 100644 index 0000000..c705db9 --- /dev/null +++ b/docs/d2/sample_2.d2 @@ -0,0 +1,44 @@ +logs: { + shape: page + style.multiple: true +} +user: AT&T Customer {shape: person} +network: Network { + tower: Cell Tower { + satellites: { + shape: stored_data + style.multiple: true + } + transmitter + + satellites -> transmitter + satellites -> transmitter + satellites -> transmitter + } + processor: Data Processor { + storage: Storage { + shape: cylinder + style.multiple: true + } + } + portal: Online Portal { + UI + } + + tower.transmitter -> processor: phone logs +} +server: API Server + +user -> network.tower: Make call +network.processor -> server +network.processor -> server +network.processor -> server + +server -> logs +server -> logs +server -> logs: persist + +server -> network.portal.UI: display +user -> network.portal.UI: access { + style.stroke-dash: 3 +} diff --git a/docs/d2/sample_3.d2 b/docs/d2/sample_3.d2 new file mode 100644 index 0000000..285f5e5 --- /dev/null +++ b/docs/d2/sample_3.d2 @@ -0,0 +1,31 @@ +SSR: Server side render { + templates: User defined templates + + tests: Validation tests + + engine: Rendering Engine\n API { + ingestion: Ingestion module { + shape: hexagon + } + fetch: Data fetching module { + shape: hexagon + } + schema: Schema version module { + shape: hexagon + } + } + next: NextJS + db: Data + + templates -> engine.ingestion + engine.fetch <-> db: Integrate user data + engine.schema <-> db: Get version + + engine <-> tests +} + +build: Final build { + html: Rendered HTML +} + +SSR.engine -> SSR.next -> build.html diff --git a/docs/d2/sample_4.d2 b/docs/d2/sample_4.d2 new file mode 100644 index 0000000..bf89d8f --- /dev/null +++ b/docs/d2/sample_4.d2 @@ -0,0 +1,48 @@ +payment + +AWS { + orchestrator: Orchestrator + airflow: Apache Airflow { + queue1: Queue 1 { + shape: queue + } + queue2: Queue 2 { + shape: queue + } + queue3: Queue 3 { + shape: queue + } + queue4: Queue 4 { + shape: queue + } + } + + orchestrator -> airflow.queue1 + orchestrator -> airflow.queue2 + orchestrator -> airflow.queue3 + orchestrator -> airflow.queue4 +} + +payment -> AWS.orchestrator + +backup: Data backup + +AWS.airflow.queue3 -> backup +AWS.airflow.queue4 -> backup + +data: Data warehouse + +AWS.airflow.queue1 -> data +AWS.airflow.queue2 -> data + +local: On-prem backups { + queue1: Queue 1 { + shape: queue + } + queue2: Queue 2 { + shape: queue + } +} + +backup -> local.queue1 +backup -> local.queue2 diff --git a/docs/d2/sample_5.d2 b/docs/d2/sample_5.d2 new file mode 100644 index 0000000..ae0bdad --- /dev/null +++ b/docs/d2/sample_5.d2 @@ -0,0 +1,73 @@ +tenant: Offsite Tenant { + style.shadow: true + + accountant: Accountant + security: Security + janitor: Janitor +} + +tenant.accountant -> Quickbooks + +auditors: Auditors + +auditors -> Quickbooks +auditors -> IRS +Quickbooks -> Clients + +dataroom: E335 Data Room { + style.shadow: true + style.fill: "#e9edef" + style.stroke-width: 2 + + whitelist: Whitelisted Server { + shape: rectangle + style.stroke-dash: 10 + style.stroke: "#000E3D" + + routing: Routing blocker + headers: Add header tokens + } + + platform: Microsoft Windows Fleet { + style.stroke-dash: 4 + style.stroke: "#000E3D" + build + } + whitelist <-> platform: Maintain connection {style.stroke-width: 4} +} + +auditors -> dataroom.platform.build +auditors -> dataroom.whitelist.routing +tenant.accountants -> dataroom + +logging: Web based logger + +production: Data for prod { + style.shadow: true + + network: Network availability { + style.stroke-dash: 10 + style.stroke: "#000E3D" + + instances: App instances { + style.multiple: true + } + + db: App DBs { + shape: cylinder + } + + secrets: AWS Secrets + + containers: Docker containers + + instances -> db + instances -> secrets + containers -> db + containers -> secrets + } +} + +dataroom.whitelist.routing -> production.network.instances +dataroom.whitelist.headers -> production.network.instances +production.network.instances -> backups diff --git a/docs/d2/sample_6.d2 b/docs/d2/sample_6.d2 new file mode 100644 index 0000000..d31bc12 --- /dev/null +++ b/docs/d2/sample_6.d2 @@ -0,0 +1,49 @@ +ibm: IBM "Espresso" CPU { + core0: IBM PowerPC "Broadway" Core 0 + core1: IBM PowerPC "Broadway" Core 1 + core2: IBM PowerPC "Broadway" Core 2 + + rom: 16 KB ROM + + core0 -- core2 + + rom -> core2 +} + +amd: AMD "Latte" GPU { + mem: Memory & I/O Bridge + dram: DRAM Controller + edram: 32 MB EDRAM "MEM1" + rom: 512 B SEEPROM + + sata: SATA IF + exi: EXI (Efficient XML Interchange) + + gx: GX { + 3 MB 1T-SRAM + } + + radeon: AMD Radeon R7xx "GX2" + + mem -- gx + mem -- radeon + + + rom -- mem + + mem -- sata + mem -- exi + + dram -- sata + dram -- exi +} + +ddr3: 2 GB DDR3 RAM "MEM2" + +amd.mem -- ddr3 +amd.dram -- ddr3 +amd.edram -- ddr3 + +ibm.core1 -- amd.mem + +amd.exi -- RTC