Alena,

I added unit tests and made a review request for you, 
https://reviews.apache.org/r/17872/

I have a question though. I can see some small the semantic differnce between 
the following two snippits but is only in the evaluation order of the 
conditions under which to execute, not in the logic.  So what is the importance 
of using your version? (just curious)

<mine>
       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);
           }
       }
</mine>

<yours>
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);
}
}
</yours>

On Fri, Feb 7, 2014 at 8:30 PM, Daan Hoogland <daan.hoogl...@gmail.com> wrote:
> 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



-- 
Daan

On Fri, Feb 7, 2014 at 8:30 PM, Daan Hoogland <daan.hoogl...@gmail.com> wrote:
> 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



-- 
Daan

Reply via email to