Specify runner name when unregistering the runner

pull/5817/head
Chocobozzz 2023-05-26 09:03:50 +02:00
parent e35967ee08
commit f474a519dc
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
12 changed files with 24 additions and 16 deletions

View 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)

View 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()

View 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
}

View File

@ -47,6 +47,7 @@ export class IPCClient {
async askUnregister (options: {
url: string
runnerName: string
}) {
const req: IPCRequest = {
type: 'unregister',

View 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':

View 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' }

View 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 () {

View 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()
}

View 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()
}

View 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()
}

View 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)
}

View 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