@cicore/cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/bin/ci.js +13 -0
  2. package/dist/commands/addon/api-actions.d.ts +45 -0
  3. package/dist/commands/addon/api-actions.d.ts.map +1 -0
  4. package/dist/commands/addon/api-actions.js +281 -0
  5. package/dist/commands/addon/api-actions.js.map +1 -0
  6. package/dist/commands/addon/build.d.ts +11 -0
  7. package/dist/commands/addon/build.d.ts.map +1 -0
  8. package/dist/commands/addon/build.js +182 -0
  9. package/dist/commands/addon/build.js.map +1 -0
  10. package/dist/commands/addon/create.d.ts +11 -0
  11. package/dist/commands/addon/create.d.ts.map +1 -0
  12. package/dist/commands/addon/create.js +1186 -0
  13. package/dist/commands/addon/create.js.map +1 -0
  14. package/dist/commands/addon/delete.d.ts +13 -0
  15. package/dist/commands/addon/delete.d.ts.map +1 -0
  16. package/dist/commands/addon/delete.js +83 -0
  17. package/dist/commands/addon/delete.js.map +1 -0
  18. package/dist/commands/addon/deploy.d.ts +27 -0
  19. package/dist/commands/addon/deploy.d.ts.map +1 -0
  20. package/dist/commands/addon/deploy.js +459 -0
  21. package/dist/commands/addon/deploy.js.map +1 -0
  22. package/dist/commands/addon/dev-deploy.d.ts +31 -0
  23. package/dist/commands/addon/dev-deploy.d.ts.map +1 -0
  24. package/dist/commands/addon/dev-deploy.js +128 -0
  25. package/dist/commands/addon/dev-deploy.js.map +1 -0
  26. package/dist/commands/addon/dev.d.ts +36 -0
  27. package/dist/commands/addon/dev.d.ts.map +1 -0
  28. package/dist/commands/addon/dev.js +323 -0
  29. package/dist/commands/addon/dev.js.map +1 -0
  30. package/dist/commands/addon/extract-classes.d.ts +23 -0
  31. package/dist/commands/addon/extract-classes.d.ts.map +1 -0
  32. package/dist/commands/addon/extract-classes.js +281 -0
  33. package/dist/commands/addon/extract-classes.js.map +1 -0
  34. package/dist/commands/addon/generate-safelist.d.ts +24 -0
  35. package/dist/commands/addon/generate-safelist.d.ts.map +1 -0
  36. package/dist/commands/addon/generate-safelist.js +276 -0
  37. package/dist/commands/addon/generate-safelist.js.map +1 -0
  38. package/dist/commands/addon/index.d.ts +19 -0
  39. package/dist/commands/addon/index.d.ts.map +1 -0
  40. package/dist/commands/addon/index.js +296 -0
  41. package/dist/commands/addon/index.js.map +1 -0
  42. package/dist/commands/addon/init-repo.d.ts +25 -0
  43. package/dist/commands/addon/init-repo.d.ts.map +1 -0
  44. package/dist/commands/addon/init-repo.js +171 -0
  45. package/dist/commands/addon/init-repo.js.map +1 -0
  46. package/dist/commands/addon/install.d.ts +23 -0
  47. package/dist/commands/addon/install.d.ts.map +1 -0
  48. package/dist/commands/addon/install.js +84 -0
  49. package/dist/commands/addon/install.js.map +1 -0
  50. package/dist/commands/addon/list.d.ts +10 -0
  51. package/dist/commands/addon/list.d.ts.map +1 -0
  52. package/dist/commands/addon/list.js +102 -0
  53. package/dist/commands/addon/list.js.map +1 -0
  54. package/dist/commands/addon/manifest-refresh.d.ts +17 -0
  55. package/dist/commands/addon/manifest-refresh.d.ts.map +1 -0
  56. package/dist/commands/addon/manifest-refresh.js +48 -0
  57. package/dist/commands/addon/manifest-refresh.js.map +1 -0
  58. package/dist/commands/addon/migrate.d.ts +40 -0
  59. package/dist/commands/addon/migrate.d.ts.map +1 -0
  60. package/dist/commands/addon/migrate.js +236 -0
  61. package/dist/commands/addon/migrate.js.map +1 -0
  62. package/dist/commands/addon/publish.d.ts +33 -0
  63. package/dist/commands/addon/publish.d.ts.map +1 -0
  64. package/dist/commands/addon/publish.js +236 -0
  65. package/dist/commands/addon/publish.js.map +1 -0
  66. package/dist/commands/addon/scaffold-quality.d.ts +21 -0
  67. package/dist/commands/addon/scaffold-quality.d.ts.map +1 -0
  68. package/dist/commands/addon/scaffold-quality.js +90 -0
  69. package/dist/commands/addon/scaffold-quality.js.map +1 -0
  70. package/dist/commands/addon/sign.d.ts +9 -0
  71. package/dist/commands/addon/sign.d.ts.map +1 -0
  72. package/dist/commands/addon/sign.js +83 -0
  73. package/dist/commands/addon/sign.js.map +1 -0
  74. package/dist/commands/addon/toggle.d.ts +6 -0
  75. package/dist/commands/addon/toggle.d.ts.map +1 -0
  76. package/dist/commands/addon/toggle.js +46 -0
  77. package/dist/commands/addon/toggle.js.map +1 -0
  78. package/dist/commands/agent/index.d.ts +34 -0
  79. package/dist/commands/agent/index.d.ts.map +1 -0
  80. package/dist/commands/agent/index.js +564 -0
  81. package/dist/commands/agent/index.js.map +1 -0
  82. package/dist/commands/brand/index.d.ts +54 -0
  83. package/dist/commands/brand/index.d.ts.map +1 -0
  84. package/dist/commands/brand/index.js +367 -0
  85. package/dist/commands/brand/index.js.map +1 -0
  86. package/dist/commands/build/index.d.ts +53 -0
  87. package/dist/commands/build/index.d.ts.map +1 -0
  88. package/dist/commands/build/index.js +726 -0
  89. package/dist/commands/build/index.js.map +1 -0
  90. package/dist/commands/cache/flush-local.d.ts +31 -0
  91. package/dist/commands/cache/flush-local.d.ts.map +1 -0
  92. package/dist/commands/cache/flush-local.js +161 -0
  93. package/dist/commands/cache/flush-local.js.map +1 -0
  94. package/dist/commands/cache/index.d.ts +14 -0
  95. package/dist/commands/cache/index.d.ts.map +1 -0
  96. package/dist/commands/cache/index.js +453 -0
  97. package/dist/commands/cache/index.js.map +1 -0
  98. package/dist/commands/check/index.d.ts +8 -0
  99. package/dist/commands/check/index.d.ts.map +1 -0
  100. package/dist/commands/check/index.js +1316 -0
  101. package/dist/commands/check/index.js.map +1 -0
  102. package/dist/commands/cloudflare/index.d.ts +8 -0
  103. package/dist/commands/cloudflare/index.d.ts.map +1 -0
  104. package/dist/commands/cloudflare/index.js +453 -0
  105. package/dist/commands/cloudflare/index.js.map +1 -0
  106. package/dist/commands/core/create.d.ts +12 -0
  107. package/dist/commands/core/create.d.ts.map +1 -0
  108. package/dist/commands/core/create.js +206 -0
  109. package/dist/commands/core/create.js.map +1 -0
  110. package/dist/commands/core/delete.d.ts +11 -0
  111. package/dist/commands/core/delete.d.ts.map +1 -0
  112. package/dist/commands/core/delete.js +64 -0
  113. package/dist/commands/core/delete.js.map +1 -0
  114. package/dist/commands/core/env.d.ts +12 -0
  115. package/dist/commands/core/env.d.ts.map +1 -0
  116. package/dist/commands/core/env.js +95 -0
  117. package/dist/commands/core/env.js.map +1 -0
  118. package/dist/commands/core/health.d.ts +6 -0
  119. package/dist/commands/core/health.d.ts.map +1 -0
  120. package/dist/commands/core/health.js +215 -0
  121. package/dist/commands/core/health.js.map +1 -0
  122. package/dist/commands/core/index.d.ts +15 -0
  123. package/dist/commands/core/index.d.ts.map +1 -0
  124. package/dist/commands/core/index.js +86 -0
  125. package/dist/commands/core/index.js.map +1 -0
  126. package/dist/commands/core/list.d.ts +11 -0
  127. package/dist/commands/core/list.d.ts.map +1 -0
  128. package/dist/commands/core/list.js +58 -0
  129. package/dist/commands/core/list.js.map +1 -0
  130. package/dist/commands/core/rebuild.d.ts +13 -0
  131. package/dist/commands/core/rebuild.d.ts.map +1 -0
  132. package/dist/commands/core/rebuild.js +119 -0
  133. package/dist/commands/core/rebuild.js.map +1 -0
  134. package/dist/commands/db/index.d.ts +23 -0
  135. package/dist/commands/db/index.d.ts.map +1 -0
  136. package/dist/commands/db/index.js +355 -0
  137. package/dist/commands/db/index.js.map +1 -0
  138. package/dist/commands/db/promote-silo.d.ts +320 -0
  139. package/dist/commands/db/promote-silo.d.ts.map +1 -0
  140. package/dist/commands/db/promote-silo.js +930 -0
  141. package/dist/commands/db/promote-silo.js.map +1 -0
  142. package/dist/commands/db/relocate.d.ts +41 -0
  143. package/dist/commands/db/relocate.d.ts.map +1 -0
  144. package/dist/commands/db/relocate.js +482 -0
  145. package/dist/commands/db/relocate.js.map +1 -0
  146. package/dist/commands/db/rollback-silo.d.ts +44 -0
  147. package/dist/commands/db/rollback-silo.d.ts.map +1 -0
  148. package/dist/commands/db/rollback-silo.js +402 -0
  149. package/dist/commands/db/rollback-silo.js.map +1 -0
  150. package/dist/commands/deploy/index.d.ts +26 -0
  151. package/dist/commands/deploy/index.d.ts.map +1 -0
  152. package/dist/commands/deploy/index.js +107 -0
  153. package/dist/commands/deploy/index.js.map +1 -0
  154. package/dist/commands/devops/index.d.ts +6 -0
  155. package/dist/commands/devops/index.d.ts.map +1 -0
  156. package/dist/commands/devops/index.js +220 -0
  157. package/dist/commands/devops/index.js.map +1 -0
  158. package/dist/commands/domain/index.d.ts +8 -0
  159. package/dist/commands/domain/index.d.ts.map +1 -0
  160. package/dist/commands/domain/index.js +386 -0
  161. package/dist/commands/domain/index.js.map +1 -0
  162. package/dist/commands/image/index.d.ts +8 -0
  163. package/dist/commands/image/index.d.ts.map +1 -0
  164. package/dist/commands/image/index.js +308 -0
  165. package/dist/commands/image/index.js.map +1 -0
  166. package/dist/commands/install/factory-reset.d.ts +21 -0
  167. package/dist/commands/install/factory-reset.d.ts.map +1 -0
  168. package/dist/commands/install/factory-reset.js +83 -0
  169. package/dist/commands/install/factory-reset.js.map +1 -0
  170. package/dist/commands/install/index.d.ts +17 -0
  171. package/dist/commands/install/index.d.ts.map +1 -0
  172. package/dist/commands/install/index.js +44 -0
  173. package/dist/commands/install/index.js.map +1 -0
  174. package/dist/commands/install/install.d.ts +35 -0
  175. package/dist/commands/install/install.d.ts.map +1 -0
  176. package/dist/commands/install/install.js +171 -0
  177. package/dist/commands/install/install.js.map +1 -0
  178. package/dist/commands/login/index.d.ts +15 -0
  179. package/dist/commands/login/index.d.ts.map +1 -0
  180. package/dist/commands/login/index.js +58 -0
  181. package/dist/commands/login/index.js.map +1 -0
  182. package/dist/commands/nginx/index.d.ts +11 -0
  183. package/dist/commands/nginx/index.d.ts.map +1 -0
  184. package/dist/commands/nginx/index.js +580 -0
  185. package/dist/commands/nginx/index.js.map +1 -0
  186. package/dist/commands/server/bootstrap.d.ts +25 -0
  187. package/dist/commands/server/bootstrap.d.ts.map +1 -0
  188. package/dist/commands/server/bootstrap.js +260 -0
  189. package/dist/commands/server/bootstrap.js.map +1 -0
  190. package/dist/commands/server/index.d.ts +8 -0
  191. package/dist/commands/server/index.d.ts.map +1 -0
  192. package/dist/commands/server/index.js +2524 -0
  193. package/dist/commands/server/index.js.map +1 -0
  194. package/dist/commands/setup/index.d.ts +34 -0
  195. package/dist/commands/setup/index.d.ts.map +1 -0
  196. package/dist/commands/setup/index.js +423 -0
  197. package/dist/commands/setup/index.js.map +1 -0
  198. package/dist/commands/ssl/index.d.ts +8 -0
  199. package/dist/commands/ssl/index.d.ts.map +1 -0
  200. package/dist/commands/ssl/index.js +275 -0
  201. package/dist/commands/ssl/index.js.map +1 -0
  202. package/dist/commands/superadmin/index.d.ts +16 -0
  203. package/dist/commands/superadmin/index.d.ts.map +1 -0
  204. package/dist/commands/superadmin/index.js +81 -0
  205. package/dist/commands/superadmin/index.js.map +1 -0
  206. package/dist/commands/tenant/index.d.ts +6 -0
  207. package/dist/commands/tenant/index.d.ts.map +1 -0
  208. package/dist/commands/tenant/index.js +192 -0
  209. package/dist/commands/tenant/index.js.map +1 -0
  210. package/dist/index.d.ts +11 -0
  211. package/dist/index.d.ts.map +1 -0
  212. package/dist/index.js +107 -0
  213. package/dist/index.js.map +1 -0
  214. package/dist/lib/addon-sign.d.ts +23 -0
  215. package/dist/lib/addon-sign.d.ts.map +1 -0
  216. package/dist/lib/addon-sign.js +39 -0
  217. package/dist/lib/addon-sign.js.map +1 -0
  218. package/dist/lib/addon-sign.test.d.ts +2 -0
  219. package/dist/lib/addon-sign.test.d.ts.map +1 -0
  220. package/dist/lib/addon-sign.test.js +27 -0
  221. package/dist/lib/addon-sign.test.js.map +1 -0
  222. package/dist/lib/cdn.d.ts +25 -0
  223. package/dist/lib/cdn.d.ts.map +1 -0
  224. package/dist/lib/cdn.js +131 -0
  225. package/dist/lib/cdn.js.map +1 -0
  226. package/dist/lib/cloudflare.d.ts +133 -0
  227. package/dist/lib/cloudflare.d.ts.map +1 -0
  228. package/dist/lib/cloudflare.js +435 -0
  229. package/dist/lib/cloudflare.js.map +1 -0
  230. package/dist/lib/config.d.ts +96 -0
  231. package/dist/lib/config.d.ts.map +1 -0
  232. package/dist/lib/config.js +132 -0
  233. package/dist/lib/config.js.map +1 -0
  234. package/dist/lib/env.d.ts +8 -0
  235. package/dist/lib/env.d.ts.map +1 -0
  236. package/dist/lib/env.js +64 -0
  237. package/dist/lib/env.js.map +1 -0
  238. package/dist/lib/hosts.d.ts +194 -0
  239. package/dist/lib/hosts.d.ts.map +1 -0
  240. package/dist/lib/hosts.js +183 -0
  241. package/dist/lib/hosts.js.map +1 -0
  242. package/dist/lib/logger.d.ts +68 -0
  243. package/dist/lib/logger.d.ts.map +1 -0
  244. package/dist/lib/logger.js +130 -0
  245. package/dist/lib/logger.js.map +1 -0
  246. package/dist/lib/nginx-config.d.ts +78 -0
  247. package/dist/lib/nginx-config.d.ts.map +1 -0
  248. package/dist/lib/nginx-config.js +736 -0
  249. package/dist/lib/nginx-config.js.map +1 -0
  250. package/dist/lib/ops/addon-dev.d.ts +93 -0
  251. package/dist/lib/ops/addon-dev.d.ts.map +1 -0
  252. package/dist/lib/ops/addon-dev.js +237 -0
  253. package/dist/lib/ops/addon-dev.js.map +1 -0
  254. package/dist/lib/ops/addon-quality.d.ts +38 -0
  255. package/dist/lib/ops/addon-quality.d.ts.map +1 -0
  256. package/dist/lib/ops/addon-quality.js +338 -0
  257. package/dist/lib/ops/addon-quality.js.map +1 -0
  258. package/dist/lib/ops/addon-routes.d.ts +49 -0
  259. package/dist/lib/ops/addon-routes.d.ts.map +1 -0
  260. package/dist/lib/ops/addon-routes.js +189 -0
  261. package/dist/lib/ops/addon-routes.js.map +1 -0
  262. package/dist/lib/ops/addon.d.ts +120 -0
  263. package/dist/lib/ops/addon.d.ts.map +1 -0
  264. package/dist/lib/ops/addon.js +260 -0
  265. package/dist/lib/ops/addon.js.map +1 -0
  266. package/dist/lib/ops/cdn.d.ts +87 -0
  267. package/dist/lib/ops/cdn.d.ts.map +1 -0
  268. package/dist/lib/ops/cdn.js +170 -0
  269. package/dist/lib/ops/cdn.js.map +1 -0
  270. package/dist/lib/ops/cf.d.ts +36 -0
  271. package/dist/lib/ops/cf.d.ts.map +1 -0
  272. package/dist/lib/ops/cf.js +114 -0
  273. package/dist/lib/ops/cf.js.map +1 -0
  274. package/dist/lib/ops/compose.d.ts +95 -0
  275. package/dist/lib/ops/compose.d.ts.map +1 -0
  276. package/dist/lib/ops/compose.js +165 -0
  277. package/dist/lib/ops/compose.js.map +1 -0
  278. package/dist/lib/ops/core.d.ts +117 -0
  279. package/dist/lib/ops/core.d.ts.map +1 -0
  280. package/dist/lib/ops/core.js +322 -0
  281. package/dist/lib/ops/core.js.map +1 -0
  282. package/dist/lib/ops/db.d.ts +116 -0
  283. package/dist/lib/ops/db.d.ts.map +1 -0
  284. package/dist/lib/ops/db.js +351 -0
  285. package/dist/lib/ops/db.js.map +1 -0
  286. package/dist/lib/ops/dns.d.ts +111 -0
  287. package/dist/lib/ops/dns.d.ts.map +1 -0
  288. package/dist/lib/ops/dns.js +306 -0
  289. package/dist/lib/ops/dns.js.map +1 -0
  290. package/dist/lib/ops/image.d.ts +94 -0
  291. package/dist/lib/ops/image.d.ts.map +1 -0
  292. package/dist/lib/ops/image.js +159 -0
  293. package/dist/lib/ops/image.js.map +1 -0
  294. package/dist/lib/ops/nginx.d.ts +114 -0
  295. package/dist/lib/ops/nginx.d.ts.map +1 -0
  296. package/dist/lib/ops/nginx.js +388 -0
  297. package/dist/lib/ops/nginx.js.map +1 -0
  298. package/dist/lib/ops/redis.d.ts +7 -0
  299. package/dist/lib/ops/redis.d.ts.map +1 -0
  300. package/dist/lib/ops/redis.js +35 -0
  301. package/dist/lib/ops/redis.js.map +1 -0
  302. package/dist/lib/ops/ssh.d.ts +127 -0
  303. package/dist/lib/ops/ssh.d.ts.map +1 -0
  304. package/dist/lib/ops/ssh.js +269 -0
  305. package/dist/lib/ops/ssh.js.map +1 -0
  306. package/dist/lib/prompts.d.ts +46 -0
  307. package/dist/lib/prompts.d.ts.map +1 -0
  308. package/dist/lib/prompts.js +113 -0
  309. package/dist/lib/prompts.js.map +1 -0
  310. package/dist/lib/sast.d.ts +43 -0
  311. package/dist/lib/sast.d.ts.map +1 -0
  312. package/dist/lib/sast.js +79 -0
  313. package/dist/lib/sast.js.map +1 -0
  314. package/dist/lib/sast.test.d.ts +2 -0
  315. package/dist/lib/sast.test.d.ts.map +1 -0
  316. package/dist/lib/sast.test.js +33 -0
  317. package/dist/lib/sast.test.js.map +1 -0
  318. package/dist/lib/shell.d.ts +61 -0
  319. package/dist/lib/shell.d.ts.map +1 -0
  320. package/dist/lib/shell.js +183 -0
  321. package/dist/lib/shell.js.map +1 -0
  322. package/dist/lib/ssh-config.d.ts +37 -0
  323. package/dist/lib/ssh-config.d.ts.map +1 -0
  324. package/dist/lib/ssh-config.js +122 -0
  325. package/dist/lib/ssh-config.js.map +1 -0
  326. package/dist/lib/tenant-scope.d.ts +38 -0
  327. package/dist/lib/tenant-scope.d.ts.map +1 -0
  328. package/dist/lib/tenant-scope.js +129 -0
  329. package/dist/lib/tenant-scope.js.map +1 -0
  330. package/dist/lib/tenant-scope.test.d.ts +2 -0
  331. package/dist/lib/tenant-scope.test.d.ts.map +1 -0
  332. package/dist/lib/tenant-scope.test.js +223 -0
  333. package/dist/lib/tenant-scope.test.js.map +1 -0
  334. package/package.json +58 -0
  335. package/templates/bootstrap/.env.template +54 -0
  336. package/templates/bootstrap/docker-compose.yml +145 -0
  337. package/templates/vhost.conf.tmpl +446 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promote-silo.js","sourceRoot":"","sources":["../../../src/commands/db/promote-silo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * CiCore CLI — `ci db relocate` (M2 db_relocate).
3
+ *
4
+ * 9-step orchestrator: brand'in dedicated DB'sini KAYNAK cluster/host'tan
5
+ * HEDEF cluster/host'a taşı. brand_id/RLS GEREKMEZ (tüm DB = tek brand,
6
+ * DB-per-brand felsefe). pg_dump + pg_restore (K-REL-1 v1).
7
+ *
8
+ * LOCKED spec: docs/planning/2026-06-01-m2-db-relocation.md.
9
+ *
10
+ * Mustafa kilitleri (K-REL-1..K-REL-11):
11
+ * K-REL-1 — pg_dump + pg_restore v1 (streaming M2.2)
12
+ * K-REL-2 — Planlı pencere + write-freeze (status='relocating' →
13
+ * BrandWriteGuardMiddleware 503 + Retry-After)
14
+ * K-REL-3 — Kaynak DB retain (14g); ayrı cleanup job
15
+ * K-REL-4 — Atomic registry flip (retired-row: kaynak status='retired' +
16
+ * hedef yeni 'active' satır; F2 review kararı; migration 007
17
+ * partial-unique-on-live ile UNIQUE çakışması çözüldü)
18
+ * K-REL-5 — Direct ssh transport v1
19
+ * K-REL-6 — v1 intra-cluster (mkt; aynı postgres instance içinde
20
+ * pg_dump|pg_restore — SSH zincirine gerek yok); multi-cluster
21
+ * M2.2'de pipe two-host
22
+ * K-REL-7 — Faz 6 helper reuse (promote-silo.ts'ten)
23
+ * K-REL-8 — Migration 006 'relocating' allow-list
24
+ * K-REL-9 — Sentinel: relocate-canary brand
25
+ *
26
+ * INVARIANT:
27
+ * INV-1 (reuse) — Step 6 verify (count + checksum) yeşil olmadan flip yok
28
+ * INV-2 (reuse) — Kaynak DB SİLİNMEZ (retain 14g, ayrı cleanup)
29
+ * INV-3 (reuse) — Write-freeze status='relocating'; middleware allow-list
30
+ *
31
+ * brand_id'ye özel parçalar (Faz 6'dan) GEREKMEZ:
32
+ * - Discovery FK closure + transitif refs (tüm DB taşınır)
33
+ * - COPY predicate (filtresiz tam-DB)
34
+ * - K3 anti-sızıntı (DB tek-brand zaten)
35
+ * - INV-4 referential integrity (schema dump bütünlüğü garanti)
36
+ * - INV-5 anti-leak ters yön (tek-brand DB)
37
+ * - K-R3 UUID PK (relocation PK taşımaz, ne ise o gider)
38
+ */
39
+ import { Command } from 'commander';
40
+ export declare function registerRelocate(db: Command): void;
41
+ //# sourceMappingURL=relocate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relocate.d.ts","sourceRoot":"","sources":["../../../src/commands/db/relocate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAgCnC,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CA4ClD"}
@@ -0,0 +1,482 @@
1
+ /**
2
+ * CiCore CLI — `ci db relocate` (M2 db_relocate).
3
+ *
4
+ * 9-step orchestrator: brand'in dedicated DB'sini KAYNAK cluster/host'tan
5
+ * HEDEF cluster/host'a taşı. brand_id/RLS GEREKMEZ (tüm DB = tek brand,
6
+ * DB-per-brand felsefe). pg_dump + pg_restore (K-REL-1 v1).
7
+ *
8
+ * LOCKED spec: docs/planning/2026-06-01-m2-db-relocation.md.
9
+ *
10
+ * Mustafa kilitleri (K-REL-1..K-REL-11):
11
+ * K-REL-1 — pg_dump + pg_restore v1 (streaming M2.2)
12
+ * K-REL-2 — Planlı pencere + write-freeze (status='relocating' →
13
+ * BrandWriteGuardMiddleware 503 + Retry-After)
14
+ * K-REL-3 — Kaynak DB retain (14g); ayrı cleanup job
15
+ * K-REL-4 — Atomic registry flip (retired-row: kaynak status='retired' +
16
+ * hedef yeni 'active' satır; F2 review kararı; migration 007
17
+ * partial-unique-on-live ile UNIQUE çakışması çözüldü)
18
+ * K-REL-5 — Direct ssh transport v1
19
+ * K-REL-6 — v1 intra-cluster (mkt; aynı postgres instance içinde
20
+ * pg_dump|pg_restore — SSH zincirine gerek yok); multi-cluster
21
+ * M2.2'de pipe two-host
22
+ * K-REL-7 — Faz 6 helper reuse (promote-silo.ts'ten)
23
+ * K-REL-8 — Migration 006 'relocating' allow-list
24
+ * K-REL-9 — Sentinel: relocate-canary brand
25
+ *
26
+ * INVARIANT:
27
+ * INV-1 (reuse) — Step 6 verify (count + checksum) yeşil olmadan flip yok
28
+ * INV-2 (reuse) — Kaynak DB SİLİNMEZ (retain 14g, ayrı cleanup)
29
+ * INV-3 (reuse) — Write-freeze status='relocating'; middleware allow-list
30
+ *
31
+ * brand_id'ye özel parçalar (Faz 6'dan) GEREKMEZ:
32
+ * - Discovery FK closure + transitif refs (tüm DB taşınır)
33
+ * - COPY predicate (filtresiz tam-DB)
34
+ * - K3 anti-sızıntı (DB tek-brand zaten)
35
+ * - INV-4 referential integrity (schema dump bütünlüğü garanti)
36
+ * - INV-5 anti-leak ters yön (tek-brand DB)
37
+ * - K-R3 UUID PK (relocation PK taşımaz, ne ise o gider)
38
+ */
39
+ import { log } from '../../lib/logger.js';
40
+ import { dbSelectJson, dbExec } from '../../lib/ops/db.js';
41
+ import { runRemoteScript } from '../../lib/ops/ssh.js';
42
+ import { invalidateBrandStatus } from '../../lib/ops/redis.js';
43
+ import { isDryRun } from '../../lib/config.js';
44
+ import { blankSteps, resolveHost, step, persistSteps, currentStepIndex, countWhere, tableChecksum, fetchPrimaryKeyColumns, quoteIdent, quoteQualified, sqlLit, } from './promote-silo.js';
45
+ const CONTROL_DB = 'vucore_control';
46
+ const SLUG_RE = /^[a-z][a-z0-9_-]{1,62}$/;
47
+ const IDENT_RE = /^[a-zA-Z0-9_.-]+$/;
48
+ const STEP_COUNT = 9;
49
+ // ─────────────────────────────────────────────────────────────────────────
50
+ // Public API
51
+ // ─────────────────────────────────────────────────────────────────────────
52
+ export function registerRelocate(db) {
53
+ db.command('relocate')
54
+ .description('Relocate a brand DB from one host/cluster to another (9-step orchestrator; idempotent + resumable; K-REL v1 intra-cluster)')
55
+ .requiredOption('--brand <slug>', 'Brand slug to relocate')
56
+ .requiredOption('--target-host <host>', 'Target Postgres host (FQDN/IP)')
57
+ .option('--target-port <port>', 'Target Postgres port', '5432')
58
+ .option('--target-cluster <name>', 'Target cluster_name registry value')
59
+ .option('--target-region <region>', 'Target placement_region (cp_databases)')
60
+ .option('-h, --host <host>', 'Host alias (cicore | mkt)')
61
+ .option('--job-id <uuid>', 'Existing cp_provisioning_jobs id (resume); else a new ad-hoc run')
62
+ .option('--confirm-relocation', 'Skip the inventory pause on Step 2 (CI/agent mode)', false)
63
+ .option('--dry-run', 'Plan only — Step 1+2 (validate + inventory), no DDL/DML', false)
64
+ .action(async (opts) => {
65
+ const cfg = resolveHost(opts.host);
66
+ if (!SLUG_RE.test(opts.brand)) {
67
+ log.error(`Invalid --brand slug '${opts.brand}'.`);
68
+ process.exit(1);
69
+ }
70
+ if (!IDENT_RE.test(opts.targetHost)) {
71
+ log.error(`Invalid --target-host '${opts.targetHost}'.`);
72
+ process.exit(1);
73
+ }
74
+ const targetPort = Number.parseInt(opts.targetPort ?? '5432', 10);
75
+ if (!Number.isInteger(targetPort) || targetPort < 1 || targetPort > 65535) {
76
+ log.error(`Invalid --target-port '${opts.targetPort}'.`);
77
+ process.exit(1);
78
+ }
79
+ const ctx = {
80
+ cfg,
81
+ brand: opts.brand,
82
+ jobId: opts.jobId ?? null,
83
+ confirmManifest: opts.confirmRelocation === true,
84
+ // Collision-robust (Part B): Commander v12 root + subcommand --dry-run
85
+ // çakışmasında flag hangi seviyeye atanırsa atansın yakala. isDryRun()
86
+ // global flag'i, opts.dryRun local flag'i temsil eder.
87
+ dryRun: opts.dryRun === true || isDryRun(),
88
+ steps: blankSteps(STEP_COUNT),
89
+ };
90
+ const target = {
91
+ host: opts.targetHost,
92
+ port: targetPort,
93
+ cluster: opts.targetCluster ?? null,
94
+ region: opts.targetRegion ?? null,
95
+ };
96
+ const ok = await runRelocation(ctx, target);
97
+ process.exit(ok ? 0 : 1);
98
+ });
99
+ }
100
+ // ─────────────────────────────────────────────────────────────────────────
101
+ // 9-step orchestrator
102
+ // ─────────────────────────────────────────────────────────────────────────
103
+ async function runRelocation(ctx, target) {
104
+ log.info(`[relocate] brand=${ctx.brand} host=${ctx.cfg.alias} target=${target.host}:${target.port} dry-run=${ctx.dryRun}`);
105
+ try {
106
+ // STEP 1 — VALIDATE
107
+ const brand = await step(ctx, 0, 'validate', () => doValidate(ctx));
108
+ const source = await fetchSourceDb(ctx, brand);
109
+ // STEP 2 — INVENTORY (rapor + --confirm-relocation gate)
110
+ const inventory = await step(ctx, 1, 'inventory', () => doInventory(ctx, brand, source, target));
111
+ if (ctx.dryRun) {
112
+ log.success('[relocate] dry-run complete: validate + inventory');
113
+ log.info(` source: ${source.db_host}:${source.db_port}/${source.db_name}`);
114
+ log.info(` target: ${target.host}:${target.port}/${source.db_name}`);
115
+ log.info(` tables: ${inventory.tables} · db_size_pretty=${inventory.dbSize}`);
116
+ return true;
117
+ }
118
+ // STEP 3 — MARK RELOCATING (write-freeze devreye girer)
119
+ await step(ctx, 2, 'mark_relocating', () => doMarkRelocating(ctx, brand));
120
+ // STEP 4 — PROVISION TARGET DB (CREATE DATABASE + role + grant)
121
+ await step(ctx, 3, 'provision_target', () => doProvisionTarget(ctx, source, target));
122
+ // STEP 5 — SNAPSHOT/COPY (pg_dump | pg_restore)
123
+ await step(ctx, 4, 'snapshot_copy', () => doSnapshotCopy(ctx, source, target));
124
+ // STEP 6 — VERIFY (INV-1 cutover gate; count + checksum tüm tablolar)
125
+ await step(ctx, 5, 'verify', () => doVerifyRelocation(ctx, source, target));
126
+ // STEP 7 — REGISTRY FLIP (atomic UPDATE cp_databases)
127
+ await step(ctx, 6, 'registry_flip', () => doRegistryFlip(ctx, brand, source, target));
128
+ // STEP 8 — CACHE INVALIDATE + FREEZE KALK
129
+ await step(ctx, 7, 'cache_invalidate', () => doCacheInvalidateFreezeKalk(ctx, brand, source));
130
+ // STEP 9 — AUDIT END
131
+ await step(ctx, 8, 'audit_end', () => doAuditEnd(ctx, brand, source, target));
132
+ log.success(`[relocate] ✅ success — brand '${ctx.brand}' relocated to ${target.host}:${target.port} (source retained 14g; INV-2)`);
133
+ return true;
134
+ }
135
+ catch (err) {
136
+ const msg = err instanceof Error ? err.message : String(err);
137
+ log.error(`[relocate] ❌ failed at step ${currentStepIndex(ctx) + 1}: ${msg}`);
138
+ await persistSteps(ctx, 'failed', msg);
139
+ return false;
140
+ }
141
+ }
142
+ // ─────────────────────────────────────────────────────────────────────────
143
+ // Step bodies
144
+ // ─────────────────────────────────────────────────────────────────────────
145
+ /** Step 1 — VALIDATE: brand var + sentinel değil + cp_databases'ta active source. */
146
+ async function doValidate(ctx) {
147
+ const rows = await dbSelectJson(ctx.cfg, CONTROL_DB, `SELECT id::text, slug, db_tier, is_default::text, status, placement_region
148
+ FROM cp_brands WHERE slug='${sqlLit(ctx.brand)}' LIMIT 1`);
149
+ if (rows.length === 0)
150
+ throw new Error(`brand '${ctx.brand}' not found in cp_brands`);
151
+ const b = rows[0];
152
+ if (b.is_default === 't' || b.is_default === true || b.is_default === 'true') {
153
+ throw new Error(`brand '${ctx.brand}' is_default=true — sentinel brand cannot be relocated`);
154
+ }
155
+ // status='active' beklenir; başka durumlarda operator manual karar
156
+ if (b.status !== 'active' && b.status !== 'relocating') {
157
+ throw new Error(`brand '${ctx.brand}' status='${b.status}' — relocation requires status='active' (or resumable 'relocating')`);
158
+ }
159
+ return b;
160
+ }
161
+ /**
162
+ * Step 2 — INVENTORY: kaynak DB hakkında pre-flight rapor.
163
+ *
164
+ * Tablo sayısı + boyut + tahmini downtime. --confirm-relocation flag YOKsa
165
+ * insan-gözden-geçirme gate'i (operator dump'ı görmeden devam edemez).
166
+ * CI/agent mode'da spawnRelocate her zaman bayrağı geçirir.
167
+ */
168
+ async function doInventory(ctx, brand, source, target) {
169
+ const tablesRows = await dbSelectJson(ctx.cfg, source.db_name, `SELECT count(*)::text AS n FROM information_schema.tables WHERE table_schema='public'`);
170
+ const tables = tablesRows.length ? Number.parseInt(tablesRows[0].n, 10) : 0;
171
+ const sizeRows = await dbSelectJson(ctx.cfg, source.db_name, `SELECT pg_size_pretty(pg_database_size(current_database())) AS sz,
172
+ pg_database_size(current_database())::text AS sb`);
173
+ const dbSize = sizeRows[0]?.sz ?? '?';
174
+ const dbBytes = Number.parseInt(sizeRows[0]?.sb ?? '0', 10);
175
+ // Çok kaba tahmin: 50 MB/s pg_dump+restore ortalama. v1 sentinel için indikatif.
176
+ const estDowntimeSec = Math.max(5, Math.ceil(dbBytes / (50 * 1024 * 1024)));
177
+ log.info(`[inventory] tables=${tables} db_size=${dbSize} est_downtime≈${estDowntimeSec}s`);
178
+ log.info(`[inventory] source: ${source.db_host}:${source.db_port}/${source.db_name}`);
179
+ log.info(`[inventory] target: ${target.host}:${target.port}/${source.db_name} (same db_name; host changes)`);
180
+ if (!ctx.confirmManifest) {
181
+ throw new Error('inventory review required — re-run with --confirm-relocation (CI/agent mode) after operator review (K-REL-2 planlı pencere)');
182
+ }
183
+ return { tables, dbSize, estDowntimeSec };
184
+ }
185
+ /** Step 3 — MARK RELOCATING: BrandWriteGuard freeze devreye girer (K-REL-2). */
186
+ async function doMarkRelocating(ctx, brand) {
187
+ await dbExec(ctx.cfg, CONTROL_DB, `UPDATE cp_brands SET status='relocating', updated_at=now()
188
+ WHERE id='${brand.id}' AND status != 'relocating'`);
189
+ // F1: paylaşımlı freeze-status Redis key'ini sil → freeze ANINDA tüm PHP
190
+ // worker'larında devreye girer (in-process TTL stale penceresi beklenmez).
191
+ await invalidateBrandStatus(ctx.cfg, brand.id);
192
+ return { status: 'relocating' };
193
+ }
194
+ /**
195
+ * Step 4 — PROVISION TARGET DB.
196
+ *
197
+ * v1 intra-cluster (K-REL-6): kaynak ve hedef aynı postgres instance içinde
198
+ * farklı DB değil — aynı DB adı ile yeni postgres instance'a kopya AMA mkt'de
199
+ * sadece tek postgres var. Bu nedenle "host taşıma" v1'de simülasyon: hedef
200
+ * host = kaynak host (aynı postgres), AYNI db_name kullanıldığında çakışma
201
+ * olur. v1 sentinel için: target.host farklıysa (multi-cluster M2.2'ye
202
+ * hazırlık), Postgres connection o host'a açılır + CREATE DATABASE yapılır.
203
+ *
204
+ * Mkt'de target.host == source.db_host ise: CREATE DATABASE çakışır (aynı
205
+ * name); v1 davranışı: error fırlat ("intra-cluster same-host relocation
206
+ * requires distinct DB name; not v1 scope").
207
+ *
208
+ * Idempotent: hedef DB zaten varsa atla.
209
+ */
210
+ async function doProvisionTarget(ctx, source, target) {
211
+ if (target.host === source.db_host && target.port === source.db_port) {
212
+ throw new Error('target == source host/port — v1 relocation requires distinct target host (intra-cluster same-host taşıma desteklenmez)');
213
+ }
214
+ // pg_isready hedef host'ta + CREATE DATABASE.
215
+ // Mkt'de hedef host'a SSH/network erişimi varsa, postgres client'ı buradan
216
+ // doğrudan bağlanabilir. v1 scope: target host postgres'ine PSQL ile bağlan.
217
+ const pg = ctx.cfg.dbContainerName;
218
+ const admin = ctx.cfg.dbAdminUser;
219
+ const script = `set -euo pipefail\n` +
220
+ // Idempotent check: hedef DB var mı
221
+ `EXISTS=$(docker exec ${pg} psql -U ${admin} -h ${shq(target.host)} -p ${target.port} -d postgres -tAc ` +
222
+ `"SELECT 1 FROM pg_database WHERE datname='${sqlLit(source.db_name)}'" 2>/dev/null || echo "")\n` +
223
+ `if [ "$EXISTS" = "1" ]; then\n` +
224
+ ` echo "TARGET_EXISTS"\n` +
225
+ `else\n` +
226
+ ` docker exec ${pg} psql -U ${admin} -h ${shq(target.host)} -p ${target.port} -d postgres -v ON_ERROR_STOP=1 -c ` +
227
+ ` "CREATE DATABASE \\"${source.db_name}\\""\n` +
228
+ ` docker exec ${pg} psql -U ${admin} -h ${shq(target.host)} -p ${target.port} -d postgres -v ON_ERROR_STOP=1 -c ` +
229
+ ` "DO \\$\\$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname='${source.db_user}') THEN CREATE ROLE \\"${source.db_user}\\" LOGIN; END IF; END \\$\\$;"\n` +
230
+ ` docker exec ${pg} psql -U ${admin} -h ${shq(target.host)} -p ${target.port} -d postgres -v ON_ERROR_STOP=1 -c ` +
231
+ ` "GRANT ALL PRIVILEGES ON DATABASE \\"${source.db_name}\\" TO \\"${source.db_user}\\""\n` +
232
+ ` echo "TARGET_CREATED"\n` +
233
+ `fi\n`;
234
+ const res = await runRemoteScript(ctx.cfg, script, { silent: true });
235
+ if (!res.success) {
236
+ throw new Error(`provision target failed: ${(res.stderr || res.stdout).trim().slice(0, 500)}`);
237
+ }
238
+ const created = res.stdout.includes('TARGET_CREATED');
239
+ log.info(`[provision] target ${target.host}:${target.port}/${source.db_name} — ${created ? 'created' : 'exists (idempotent)'}`);
240
+ return { created, target_host: target.host };
241
+ }
242
+ /**
243
+ * Step 5 — SNAPSHOT/COPY (K-REL-1 pg_dump+pg_restore v1).
244
+ *
245
+ * `pg_dump -Fc` kaynak'tan + ssh transport yok (v1 intra-cluster mkt; CLI host
246
+ * postgres container'ına bağlanır, hedef host'a network üzerinden); pipe
247
+ * `pg_restore -d <target_db>`. session_replication_role=replica gerek yok
248
+ * (tek brand DB, FK constraint zaten doğru sırada dump yapılır).
249
+ *
250
+ * Idempotent: hedef DB tablo sayısı > 0 ise atla (önceki kısmi restore varsa
251
+ * operator manual karar — partial restore detection v2).
252
+ */
253
+ async function doSnapshotCopy(ctx, source, target) {
254
+ // Idempotent guard: hedef DB tablo sayısı > 0 ise atla.
255
+ const pg = ctx.cfg.dbContainerName;
256
+ const admin = ctx.cfg.dbAdminUser;
257
+ const checkScript = `docker exec ${pg} psql -U ${admin} -h ${shq(target.host)} -p ${target.port} -d ${source.db_name} ` +
258
+ `-tAc "SELECT count(*) FROM information_schema.tables WHERE table_schema='public'" 2>/dev/null || echo "0"`;
259
+ const checkRes = await runRemoteScript(ctx.cfg, checkScript, { silent: true });
260
+ const tableCount = Number.parseInt(checkRes.stdout.trim() || '0', 10);
261
+ if (tableCount > 0) {
262
+ log.info(`[snapshot] target already has ${tableCount} tables — skip (idempotent resume)`);
263
+ return { ok: true };
264
+ }
265
+ // pg_dump | pg_restore pipe (CLI host bash'inde tek docker exec içinde).
266
+ const dumpRestore = `set -euo pipefail\n` +
267
+ `docker exec ${pg} bash -lc 'set -o pipefail && ` +
268
+ ` pg_dump -U ${admin} -h ${source.db_host} -p ${source.db_port} -d ${source.db_name} -Fc ` +
269
+ ` | pg_restore -U ${admin} -h ${shq(target.host)} -p ${target.port} -d ${source.db_name} ` +
270
+ ` --no-owner --no-acl --exit-on-error' \n`;
271
+ log.info(`[snapshot] dump ${source.db_host}:${source.db_port}/${source.db_name} → ${target.host}:${target.port}/${source.db_name}`);
272
+ const res = await runRemoteScript(ctx.cfg, dumpRestore, { silent: true });
273
+ if (!res.success) {
274
+ throw new Error(`pg_dump|pg_restore failed: ${(res.stderr || res.stdout).trim().slice(0, 500)}`);
275
+ }
276
+ return { ok: true };
277
+ }
278
+ /**
279
+ * Step 6 — VERIFY (INV-1 cutover gate; Faz 6 helper reuse).
280
+ *
281
+ * Her tablo için: kaynak count == hedef count + md5 checksum eşit (PK varsa).
282
+ * Mismatch → THROW (Step 7 atomic flip ÇALIŞMAZ; INV-1).
283
+ *
284
+ * pg_dump bütünlüğü zaten FK orphan üretmez (schema + data tek dump);
285
+ * INV-4 ayrı kontrol gerekmez.
286
+ */
287
+ async function doVerifyRelocation(ctx, source, target) {
288
+ // Hedef host parametrik dbSelectJson çağrısı için: helper ctx.cfg.alias'ı kullanıyor.
289
+ // v1 intra-cluster mkt'de target.host network erişimli; helper'a context yetiyor.
290
+ // Multi-cluster M2.2'de iki ayrı dbSelectJson ctx (kaynak + hedef cluster).
291
+ // Şimdilik dbSelectJson source ve target için aynı ctx.cfg kullanır (postgres
292
+ // container -h target.host parametresiyle bağlanır); dbSelectJson default
293
+ // localhost'a bağlanıyor — bu v1 sınırlaması, M2.2'de relocation gateway
294
+ // genişletilir.
295
+ //
296
+ // v1 PRAGMATİK: kaynak ve hedef AYNI postgres instance OLMADIĞI için
297
+ // (provision step'inde guard), dbSelectJson'ın hedef host'a parametre
298
+ // geçirmesi gerekir. M2.2'ye kadar bu pragmatik: önce kaynak içinde count,
299
+ // sonra ssh script ile hedef host'a query.
300
+ // Tablo listesi (kaynak schema):
301
+ const tables = await dbSelectJson(ctx.cfg, source.db_name, `SELECT table_schema, table_name FROM information_schema.tables WHERE table_schema='public' ORDER BY 1,2`);
302
+ let mismatches = 0;
303
+ let checksumsSkipped = 0;
304
+ for (const t of tables) {
305
+ const label = `${t.table_schema}.${t.table_name}`;
306
+ const srcCount = await countWhere(ctx, source.db_name, t.table_schema, t.table_name, '1=1');
307
+ // Hedef'te count: ssh script üzerinden.
308
+ const tgtCount = await countOnTarget(ctx, target, source.db_name, t.table_schema, t.table_name, '1=1');
309
+ if (srcCount !== tgtCount) {
310
+ log.error(` [count] ${label} — source=${srcCount} target=${tgtCount} MISMATCH`);
311
+ mismatches++;
312
+ continue;
313
+ }
314
+ log.info(` [count] ${label} — ${srcCount} ✓`);
315
+ // Checksum (PK varsa).
316
+ const pkCols = await fetchPrimaryKeyColumns(ctx, source.db_name, t.table_schema, t.table_name);
317
+ if (pkCols.length === 0) {
318
+ log.warn(` [chk ] ${label} — no PK; checksum SKIPPED (count-only)`);
319
+ checksumsSkipped++;
320
+ continue;
321
+ }
322
+ const orderBy = pkCols.map(quoteIdent).join(', ');
323
+ const srcHash = await tableChecksum(ctx, source.db_name, t.table_schema, t.table_name, '1=1', orderBy);
324
+ const tgtHash = await checksumOnTarget(ctx, target, source.db_name, t.table_schema, t.table_name, orderBy);
325
+ if (srcHash !== tgtHash) {
326
+ log.error(` [chk ] ${label} — source_md5=${srcHash} target_md5=${tgtHash} MISMATCH`);
327
+ mismatches++;
328
+ continue;
329
+ }
330
+ log.info(` [chk ] ${label} — md5=${srcHash} ✓`);
331
+ }
332
+ log.info(`[verify] tables=${tables.length} mismatches=${mismatches} checksums_skipped=${checksumsSkipped}`);
333
+ if (mismatches > 0) {
334
+ throw new Error(`INV-1 cutover gate FAIL — mismatches=${mismatches}; source DB intact (INV-2 reuse); target retained for forensic`);
335
+ }
336
+ return { tables: tables.length, mismatches, checksumsSkipped };
337
+ }
338
+ /**
339
+ * Step 7 — REGISTRY FLIP (atomic single-txn; K-REL-3 retired-row pattern).
340
+ *
341
+ * F2 (review 2026-06-02, Mustafa kararı): eski in-place host UPDATE kaynağı
342
+ * registry'de izsiz bırakıyordu → planlanan db_relocate_cleanup job (14g)
343
+ * tutunacak satır bulamazdı. Çözüm: retired-row pattern — kaynak satır
344
+ * status='retired' (INV-2 retain; cleanup job bunu DROP eder), hedef için
345
+ * YENİ status='active' satır (kaynağın tüm attr'ları kopyalanır, host/port/
346
+ * cluster/region override). UNIQUE(owner_type,owner_id,db_name) tam-constraint'i
347
+ * bunu engellerdi (db_name değişmez); migration 007 onu partial-unique-on-live
348
+ * (WHERE status<>'retired') ile değiştirdi → retired + active yan yana durur.
349
+ *
350
+ * F3 (review 2026-06-02): rowcount assert — kaynak active satır tam 1 değilse
351
+ * RAISE EXCEPTION (sessiz no-op önlenir). plpgsql DO + GET DIAGNOSTICS.
352
+ *
353
+ * Resume-idempotent: hedef-host'lu active satır zaten varsa (önceki çalışmada
354
+ * flip commit olmuş) atla — DO bloğu kaynağı tekrar 'active' bulamayıp
355
+ * RAISE etmesin diye.
356
+ */
357
+ async function doRegistryFlip(ctx, brand, source, target) {
358
+ // Idempotent resume guard: flip zaten yapıldıysa atla.
359
+ const existing = await dbSelectJson(ctx.cfg, CONTROL_DB, `SELECT count(*)::text AS n FROM cp_databases
360
+ WHERE owner_type='brand' AND owner_id='${brand.id}'
361
+ AND db_name='${sqlLit(source.db_name)}'
362
+ AND db_host='${sqlLit(target.host)}' AND db_port=${target.port}
363
+ AND status='active'`);
364
+ if (existing.length && Number.parseInt(existing[0].n, 10) > 0) {
365
+ log.info('[flip] target-host active row already present — skip (idempotent resume)');
366
+ return { flipped: true };
367
+ }
368
+ // target null ise kaynağın değerini koru (INSERT'te v_src.* kullanılır).
369
+ const clusterVal = target.cluster ? `'${sqlLit(target.cluster)}'` : 'v_src.cluster_name';
370
+ const regionVal = target.region ? `'${sqlLit(target.region)}'` : 'v_src.placement_region';
371
+ const sql = `BEGIN;\n` +
372
+ `DO $flip$\n` +
373
+ `DECLARE\n` +
374
+ ` v_src cp_databases%ROWTYPE;\n` +
375
+ ` v_n int;\n` +
376
+ `BEGIN\n` +
377
+ ` UPDATE cp_databases SET status='retired', updated_at=now()\n` +
378
+ ` WHERE owner_type='brand' AND owner_id='${brand.id}'\n` +
379
+ ` AND db_name='${sqlLit(source.db_name)}'\n` +
380
+ ` AND db_host='${sqlLit(source.db_host)}' AND db_port=${source.db_port}\n` +
381
+ ` AND status='active'\n` +
382
+ ` RETURNING * INTO v_src;\n` +
383
+ ` GET DIAGNOSTICS v_n = ROW_COUNT;\n` +
384
+ ` IF v_n <> 1 THEN\n` +
385
+ ` RAISE EXCEPTION 'registry flip: expected exactly 1 active source row, got %', v_n;\n` +
386
+ ` END IF;\n` +
387
+ ` INSERT INTO cp_databases\n` +
388
+ ` (owner_type, owner_id, db_kind, cluster_name, db_host, db_port, db_name,\n` +
389
+ ` db_user, db_secret_ref, region, backup_policy, db_tier, placement_region, status)\n` +
390
+ ` VALUES\n` +
391
+ ` (v_src.owner_type, v_src.owner_id, v_src.db_kind, ${clusterVal},\n` +
392
+ ` '${sqlLit(target.host)}', ${target.port}, v_src.db_name,\n` +
393
+ ` v_src.db_user, v_src.db_secret_ref, v_src.region, v_src.backup_policy,\n` +
394
+ ` v_src.db_tier, ${regionVal}, 'active');\n` +
395
+ `END\n` +
396
+ `$flip$;\n` +
397
+ `COMMIT;\n`;
398
+ const res = await dbExec(ctx.cfg, CONTROL_DB, sql);
399
+ if (!res.success)
400
+ throw new Error(`registry flip failed: ${res.stderr.trim()}`);
401
+ return { flipped: true };
402
+ }
403
+ /**
404
+ * Step 8 — CACHE INVALIDATE + FREEZE KALK.
405
+ *
406
+ * cp_brands.status='active' (BrandWriteGuard freeze kalkar). Kaynak DB
407
+ * cp_databases'ta status='retired' satır olarak DURUYOR (Step 7 retired-row;
408
+ * K-REL-3/INV-2 retain) — db_relocate_cleanup job 14g sonra bu satırı bulup
409
+ * fiziksel DROP eder. Tamamlanma kaydı ayrıca cp_audit_log'a (Step 9).
410
+ */
411
+ async function doCacheInvalidateFreezeKalk(ctx, brand, source) {
412
+ await dbExec(ctx.cfg, CONTROL_DB, `UPDATE cp_brands SET status='active', updated_at=now() WHERE id='${brand.id}'`);
413
+ // F1: freeze KALKTI → Redis key'i sil ki worker'lar anlık 'active' görsün
414
+ // (aksi halde TTL'e kadar 503 dönmeye devam ederdi).
415
+ await invalidateBrandStatus(ctx.cfg, brand.id);
416
+ return { status: 'active', source_retained: source };
417
+ }
418
+ /** Step 9 — AUDIT END (relocate_completed + source retain notu). */
419
+ async function doAuditEnd(ctx, brand, source, target) {
420
+ const payload = JSON.stringify({
421
+ brand: ctx.brand,
422
+ source: { host: source.db_host, port: source.db_port, db: source.db_name },
423
+ target: { host: target.host, port: target.port, db: source.db_name },
424
+ cluster: target.cluster, region: target.region,
425
+ retention_days: 14,
426
+ });
427
+ await dbExec(ctx.cfg, CONTROL_DB, `INSERT INTO cp_audit_log (actor, action, target, after)
428
+ VALUES ('cli:db-relocate', 'relocate_completed', 'brand:${brand.id}',
429
+ '${sqlLit(payload)}'::jsonb)`);
430
+ return { logged: true };
431
+ }
432
+ // ─────────────────────────────────────────────────────────────────────────
433
+ // Helpers (relocation'a özel)
434
+ // ─────────────────────────────────────────────────────────────────────────
435
+ /** cp_databases'tan active source DB satırını çek. */
436
+ async function fetchSourceDb(ctx, brand) {
437
+ const rows = await dbSelectJson(ctx.cfg, CONTROL_DB, `SELECT db_host, db_port, db_name, db_user
438
+ FROM cp_databases
439
+ WHERE owner_type='brand' AND owner_id='${brand.id}' AND status='active'
440
+ LIMIT 1`);
441
+ if (rows.length === 0) {
442
+ throw new Error(`no active cp_databases row for brand '${brand.slug}' (owner=brand, status=active)`);
443
+ }
444
+ return rows[0];
445
+ }
446
+ /**
447
+ * Hedef host'ta count sorgusu (ssh + docker exec + psql -h target.host).
448
+ * v1 intra-cluster mkt: aynı CLI host'tan target.host'a network bağlantısı.
449
+ * Multi-cluster M2.2'de iki-ssh pipe pattern'ine genişler.
450
+ */
451
+ async function countOnTarget(ctx, target, dbName, schema, table, where) {
452
+ const pg = ctx.cfg.dbContainerName;
453
+ const admin = ctx.cfg.dbAdminUser;
454
+ const qTable = quoteQualified(`${schema}.${table}`);
455
+ const sql = `SELECT count(*)::text FROM ${qTable} WHERE ${where}`;
456
+ const script = `docker exec ${pg} psql -U ${admin} -h ${shq(target.host)} -p ${target.port} -d ${dbName} ` +
457
+ `-tAc ${shq(sql)} 2>/dev/null`;
458
+ const res = await runRemoteScript(ctx.cfg, script, { silent: true });
459
+ if (!res.success) {
460
+ throw new Error(`target count(${schema}.${table}) failed: ${(res.stderr || res.stdout).trim().slice(0, 200)}`);
461
+ }
462
+ return Number.parseInt(res.stdout.trim() || '0', 10);
463
+ }
464
+ /** Hedef host'ta md5 checksum (PK ORDER BY ile deterministik). */
465
+ async function checksumOnTarget(ctx, target, dbName, schema, table, orderBy) {
466
+ const pg = ctx.cfg.dbContainerName;
467
+ const admin = ctx.cfg.dbAdminUser;
468
+ const qTable = quoteQualified(`${schema}.${table}`);
469
+ const sql = `SELECT md5(coalesce(string_agg(md5(t.*::text), '' ORDER BY ${orderBy}), '')) AS h ` +
470
+ `FROM ${qTable} t`;
471
+ const script = `docker exec ${pg} psql -U ${admin} -h ${shq(target.host)} -p ${target.port} -d ${dbName} ` +
472
+ `-tAc ${shq(sql)} 2>/dev/null`;
473
+ const res = await runRemoteScript(ctx.cfg, script, { silent: true });
474
+ if (!res.success) {
475
+ throw new Error(`target checksum(${schema}.${table}) failed: ${(res.stderr || res.stdout).trim().slice(0, 200)}`);
476
+ }
477
+ return res.stdout.trim();
478
+ }
479
+ function shq(s) {
480
+ return `'${s.replace(/'/g, `'\\''`)}'`;
481
+ }
482
+ //# sourceMappingURL=relocate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relocate.js","sourceRoot":"","sources":["../../../src/commands/db/relocate.ts"],"names":[],"mappings":"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"}