UNPKG

scaleway-sync-firewall

Version:
48 lines (47 loc) 1.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const Model_1 = __importDefault(require("./library/Model")); const FirewallRule_1 = __importDefault(require("./FirewallRule")); class SecurityGroup extends Model_1.default('/security_groups') { /** * A security group has many firewall rules. */ get rules() { return this.hasMany( // @ts-ignore FirewallRule_1.default, this.zone, `${this.entry.id}/rules`, { securityGroupId: this.entry.id }); } /** * Firewall rules we can edit. */ get editableRules() { return this.rules.then((rules) => { return rules.filter((rule) => rule.entry.editable); }); } /** * Clear all rules for the current security group. */ async clearRules() { const rules = await this.editableRules; return Promise.all(rules.map((rule) => { return rule.delete(); })); } /** * Add a list of rules to the current security group. */ addRules(rules) { return Promise.all(rules.map((rule) => { return new FirewallRule_1.default(rule.entry, this.zone, { securityGroupId: this.entry.id }).create(); })); } } /** * Model response sub-key. */ SecurityGroup.subKey = 'security_group'; exports.default = SecurityGroup;