@lxdhub/dbsync
Version:
Display, search and copy LXD-images using a web interface.
84 lines • 3.38 kB
JavaScript
;
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