UNPKG

@lxdhub/dbsync

Version:

Display, search and copy LXD-images using a web interface.

84 lines 3.38 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); const common_1 = require("@nestjs/common"); const node_lxd_client_1 = require("node-lxd-client"); let LXDService = class LXDService { constructor(dbSyncSettings) { this.dbSyncSettings = dbSyncSettings; this.images = []; this.logger = new common_1.Logger('LXDService'); } async getLXDClientConfig(remote) { let config; if (remote.password) { config = { host: remote.url, cert: this.dbSyncSettings.lxd.cert, key: this.dbSyncSettings.lxd.key, password: remote.password }; } else { config = { host: remote.url }; } return config; } async loadRemoteImages(remote) { const lxdConfig = await this.getLXDClientConfig(remote); this.lxd = new node_lxd_client_1.LXDRemoteClient(lxdConfig); if (remote.password) { this.logger.log(`Authorizing certificate for remote ${remote.url}`); try { await this.lxd.authorizeCertificate(); this.logger.log(`Succesfully authorized certificate for remote ${remote.url}`); } catch (exception) { this.logger.error(`Could not access ${remote.url}`); } } this.logger.log(`Fetching remote images of ${remote.url}`); let remoteImages; try { remoteImages = await this.lxd.image.all({ lazy: false, sequentially: true }); } catch (exception) { this.logger.error(`Could not fetch remote images`); this.logger.error(exception); return []; } if (!remoteImages) { this.logger.log('No images found on LXD server'); return []; } this.logger.log(`Found ${remoteImages.length} images`); return remoteImages; } async getRemoteImages(remote) { if (!this.images[remote.name]) { this.images[remote.name] = await this.loadRemoteImages(remote); } return this.images[remote.name]; } }; LXDService = __decorate([ common_1.Injectable(), __param(0, common_1.Inject('LXDHubDbSyncSettings')), __metadata("design:paramtypes", [Object]) ], LXDService); exports.LXDService = LXDService; //# sourceMappingURL=lxd.service.js.map