← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1794718] Re: Neutron VPNAAS don't update site connections on python3

 

Reviewed:  https://review.openstack.org/605783
Committed: https://git.openstack.org/cgit/openstack/neutron-vpnaas/commit/?id=3075f3c29854da23fdb436ebfb7099d2991d2be4
Submitter: Zuul
Branch:    master

commit 3075f3c29854da23fdb436ebfb7099d2991d2be4
Author: Viktor Krivak <viktor.krivak@xxxxxxxxxx>
Date:   Thu Sep 27 17:26:33 2018 +0200

    Call helper to convert bytes to str for Python3 in netns-wrapper
    
    Closes-Bug: #1794718
    
    Change-Id: I29ae5102ac9c29a5f6e63bae9a08004af620e27f


** Changed in: neutron
       Status: In Progress => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1794718

Title:
  Neutron VPNAAS don't update site connections on python3

Status in neutron:
  Fix Released

Bug description:
  Tested with StrongSwan but I hope this can cause issues on others
  drivers too.

  On python3 when new connection is created it's stuck in PENDING_CREATE
  state. Everything is working but connection state is never updated.
  Main reason is that agent send wrong id to server. On python3 message
  look like this:

  [{'updated_pending_status': False, 'ipsec_site_connections': {'a':
  {'updated_pending_status': False, 'status': 'ACTIVE'}}, 'status':
  'ACTIVE', 'id': 'a621a382-308d-4cd0-be0a-01c757064a13'},
  {'updated_pending_status': False, 'ipsec_site_connections': {'a':
  {'updated_pending_status': False, 'status': 'ACTIVE'}}, 'status':
  'ACTIVE', 'id': 'd004c466-cc36-4b6b-8aa3-84d7e45569ad'}]

  on python2

  [{'status': 'ACTIVE', 'ipsec_site_connections': {u'7e14400a-60df-48d8
  -91aa-ec97749555fc': {'status': 'ACTIVE', 'updated_pending_status':
  False}}, 'updated_pending_status': False, 'id': u'c903732e-
  67da-4363-baf1-0cdcb7476ee7'}, {'status': 'ACTIVE',
  'ipsec_site_connections': {u'70671513-e0cf-4bdf-845e-cb6ef084baea':
  {'status': 'ACTIVE', 'updated_pending_status': True}},
  'updated_pending_status': True, 'id': u'995ed22c-
  00c3-4496-b590-b84787ba6caa'}]

  Notice uid in ipsec_site_connections. Problem is that this uid is
  parsed from subprocess and on python3 this subprocess return bytes
  instead of string. Because of this whole output parsing i kind of
  screw up.

  We was able to fix this issue via patching netns_wrapper:

  
  diff --git a/neutron_vpnaas/services/vpn/common/netns_wrapper.py b/neutron_vpnaas/services/vpn/common/netns_wrapper.py
  index 77378dcc7..35614a717 100644
  --- a/neutron_vpnaas/services/vpn/common/netns_wrapper.py
  +++ b/neutron_vpnaas/services/vpn/common/netns_wrapper.py
  @@ -23,6 +23,7 @@ from neutron.common import utils
   from oslo_config import cfg
   from oslo_log import log as logging
   from oslo_rootwrap import wrapper
  +from neutron_lib.utils import helpers
   import six
   
   from neutron_vpnaas._i18n import _
  @@ -67,6 +68,8 @@ def execute(cmd):
                                    env=env)
   
       _stdout, _stderr = obj.communicate()
  +    _stdout = helpers.safe_decode_utf8(_stdout)
  +    _stderr = helpers.safe_decode_utf8(_stderr)
       msg = ('Command: %(cmd)s Exit code: %(returncode)s '
              'Stdout: %(stdout)s Stderr: %(stderr)s' %
              {'cmd': cmd,

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1794718/+subscriptions


References