|
19 | 19 |
|
20 | 20 | package com.cloud.util; |
21 | 21 |
|
| 22 | +import java.util.HashSet; |
| 23 | +import java.util.Iterator; |
| 24 | +import java.util.List; |
| 25 | +import java.util.Map; |
| 26 | +import java.util.Set; |
| 27 | +import java.util.TreeSet; |
| 28 | + |
| 29 | +import javax.annotation.Nullable; |
| 30 | +import javax.inject.Inject; |
| 31 | + |
| 32 | +import org.apache.cloudstack.framework.config.dao.ConfigurationDao; |
| 33 | +import org.apache.commons.lang.StringUtils; |
| 34 | +import org.apache.log4j.Logger; |
| 35 | + |
22 | 36 | import com.cloud.dc.Vlan; |
23 | 37 | import com.cloud.dc.VlanVO; |
24 | 38 | import com.cloud.dc.dao.VlanDao; |
|
57 | 71 | import com.google.common.collect.Iterables; |
58 | 72 | import com.google.common.collect.Lists; |
59 | 73 | import com.google.common.collect.Maps; |
| 74 | + |
60 | 75 | import net.nuage.vsp.acs.client.api.model.VspAclRule; |
61 | | -import net.nuage.vsp.acs.client.api.model.VspDhcpDomainOption; |
62 | 76 | import net.nuage.vsp.acs.client.api.model.VspAddressRange; |
| 77 | +import net.nuage.vsp.acs.client.api.model.VspDhcpDomainOption; |
63 | 78 | import net.nuage.vsp.acs.client.api.model.VspDhcpVMOption; |
64 | 79 | import net.nuage.vsp.acs.client.api.model.VspDomain; |
65 | 80 | import net.nuage.vsp.acs.client.api.model.VspDomainCleanUp; |
|
68 | 83 | import net.nuage.vsp.acs.client.api.model.VspStaticNat; |
69 | 84 | import net.nuage.vsp.acs.client.api.model.VspVm; |
70 | 85 | import net.nuage.vsp.acs.client.common.model.Pair; |
71 | | -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; |
72 | | -import org.apache.commons.lang.StringUtils; |
73 | | -import org.apache.log4j.Logger; |
74 | | - |
75 | | -import javax.annotation.Nullable; |
76 | | -import javax.inject.Inject; |
77 | | -import java.util.HashSet; |
78 | | -import java.util.Iterator; |
79 | | -import java.util.List; |
80 | | -import java.util.Map; |
81 | | -import java.util.Set; |
82 | | -import java.util.TreeSet; |
83 | 86 |
|
84 | 87 | public class NuageVspEntityBuilder { |
85 | 88 | private static final Logger s_logger = Logger.getLogger(NuageVspEntityBuilder.class); |
@@ -380,25 +383,30 @@ private VspNic buildVspNic(String uuid, String macAddress, String ip, long netwo |
380 | 383 | return vspNicBuilder.build(); |
381 | 384 | } |
382 | 385 |
|
383 | | - public VspStaticNat buildVspStaticNat(Boolean forRevoke, IPAddressVO staticNatIp, VlanVO staticNatVlan, NicVO nic) { |
| 386 | + public VspStaticNat buildVspStaticNat(Boolean forRevoke, IPAddressVO staticNatIp, VlanVO staticNatVlan, VspNic vspNic) { |
384 | 387 | VspStaticNat.Builder vspStaticNatBuilder = new VspStaticNat.Builder() |
385 | 388 | .ipUuid(staticNatIp.getUuid()) |
386 | 389 | .ipAddress(staticNatIp.getAddress().addr()) |
387 | 390 | .revoke(forRevoke) |
388 | 391 | .oneToOneNat(staticNatIp.isOneToOneNat()) |
| 392 | + .state(getEnumValue(staticNatIp.getState(), VspStaticNat.State.class)) |
389 | 393 | .vlanUuid(staticNatVlan.getUuid()) |
390 | 394 | .vlanGateway(staticNatVlan.getVlanGateway()) |
391 | 395 | .vlanNetmask(staticNatVlan.getVlanNetmask()) |
392 | 396 | .vlanUnderlay(NuageVspUtil.isUnderlayEnabledForVlan(_vlanDetailsDao, staticNatVlan)); |
393 | 397 |
|
394 | | - if (nic != null) { |
395 | | - VspNic vspNic = buildVspNic(nic); |
| 398 | + if (vspNic != null) { |
396 | 399 | vspStaticNatBuilder.nic(vspNic); |
397 | 400 | } |
398 | 401 |
|
399 | 402 | return vspStaticNatBuilder.build(); |
400 | 403 | } |
401 | 404 |
|
| 405 | + public VspStaticNat buildVspStaticNat(Boolean forRevoke, IPAddressVO staticNatIp, VlanVO staticNatVlan, NicVO nic) { |
| 406 | + VspNic vspNic = (nic != null) ?buildVspNic(nic) : null; |
| 407 | + return buildVspStaticNat(forRevoke, staticNatIp, staticNatVlan, vspNic); |
| 408 | + } |
| 409 | + |
402 | 410 | public VspAclRule buildVspAclRule(FirewallRule firewallRule, Network network) { |
403 | 411 | VspAclRule.Builder vspAclRuleBuilder = new VspAclRule.Builder() |
404 | 412 | .uuid(firewallRule.getUuid()) |
@@ -506,4 +514,20 @@ public VspDhcpDomainOption buildNetworkDhcpOption(Network network, NetworkOfferi |
506 | 514 |
|
507 | 515 | return vspDhcpDomainBuilder.build(); |
508 | 516 | } |
| 517 | + |
| 518 | + private <E extends Enum<E>> E getEnumValue(Enum cloudstackValue, Class<E> target) { |
| 519 | + try { |
| 520 | + return Enum.valueOf(target, cloudstackValue.name()); |
| 521 | + } catch (IllegalArgumentException e) { |
| 522 | + return null; |
| 523 | + } |
| 524 | + } |
| 525 | + |
| 526 | + private <E extends Enum<E>> E getEnumValue(Enum cloudstackValue, E defaultValue) { |
| 527 | + try { |
| 528 | + return Enum.valueOf(defaultValue.getDeclaringClass(), cloudstackValue.name()); |
| 529 | + } catch (IllegalArgumentException e) { |
| 530 | + return defaultValue; |
| 531 | + } |
| 532 | + } |
509 | 533 | } |
0 commit comments