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" <[email protected]> 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
><[email protected]> 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" <[email protected]> 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 <[email protected]>
>>>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
>>>><[email protected]>
>>>>wrote:
>>>>> will do Alena,
>>>>>
>>>>> thanks for the headsup
>>>>>
>>>>> On Thu, Feb 6, 2014 at 10:42 PM, Alena Prokharchyk
>>>>> <[email protected]> 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