scaleway-sync-firewall
Version:
Synchronize Scaleway Security Groups
48 lines (47 loc) • 1.54 kB
JavaScript
;
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;