Skip to content

Commit ecca61b

Browse files
committed
filter networks by globoLbNetworks that have lb env
1 parent be7478a commit ecca61b

8 files changed

Lines changed: 92 additions & 14 deletions

File tree

api/src/com/cloud/network/NetworkService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ IpAddress allocatePortableIP(Account ipOwner, int regionId, Long zoneId, Long ne
6363
Network createGuestNetwork(CreateNetworkCmd cmd) throws InsufficientCapacityException, ConcurrentOperationException, ResourceAllocationException;
6464

6565
Pair<List<? extends Network>, Integer> searchForNetworks(ListNetworksCmd cmd);
66+
List<? extends Network> searchForAllNetworks(ListNetworksCmd cmd);
6667

6768
boolean deleteNetwork(long networkId, boolean forced);
6869

client/tomcatconf/commands.properties.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ listIpForwardingRules=15
176176
disableStaticNat=15
177177

178178
#### load balancer commands
179+
listGloboLbNetworks=15
179180
createLoadBalancerRule=15
180181
deleteLoadBalancerRule=15
181182
removeFromLoadBalancerRule=15
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.globo.globonetwork.cloudstack.api;
2+
3+
import com.cloud.network.Network;
4+
import com.cloud.utils.Pair;
5+
import com.globo.globonetwork.cloudstack.manager.GloboNetworkManager;
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
import javax.inject.Inject;
9+
import org.apache.cloudstack.api.APICommand;
10+
import org.apache.cloudstack.api.ResponseObject;
11+
import org.apache.cloudstack.api.command.user.network.ListNetworksCmd;
12+
import org.apache.cloudstack.api.response.ListResponse;
13+
import org.apache.cloudstack.api.response.NetworkResponse;
14+
15+
@APICommand(name = "listGloboLbNetworks", description = "Lists all networks that support lb services.", responseObject = NetworkResponse.class, responseView = ResponseObject.ResponseView.Full, entityType = {Network.class},
16+
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
17+
public class ListGloboLbNetworksCmd extends ListNetworksCmd {
18+
19+
@Inject
20+
GloboNetworkManager _globoNetworkManager;
21+
22+
@Override
23+
public void execute() {
24+
Pair<List<? extends Network>, Integer> networks = _globoNetworkManager.searchForLbNetworks(this);
25+
26+
ListResponse<NetworkResponse> response = new ListResponse<NetworkResponse>();
27+
List<NetworkResponse> networkResponses = new ArrayList<NetworkResponse>();
28+
for (Network network : networks.first()) {
29+
30+
NetworkResponse networkResponse = _responseGenerator.createNetworkResponse(ResponseObject.ResponseView.Restricted, network);
31+
networkResponses.add(networkResponse);
32+
33+
}
34+
response.setResponses(networkResponses, networks.second());
35+
response.setResponseName(getCommandName());
36+
setResponseObject(response);
37+
}
38+
}

plugins/network-elements/globonetwork/src/com/globo/globonetwork/cloudstack/manager/GloboNetworkManager.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.cloud.network.dao.LoadBalancerOptionsVO;
2323
import com.cloud.utils.net.Ip;
2424
import com.globo.globonetwork.cloudstack.api.GetGloboNetworkPoolCmd;
25+
import com.globo.globonetwork.cloudstack.api.ListGloboLbNetworksCmd;
2526
import com.globo.globonetwork.cloudstack.api.ListGloboNetworkExpectedHealthchecksCmd;
2627
import com.globo.globonetwork.cloudstack.api.ListGloboNetworkPoolsCmd;
2728
import com.globo.globonetwork.cloudstack.api.UpdateGloboNetworkPoolCmd;
@@ -1027,6 +1028,7 @@ public List<Class<?>> getCommands() {
10271028
cmdList.add(ListGloboNetworkExpectedHealthchecksCmd.class);
10281029
cmdList.add(GetGloboNetworkPoolCmd.class);
10291030
cmdList.add(UpdateGloboNetworkPoolCmd.class);
1031+
cmdList.add(ListGloboLbNetworksCmd.class);
10301032
return cmdList;
10311033
}
10321034

@@ -2715,4 +2717,28 @@ public List<GloboNetworkExpectHealthcheckResponse.ExpectedHealthcheck> listAllEx
27152717

27162718
return answer.getExpectedHealthchecks();
27172719
}
2720+
2721+
@Inject
2722+
NetworkService _networkService;
2723+
@Override
2724+
public Pair<List<? extends Network>, Integer> searchForLbNetworks(ListGloboLbNetworksCmd cmd) {
2725+
List<? extends Network> networks = _networkService.searchForAllNetworks(cmd);
2726+
2727+
List<Network> networksToReturn = new ArrayList<Network>();
2728+
for (Network network : networks){
2729+
List<GloboNetworkLoadBalancerEnvironment> lbEnvs = listGloboNetworkLBEnvironmentsFromDB(network.getPhysicalNetworkId(), network.getId(), null);
2730+
if (lbEnvs != null && lbEnvs.size() > 0) {
2731+
networksToReturn.add(network);
2732+
}
2733+
}
2734+
2735+
//Now apply pagination
2736+
List<? extends Network> wPagination = StringUtils.applyPagination(networksToReturn, cmd.getStartIndex(), cmd.getPageSizeVal());
2737+
if (wPagination != null) {
2738+
Pair<List<? extends Network>, Integer> listWPagination = new Pair<List<? extends Network>, Integer>(wPagination, networksToReturn.size());
2739+
return listWPagination;
2740+
}
2741+
2742+
return new Pair<List<? extends Network>, Integer>(networksToReturn, networksToReturn.size());
2743+
}
27182744
}

plugins/network-elements/globonetwork/src/com/globo/globonetwork/cloudstack/manager/GloboNetworkService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
package com.globo.globonetwork.cloudstack.manager;
1818

1919
import com.cloud.exception.InsufficientVirtualNetworkCapacityException;
20+
import com.cloud.utils.Pair;
21+
import com.globo.globonetwork.cloudstack.api.ListGloboLbNetworksCmd;
2022
import com.globo.globonetwork.cloudstack.response.GloboNetworkExpectHealthcheckResponse;
2123
import com.globo.globonetwork.cloudstack.response.GloboNetworkPoolResponse;
2224
import java.util.List;
@@ -278,4 +280,5 @@ public List<GloboNetworkPoolResponse.Pool> updatePools(List<Long> poolIds, Long
278280

279281
public List<GloboNetworkExpectHealthcheckResponse.ExpectedHealthcheck> listAllExpectedHealthchecks();
280282

283+
Pair<List<? extends Network>,Integer> searchForLbNetworks(ListGloboLbNetworksCmd listGloboLbNetworksCmd);
281284
}

server/src/com/cloud/network/NetworkServiceImpl.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1419,7 +1419,7 @@ public Network doInTransaction(TransactionStatus status) throws InsufficientCapa
14191419
}
14201420

14211421
@Override
1422-
public Pair<List<? extends Network>, Integer> searchForNetworks(ListNetworksCmd cmd) {
1422+
public List<? extends Network> searchForAllNetworks(ListNetworksCmd cmd) {
14231423
Long id = cmd.getId();
14241424
String keyword = cmd.getKeyword();
14251425
Long zoneId = cmd.getZoneId();
@@ -1514,7 +1514,7 @@ public Pair<List<? extends Network>, Integer> searchForNetworks(ListNetworksCmd
15141514
if (domainId != null) {
15151515
path = _domainDao.findById(domainId).getPath();
15161516
} else {
1517-
path = _domainDao.findById(caller.getDomainId()).getPath();
1517+
path = _domainDao.findById(caller.getDomainId()).getPath();
15181518
}
15191519

15201520
if (listAll && domainId == null) {
@@ -1563,11 +1563,11 @@ public Pair<List<? extends Network>, Integer> searchForNetworks(ListNetworksCmd
15631563
sb.join("domainSearch", domainSearch, sb.entity().getDomainId(), domainSearch.entity().getId(), JoinBuilder.JoinType.INNER);
15641564
}
15651565

1566-
SearchBuilder<AccountVO> accountSearch = _accountDao.createSearchBuilder();
1566+
SearchBuilder<AccountVO> accountSearch = _accountDao.createSearchBuilder();
15671567
accountSearch.and("typeNEQ", accountSearch.entity().getType(), SearchCriteria.Op.NEQ);
15681568
accountSearch.and("typeEQ", accountSearch.entity().getType(), SearchCriteria.Op.EQ);
15691569

1570-
sb.join("accountSearch", accountSearch, sb.entity().getAccountId(), accountSearch.entity().getId(), JoinBuilder.JoinType.INNER);
1570+
sb.join("accountSearch", accountSearch, sb.entity().getAccountId(), accountSearch.entity().getId(), JoinBuilder.JoinType.INNER);
15711571

15721572
List<NetworkVO> networksToReturn = new ArrayList<NetworkVO>();
15731573

@@ -1638,7 +1638,11 @@ public Pair<List<? extends Network>, Integer> searchForNetworks(ListNetworksCmd
16381638

16391639
networksToReturn = networksForDeploy;
16401640
}
1641-
1641+
return networksToReturn;
1642+
}
1643+
@Override
1644+
public Pair<List<? extends Network>, Integer> searchForNetworks(ListNetworksCmd cmd) {
1645+
List<? extends Network> networksToReturn = searchForAllNetworks(cmd);
16421646
//Now apply pagination
16431647
List<? extends Network> wPagination = StringUtils.applyPagination(networksToReturn, cmd.getStartIndex(), cmd.getPageSizeVal());
16441648
if (wPagination != null) {

server/test/com/cloud/vpc/MockNetworkManagerImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,11 @@ public Pair<List<? extends Network>, Integer> searchForNetworks(ListNetworksCmd
198198
return null;
199199
}
200200

201+
@Override
202+
public List<? extends Network> searchForAllNetworks(ListNetworksCmd cmd) {
203+
return null;
204+
}
205+
201206
/* (non-Javadoc)
202207
* @see com.cloud.network.NetworkService#deleteNetwork(long)
203208
*/

ui/scripts/loadbalancer.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@
295295
var networks = [];
296296
$(networkidslist).each(function() {
297297
$.ajax({
298-
url: createURL('listNetworks'),
298+
url: createURL('listGloboLbNetworks'),
299299
data: {
300300
id: this.valueOf()
301301
},
@@ -361,7 +361,7 @@
361361
select: function(args) {
362362
var networks = [];
363363
$.ajax({
364-
url: createURL("listNetworks"),
364+
url: createURL('listGloboLbNetworks'),
365365
data: {
366366
supportedservices: 'lb'
367367
},
@@ -1221,7 +1221,7 @@
12211221
select: function(args) {
12221222
var network;
12231223
$.ajax({
1224-
url: createURL("listNetworks"),
1224+
url: createURL('listGloboLbNetworks'),
12251225
data: {
12261226
id: lb.networkid
12271227
},
@@ -1461,7 +1461,7 @@
14611461
var networks = [];
14621462
var message;
14631463
$.ajax({
1464-
url: createURL("listNetworks"),
1464+
url: createURL('listGloboLbNetworks'),
14651465
data: {
14661466
supportedservices: 'lb'
14671467
},
@@ -1557,7 +1557,7 @@
15571557
select: function(args) {
15581558
var networks = [];
15591559
$.ajax({
1560-
url: createURL("listNetworks"),
1560+
url: createURL('listGloboLbNetworks'),
15611561
data: {
15621562
supportedservices: 'lb'
15631563
},
@@ -1586,7 +1586,7 @@
15861586
select: function(args) {
15871587
var network;
15881588
$.ajax({
1589-
url: createURL("listNetworks"),
1589+
url: createURL('listGloboLbNetworks'),
15901590
data: {
15911591
id: args.data.network
15921592
},
@@ -1632,7 +1632,7 @@
16321632
select: function(args) {
16331633
var network;
16341634
$.ajax({
1635-
url: createURL("listNetworks"),
1635+
url: createURL('listGloboLbNetworks'),
16361636
data: {
16371637
id: args.data.network
16381638
},
@@ -1725,7 +1725,7 @@
17251725
select: function(args) {
17261726
var network;
17271727
$.ajax({
1728-
url: createURL("listNetworks"),
1728+
url: createURL('listGloboLbNetworks'),
17291729
data: {
17301730
id: args.data.network
17311731
},
@@ -1840,7 +1840,7 @@
18401840

18411841
var network;
18421842
$.ajax({
1843-
url: createURL("listNetworks"),
1843+
url: createURL('listGloboLbNetworks'),
18441844
data: {
18451845
id: args.data.network
18461846
},

0 commit comments

Comments
 (0)