sure, will try to find a spot asap. and write unit tests to simulate
those two situations.

On Fri, Feb 7, 2014 at 7:20 PM, Alena Prokharchyk
<alena.prokharc...@citrix.com> wrote:
> 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
>



-- 
Daan

Reply via email to