Daan, 

Here is how it should look:

//1) Make all the checks that used to exist in original code + if DHCP
service is enabled on the network
if (vm.getType() == Type.User && network.getTrafficType() ==
TrafficType.Guest && isLastNicInSubnet(nic) && network.getGuestType() ==
GuestType.Shared &&
_networkModel.areServicesSupportedInNetwork(network.getId(),Service.Dhcp))
{
   
   //2) Now get the DHCP provider, and do the rest of the checks
   DhcpServiceProvider dhcpServiceProvider =
getDhcpServiceProvider(network);
   if (dhcpServiceProvider != null &&
isDhcpAccrossMultipleSubnetsSupported(dhcpServiceProvider)) {
      removeDhcpServiceInSubnet(nic);
  }
}



Could you please test it for 2 Shared networks - one with DHCP service,
and one w/o?

Thank you!
Alena.



On 2/7/14, 10:04 AM, "Daan Hoogland" <daan.hoogl...@gmail.com> wrote:

>H Alena,
>
>I am just trying to fix an old contribution that I applied as it
>seemed not to harm in a basic test. revert didn't work so I am looking
>for a quick remedy. The original patch does it for shared only. I
>don't care either way. Lets do the best thing.
>
>the code now
>
>        if (vm.getType() == Type.User
>                &&
>_networkModel.areServicesSupportedInNetwork(network.getId(),
>Service.Dhcp)
>                && network.getTrafficType() == TrafficType.Guest
>                && network.getGuestType() == GuestType.Shared) {
>            // remove the dhcpservice ip if this is the last nic in
>subnet.
>            DhcpServiceProvider dhcpServiceProvider =
>getDhcpServiceProvider(network);
>            if (dhcpServiceProvider != null
>                    &&
>isDhcpAccrossMultipleSubnetsSupported(dhcpServiceProvider)
>                    && isLastNicInSubnet(nic)) {
>                removeDhcpServiceInSubnet(nic);
>            }
>        }
>
>What do you sugest?
>
>        if (vm.getType() == Type.User
>                &&
>_networkModel.areServicesSupportedInNetwork(network.getId(),
>Service.Dhcp)) {
>            // remove the dhcpservice ip if this is the last nic in
>subnet.
>            DhcpServiceProvider dhcpServiceProvider =
>getDhcpServiceProvider(network);
>            if (dhcpServiceProvider != null
>                    &&
>isDhcpAccrossMultipleSubnetsSupported(dhcpServiceProvider)
>                    && isLastNicInSubnet(nic)
>                && network.getTrafficType() == TrafficType.Guest
>                && network.getGuestType() == GuestType.Shared) {
>                removeDhcpServiceInSubnet(nic);
>            }
>        }
>
>???
>
>On Fri, Feb 7, 2014 at 6:56 PM, Alena Prokharchyk
><alena.prokharc...@citrix.com> wrote:
>> Daan,
>>
>> 1) What is the reason you execute this code snippet just for Shared
>> networks?
>> 2) As I suggested in my prev email, before retrieving Dhcpprovider, you
>> should check if dhcp service is enabled on the network. Use method
>> areServicesSupportedInNetwork
>>  From NetworkModel to check that.
>>
>> -Alena.
>>
>> On 2/6/14, 10:04 PM, "Daan Hoogland" <daan.hoogl...@gmail.com> wrote:
>>
>>>Alena,
>>>
>>>The revert didn't apply. Would the folowing do the trick?
>>>
>>>        if (vm.getType() == Type.User
>>>                && network.getTrafficType() == TrafficType.Guest
>>>                && network.getGuestType() == GuestType.Shared) {
>>>            // remove the dhcpservice ip if this is the last nic in
>>>subnet.
>>>            DhcpServiceProvider dhcpServiceProvider =
>>>getDhcpServiceProvider(network);
>>>            if (dhcpServiceProvider != null
>>>                    &&
>>>isDhcpAccrossMultipleSubnetsSupported(dhcpServiceProvider)
>>>                    && isLastNicInSubnet(nic)) {
>>>                removeDhcpServiceInSubnet(nic);
>>>            }
>>>        }
>>>
>>>On Fri, Feb 7, 2014 at 6:55 AM, Daan Hoogland <daan.hoogl...@gmail.com>
>>>wrote:
>>>> second thought,
>>>>
>>>> Soheils mail bounces and the commit does not refer a ticket from jira.
>>>> I am going to revert. I should have been more vigilant. sorry.
>>>>
>>>> On Fri, Feb 7, 2014 at 6:49 AM, Daan Hoogland
>>>><daan.hoogl...@gmail.com>
>>>>wrote:
>>>>> will do Alena,
>>>>>
>>>>> thanks for the headsup
>>>>>
>>>>> On Thu, Feb 6, 2014 at 10:42 PM, Alena Prokharchyk
>>>>> <alena.prokharc...@citrix.com> wrote:
>>>>>> Soheil/Daan,
>>>>>>
>>>>>> The commit in the subject breaks network System vms destroy (VR,
>>>>>>SSVM,
>>>>>> CPVM), resulting in the network removal failures. Following line
>>>>>>replacement
>>>>>> causes the failure:
>>>>>>
>>>>>> - if (vm.getType() == Type.User &&
>>>>>> isDhcpAccrossMultipleSubnetsSupported(network) &&
>>>>>>isLastNicInSubnet(nic) &&
>>>>>> network.getTrafficType() == TrafficType.Guest
>>>>>>
>>>>>> With
>>>>>>
>>>>>> +        DhcpServiceProvider dhcpServiceProvider =
>>>>>> getDhcpServiceProvider(network);
>>>>>>
>>>>>>
>>>>>> When you try to call getDhcpServiceProvider(network), it throws an
>>>>>>exception
>>>>>> because DHCP service is not enabled in Public/Control networks of
>>>>>>system vms
>>>>>> nics. So system vm always fails to expunge.
>>>>>>
>>>>>> Could you please fix it by checking if DHCP service is enabled on
>>>>>>the
>>>>>> network, before getting the DHCP service provider?
>>>>>>
>>>>>> Thanks,
>>>>>> Alena.
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Daan
>>>>
>>>>
>>>>
>>>> --
>>>> Daan
>>>
>>>
>>>
>>>--
>>>Daan
>>
>
>
>
>-- 
>Daan

Reply via email to