]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Specify runner name when unregistering the runner
authorChocobozzz <me@florianbigard.com>
Fri, 26 May 2023 07:03:50 +0000 (09:03 +0200)
committerChocobozzz <me@florianbigard.com>
Fri, 26 May 2023 07:04:22 +0000 (09:04 +0200)
12 files changed:
packages/peertube-runner/peertube-runner.ts
packages/peertube-runner/register/register.ts
packages/peertube-runner/server/server.ts
packages/peertube-runner/shared/ipc/ipc-client.ts
packages/peertube-runner/shared/ipc/ipc-server.ts
packages/peertube-runner/shared/ipc/shared/ipc-request.model.ts
server/tests/peertube-runner/client-cli.ts
server/tests/peertube-runner/live-transcoding.ts
server/tests/peertube-runner/studio-transcoding.ts
server/tests/peertube-runner/vod-transcoding.ts
server/tests/shared/peertube-runner-process.ts
support/doc/tools.md

index 858d85e6ab79cc2f066297905c68949eaf2185e3..32586c4d9feb5f334e4457fcfb021d9ffb370116 100644 (file)
@@ -55,6 +55,7 @@ program.command('register')
 program.command('unregister')
   .description('Unregister the runner from PeerTube instance')
   .requiredOption('--url <url>', 'PeerTube instance URL', parseUrl)
+  .requiredOption('--runner-name <name>', 'Runner name')
   .action(async options => {
     try {
       await unregisterRunner(options)
index a6939093300b3362519ef61f7363b48e0fea26d8..ca1bf0f5a9b934a4507e42007897d81f4bfd5665 100644 (file)
@@ -16,6 +16,7 @@ export async function registerRunner (options: {
 
 export async function unregisterRunner (options: {
   url: string
+  runnerName: string
 }) {
   const client = new IPCClient()
   await client.run()
index 087405dfefc7336d8a002a6aecfd275406d9ff49..e76131c741c51b8720ffad458b3805a6fc7473d8 100644 (file)
@@ -121,27 +121,28 @@ export class RunnerServer {
 
   async unregisterRunner (options: {
     url: string
+    runnerName: string
   }) {
-    const { url } = options
+    const { url, runnerName } = options
 
-    const server = this.servers.find(s => s.url === url)
+    const server = this.servers.find(s => s.url === url && s.runnerName === runnerName)
     if (!server) {
-      logger.error(`Unknown server ${url} to unregister`)
+      logger.error(`Unknown server ${url} - ${runnerName} to unregister`)
       return
     }
 
-    logger.info(`Unregistering runner ${server.runnerName} on ${url}...`)
+    logger.info(`Unregistering runner ${runnerName} on ${url}...`)
 
     try {
       await server.runners.unregister({ runnerToken: server.runnerToken })
     } catch (err) {
-      logger.error({ err }, `Cannot unregister runner ${server.runnerName} on ${url}`)
+      logger.error({ err }, `Cannot unregister runner ${runnerName} on ${url}`)
     }
 
     this.unloadServer(server)
     await this.saveRegisteredInstancesInConf()
 
-    logger.info(`Unregistered runner ${server.runnerName} on ${server.url}`)
+    logger.info(`Unregistered runner ${runnerName} on ${url}`)
   }
 
   private unloadServer (server: PeerTubeServer) {
@@ -195,7 +196,7 @@ export class RunnerServer {
         if (code === ServerErrorCode.UNKNOWN_RUNNER_TOKEN) {
           logger.error({ err }, `Unregistering ${server.url} as the runner token ${server.runnerToken} is invalid`)
 
-          await this.unregisterRunner({ url: server.url })
+          await this.unregisterRunner({ url: server.url, runnerName: server.runnerName })
           return
         }
 
index db8d7f1bf6c4e405ca48fae43cb24d2697a73dc8..f8e72f97f965818b6c680e3e3703ed3af582902f 100644 (file)
@@ -47,6 +47,7 @@ export class IPCClient {
 
   async askUnregister (options: {
     url: string
+    runnerName: string
   }) {
     const req: IPCRequest = {
       type: 'unregister',
index 922dc93e5881eef04c2f41a52d64929fff14d850..4b67d01ae8a1798823f8a5f5c66a79679a0903ac 100644 (file)
@@ -40,7 +40,7 @@ export class IPCServer {
         return undefined
 
       case 'unregister':
-        await this.runnerServer.unregisterRunner({ url: req.url })
+        await this.runnerServer.unregisterRunner(pick(req, [ 'url', 'runnerName' ]))
         return undefined
 
       case 'list-registered':
index 0f733cdfee87c95efb5589c146a061704501fa1f..352808c749bfa3eb972e5a7bbac11d31ebef4237 100644 (file)
@@ -11,5 +11,5 @@ export type IPCRequestRegister = {
   runnerDescription?: string
 }
 
-export type IPCRequestUnregister = { type: 'unregister', url: string }
+export type IPCRequestUnregister = { type: 'unregister', url: string, runnerName: string }
 export type IPCRequestListRegistered = { type: 'list-registered' }
index cc8136c4ad60da7896faf457dee205275949d512..5cbdc4e77a571d353f20b422cf39ce22aea86974 100644 (file)
@@ -53,7 +53,7 @@ describe('Test peertube-runner program client CLI', function () {
   })
 
   it('Should unregister the PeerTube instance', async function () {
-    await peertubeRunner.unregisterPeerTubeInstance()
+    await peertubeRunner.unregisterPeerTubeInstance({ runnerName: 'my super runner' })
   })
 
   it('Should not have PeerTube instance listed', async function () {
index c2ca1de96edbf3950153b300ef3dab2ee86af250..4826c61f7ef4fc57a41d405ba8c1214721429da7 100644 (file)
@@ -190,7 +190,7 @@ describe('Test Live transcoding in peertube-runner program', function () {
 
   after(async function () {
     if (peertubeRunner) {
-      await peertubeRunner.unregisterPeerTubeInstance()
+      await peertubeRunner.unregisterPeerTubeInstance({ runnerName: 'runner' })
       peertubeRunner.kill()
     }
 
index 69b38a53641776a6e6197540324e6edb13710eab..9882019475bb2b965e82c68aadc5b7314c56028f 100644 (file)
@@ -115,7 +115,7 @@ describe('Test studio transcoding in peertube-runner program', function () {
 
   after(async function () {
     if (peertubeRunner) {
-      await peertubeRunner.unregisterPeerTubeInstance()
+      await peertubeRunner.unregisterPeerTubeInstance({ runnerName: 'runner' })
       peertubeRunner.kill()
     }
 
index aefec394d4e2d02b434a7891a17e6586d83b59e3..c3f41c097834b84b05826448fb65026853220717 100644 (file)
@@ -341,7 +341,7 @@ describe('Test VOD transcoding in peertube-runner program', function () {
 
   after(async function () {
     if (peertubeRunner) {
-      await peertubeRunner.unregisterPeerTubeInstance()
+      await peertubeRunner.unregisterPeerTubeInstance({ runnerName: 'runner' })
       peertubeRunner.kill()
     }
 
index b3c8dfe0e8698a25e0aeb288d1e3441186ecf88c..9304ebcc847b47f21fdffc09debae86d69f5d176 100644 (file)
@@ -60,8 +60,12 @@ export class PeerTubeRunnerProcess {
     return execa.node(this.getRunnerPath(), args)
   }
 
-  unregisterPeerTubeInstance () {
-    const args = [ 'unregister', '--url', this.server.url, ...this.buildIdArg() ]
+  unregisterPeerTubeInstance (options: {
+    runnerName: string
+  }) {
+    const { runnerName } = options
+
+    const args = [ 'unregister', '--url', this.server.url, '--runner-name', runnerName, ...this.buildIdArg() ]
     return execa.node(this.getRunnerPath(), args)
   }
 
index c12b00e32417a7f25458ea4d1a973fabad4896f7..f45a39718ba7813a6b35c3b4a5c9783200451dc6 100644 (file)
@@ -398,7 +398,7 @@ The runner will then use a websocket connection with the PeerTube instance to be
 To unregister a PeerTube instance:
 
 ```bash
-peertube-runner unregister --url http://peertube.example.com
+peertube-runner unregister --url http://peertube.example.com --runner-name my-runner-name
 ```
 
 ### List registered instances