From 0dfceb2f134d26569ed683cd7572569561a28fbf Mon Sep 17 00:00:00 2001 From: Bruce Smith Date: Mon, 29 Mar 2021 10:29:14 -0400 Subject: [PATCH] allow owners to view public networks --- lib/endpoints/networks.js | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/lib/endpoints/networks.js b/lib/endpoints/networks.js index 89059d72..f20e46ca 100644 --- a/lib/endpoints/networks.js +++ b/lib/endpoints/networks.js @@ -26,6 +26,9 @@ var ResourceNotFoundError = restify.ResourceNotFoundError; var MissingParameterError = restify.MissingParameterError; var FABRIC_VLAN_FIELDS = ['description', 'name', 'vlan_id']; +var NETWORK_FIELDS = ['description', 'gateway', 'name', + 'provision_end_ip', 'provision_start_ip', 'resolvers', + 'routes', 'subnet', 'uuid', 'vlan_id']; var FABRIC_NETWORK_FIELDS = ['description', 'fabric', 'gateway', 'internet_nat', 'name', 'provision_end_ip', 'provision_start_ip', 'resolvers', 'routes', 'subnet', 'uuid', 'vlan_id']; @@ -136,8 +139,9 @@ function translateErr(err) { // Note here "net" can be a network, fabric network or network_pool from NAPI -function translateNetwork(net) { +function translateNetwork(net, account) { assert.object(net, 'net'); + assert.optionalUuid(account, 'account'); var obj = { id: net.uuid, @@ -165,6 +169,27 @@ function translateNetwork(net) { return; } + if (net.hasOwnProperty(p)) { + obj[p] = net[p]; + } + }); + } else { + NETWORK_FIELDS.forEach(function (p) { + if (p === 'uuid') { + return; + } + + if (net.hasOwnProperty(p)) { + obj[p] = net[p]; + } + }); + } + if (account != null && net.owner_uuids != null && net.owner_uuids.indexOf(account) > -1) { + NETWORK_FIELDS.forEach(function (p) { + if (p === 'uuid') { + return; + } + if (net.hasOwnProperty(p)) { obj[p] = net[p]; } @@ -254,7 +279,7 @@ function listNetworks(req, res, next) { // assuming this list never gets too big return skipNetworkUuids.indexOf(n.uuid) === -1; }).map(function (pool) { - return translateNetwork(pool); + return translateNetwork(pool, req.account.uuid); }); req.log.debug({ @@ -282,7 +307,7 @@ function getNetwork(req, res, next) { resources.getRoleTags(req, res); } - network = translateNetwork(net[0]); + network = translateNetwork(net[0], req.account.uuid); req.log.debug({ network: network,