1. 10 Feb, 2020 1 commit
  2. 03 Feb, 2020 1 commit
    • Maciej Józefczyk's avatar
      Fix for getting port groups while using OVS up to 2.9 · b60cfee4
      Maciej Józefczyk authored
      Functions get_port_group() and get_port_groups() were failing
      with KeyError while getting to access non-existent Port_Group
      table with OVS 2.9.
      
      This patch adds additional check if Port Group is supported in the
      env where the code runs.
      
      Change-Id: If3ce6ab1d1318a6d5142989b3bf45ecce97762e3
      Closes-Bug: #1844491
      (cherry picked from commit 4c42313b)
      b60cfee4
  3. 30 Jan, 2020 1 commit
    • Maciej Józefczyk's avatar
      Centralize traffic when LB and member has FIP · 57ac3892
      Maciej Józefczyk authored
      When Load Balancer and its member has FIP assigned
      and environment is configured to use DVR the member
      FIP needs to be centralized. It is current core OVN
      limitation, that should be solved in [1].
      
      This patch adds this mechanism to OVN Client and
      OVN Octavia provider driver.
      
      It covers cases:
      
      1) FIP association on port that is a member of
         some LB - make it centralized.
      2) FIP association on LB VIP - find a members
         FIPs and centralized them.
      3) Add a member to LB that has FIP already
         configured - checks if a member has FIP
         and centralize it.
      4) The reverse of each of the above cases.
      
      In addition I needed to extend OVN LB member external_id
      entry to add an information about member subnet_id
      in order to easly track member port from mechanism OVN
      driver.
      That means I needed also to support both old and new
      conventions. This patch adds also this code.
      
      Old convention:
      member_`member_id`_`ip_address`:`port`
      
      New convention:
      member_`member_id`_`ip_address`:`port`_`subnet_id`
      
      [1] https://bugzilla.redhat.com/show_bug.cgi?id=1793897
      
      Related-Bug: #1860662
      
      Change-Id: I254f0ac28f7585b699a8238e01ffb37dd70282ef
      57ac3892
  4. 28 Jan, 2020 2 commits
  5. 24 Jan, 2020 3 commits
  6. 23 Jan, 2020 3 commits
    • Maciej Józefczyk's avatar
      Don't fail if VIP already exist or has been deleted before · ed7adede
      Maciej Józefczyk authored
      Sometimes there is a race condition on creation of VIP port
      or deleting it that ends with exception and blocks LB stack
      creation / deletion.
      
      Because for now we don't have runnig master branch
      for OVN provider driver this change will be applied
      first on stable/train and then cherry-picked.
      
      Change-Id: I2aaae7c407caba7a57e2ca2d4ed524f3bb63953f
      Closes-Bug: #1860141
      ed7adede
    • Maciej Józefczyk's avatar
      [OVN] Delete NAT entry first on any FIP update · ba542715
      Maciej Józefczyk authored
      For now while updating FIP  check if port or logical_ip
      has changed and only then we deleted the NAT entry.
      
      Unfortunately each time when FIP update occurs the
      method _create_or_update_floatingip() is used. It first deletes
      LSP pointed by FIP and adds it again along with new NAT entries.
      Based on author comment this actions are required.
      
      So if we don't update FIP with logical_ip or new port_id,
      like update a description, the NAT entries gets duplicated.
      
      Since all is wrapped withing a transaction and to not wait for
      proper fix (this code need sa refactor based on commments with NAT
      external_id column) I think thats safe just to delete the NAT entry
      in such situation like described above.
      
      (cherry picked from commit 45ae9dfb7d5acacc72fcf9f071a9db1beb0ca972)
      
      Change-Id: Iea532e2a02b7992305d1b90aa040e064901c340c
      Related-Bug: #1859977
      ba542715
    • Zuul's avatar
  7. 22 Jan, 2020 1 commit
  8. 21 Jan, 2020 3 commits
    • Roman Safronov's avatar
      Use 'container image prepare' in prepare-migration · 88e965dc
      Roman Safronov authored
      The command 'openstack overcloud container image upload' is a
      deprecated command and has issues with latest releases.
      This patch replaces the above command with 'openstack tripleo
      container image prepare' which properly uploads container
      images to local repository.
      
      Change-Id: Ibe0dba6d76397a650d83238e4a6abc9f73e41465
      88e965dc
    • Maciej Józefczyk's avatar
      Fix py2 vs py3 dict keys comparison in functional test · da8d0669
      Maciej Józefczyk authored
      In just added functional test there is a bug in dict
      keys comparison. In python2 the dict keys are dumped to list that
      is unordered. This makes random gate failures.
      
      In py3 its dumped into dict_keys object that doesn't need
      to be sorted.
      
      Change-Id: I3aa7927b2eb0e9dd34935107835aa677fbcd1924
      da8d0669
    • Maciej Józefczyk's avatar
      Don't send malformed status update to Octavia · 69807753
      Maciej Józefczyk authored
      In some corner cases while updating a member, OVN
      Provider Driver sends a malformed status update
      to Octavia that breaks the update operation and
      resources stuck in PENDING_UPDATE state.
      
      In OVN while resource is administratively disabled
      we suffix its ID with string ':D'.
      This patch filters this string from resources ID
      before sending Octavia a status update.
      
      Because for now we don't have running master branch
      for OVN provider driver this change will be applied
      first on stable/train and then cherry-picked.
      
      Change-Id: Ib2ce04625faddd6ed263678bad2f4eb10929a520
      Closes-Bug: #1860140
      69807753
  9. 17 Jan, 2020 1 commit
  10. 16 Jan, 2020 3 commits
  11. 15 Jan, 2020 6 commits
    • Zuul's avatar
      d7a7387f
    • Maciej Józefczyk's avatar
      Don't fail in case subnet or Logical Switch not found · 9aa7edd7
      Maciej Józefczyk authored
      In case of subnet not found all the related actions could
      not be taken. This patch prevent this situation to happen.
      This could be possible that LB is going to be deleted after
      the subnet (for example remove of the LoadBalancer in Error
      state).
      
      The same could happend with Logical Switch. Sometimes the
      member network is delated in meantime and then we tries to
      the members. It means we would need to remove LB to LS and
      LB to LR associations, but it could not happend because of
      missing LS. In those terms now we just pass the flow
      and remove the LS to LR counters in external_ids.
      
      Change-Id: I44f6de4c9a2b1c6054417dbb7f647a6af8339660
      Closes-Bug: 1857009
      9aa7edd7
    • Maciej Józefczyk's avatar
      Cache OvnProviderHelper object in OvnProviderDriver · f57aa48d
      Maciej Józefczyk authored
      Every time when a request comes from Octavia API and
      is passed down to provider driver Octavia creates new
      instance of Provider driver. This is good approach
      while an API layer don't want to wait for previous API
      actions to be end first, if centralized driver approach
      will be used.
      
      On different angle we have OvnProviderDriver and its
      architecutre that was not created to work in dynamic
      threads environment, but has centralized design.
      Actual architecture looks like:
      
      OvnProviderDriver object starts OvnPrividerHelper object
      that manipulates OVN Databases. In OvnProviderHelper there is
      a Queue.Queue object that stores actions to be executed
      on databases with proper order. In addition OvnProviderHelper
      starts dedicated thread that picks up actions from Queue
      and execute those on OVN NorthBound database.
      
      That solution does not scale while using it with Octavia
      approach. There is a problem with thread leaking, because
      in OvnProviderHelper we don't stop runner thread and we thread
      it as daemon.
      
      In addition on each API call the OVN Driver and dependent
      components objects are created, this is big overhead.
      
      To mitigate those architectural issues there is a possibility
      to cache created OVNProviderHelper object and use one
      instance of it for one Octavia API worker process.
      
      This change must be cherry-picked to stable branches.
      
      As next steps OVNProvider driver should be decomposed to:
         * Provider Agent as described in [1]
         * Provider Driver without Queue mechanism
      
      [1] https://docs.openstack.org/octavia/latest/contributor/guides/providers.html#provider-agents
      
      Change-Id: Ifaed77bbe6c36a63c18e568ec1d6ec5450dc8e03
      Closes-Bug: 1856550
      f57aa48d
    • Zuul's avatar
    • Zuul's avatar
      b9bba261
    • Zuul's avatar
  12. 14 Jan, 2020 4 commits
  13. 10 Jan, 2020 1 commit
  14. 06 Jan, 2020 1 commit
  15. 03 Jan, 2020 1 commit
    • OpenStack Release Bot's avatar
      Update master for stable/train · 309dc9d1
      OpenStack Release Bot authored
      Add file to the reno documentation build to show release notes for
      stable/train.
      
      Use pbr instruction to increment the minor version number
      automatically so that master versions are higher than the versions on
      stable/train.
      
      Change-Id: I5807327737707a7c1057aa5b384c212d96faf7e0
      Sem-Ver: feature
      309dc9d1
  16. 19 Dec, 2019 1 commit
    • Lucas Alvares Gomes's avatar
      Only set "unknown" in LSP that makes sense · b5ca90fe
      Lucas Alvares Gomes authored
      
      
      Prior to this patch, the "unknown" address was being set the logical
      switch ports solely based on whether the port security was enabled or
      disabled. That's not how it's intended to work.
      
      With this patch the "unknown" address is only set to the normal logical
      switch ports, those which types are "router", "localnet" or "localport"
      won't be affected.
      
      The maintenance task was updated to correct this behavior for existing
      ports (the maintenance was suppose to be removed in the T cycle, this
      patch bumps it to U cycle instead due to this change).
      
      Closes-Bug: #1838535
      Related-Bug: #1815270
      Change-Id: I3c01bd7d1685c8a7e13a55e545e98baf19e9a0f9
      Signed-off-by: default avatarLucas Alvares Gomes <lucasagomes@gmail.com>
      (cherry picked from commit 6a89dbfe)
      b5ca90fe
  17. 18 Dec, 2019 1 commit
    • Flavio Fernandes's avatar
      Set binding profile directly from OVNTrunkDriver (redo cont.) · c418dd72
      Flavio Fernandes authored
      
      
      This is a tweak to changes done to fix bug 1834637. Specifically,
      this change addresses scaling. The previous gerrit change had
      modifications to all OVN sub-ports performed as a single
      transaction. That did not account for race-condition on neutron
      DB queries, which leads to timeouts under heavy loads.
      
      Another cleanup done by this change is to fold an additional
      update on neutron db into ovn trunk driver. That saves
      update from doing another database transaction, thus making
      it faster. The no longer needed function in mech_driver was
      called _update_subport_host_if_needed
      
      By breaking the iteration into multiple transactions, the
      change in time is marginal:
      
        Service-level agreement
        NeutronTrunks :: neutron.create_trunk
      
        from 34.2 sec to 35.6 for 50%ile
        from 35.6 sec to 36.1 for 95%ile
      
      This patch doesn't go to master as it's frozen now because of
      the code being merged to Neutron. The patch will be sent to master
      Neutron once code migration is finished.
      
      Change-Id: I7de3ac2a7cf8869ead8ab5fbb34a9861a96d3a0c
      Closes-Bug: #1834637
      Co-authored-by: default avatarMaciej Józefczyk <mjozefcz@redhat.com>
      c418dd72
  18. 17 Dec, 2019 1 commit
  19. 11 Dec, 2019 2 commits
  20. 10 Dec, 2019 1 commit
    • Jakub Libosvar's avatar
      tox: Pass OVN and OVS source directories · 0d603a7e
      Jakub Libosvar authored
      Some of networking-ovn functional tests inherit from ovsdbapp base
      class. ovsdbapp uses environment variables to define directories
      containing database schemas. This patch passes environment variable to
      tox if it's defined. If it's not defined, an empty string is used and
      code later uses its own defaults.
      
      This patch doesn't go to master as it's frozen now because of the code
      being merged to Neutron. The patch will be sent to master Neutron once
      code migration is finished.
      
      Change-Id: I5ccfc625352505c5b53f18e051e4d18598d5e286
      Closes-bug: #1855903
      0d603a7e
  21. 09 Dec, 2019 1 commit
  22. 06 Dec, 2019 1 commit