~corey.bryant/ubuntu/trusty/neutron/lp1318721

« back to all changes in this revision

Viewing changes to neutron/agent/linux/interface.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short, Corey Bryant
  • Date: 2014-10-06 09:15:06 UTC
  • mfrom: (28.1.4 trusty-proposed)
  • Revision ID: package-import@ubuntu.com-20141006091506-cesvev43moce4y74
Tags: 1:2014.1.3-0ubuntu1
[ Corey Bryant ]
* Resynchronize with stable/icehouse (4a0210e) (LP: #1377136):
  - [3a30d19] Deletes floating ip related connection states
  - [dd4b77f] Forbid regular users to reset admin-only attrs to default values
  - [dc2c893] Add delete operations for the ODL MechanismDriver
  - [b51e2c7] Add missing ml2 plugin to migration 1fcfc149aca4
  - [a17a500] Don't convert numeric protocol values to int
  - [3a85946] NSX: Optionally not enforce nat rule match length check
  - [645f984] Don't spawn metadata-proxy for non-isolated nets
  - [b464d89] Big Switch: Check for 'id' in port before lookup
  - [3116ffa] use TRUE in SQL for boolean var
  - [3520e66] call security_groups_member_updated in port_update
  - [50e1534] Don't allow user to set firewall rule with port and no protocol
  - [0061533] BSN: Add context to backend request for debugging
  - [6de6d61] Improve ODL ML2 Exception Handling
  - [2a4153d] Send network name and uuid to subnet create
  - [b5e3c9a] BSN: Allow concurrent reads to consistency DB
  - [b201432] Big Switch: Retry on 503 errors from backend
  - [f6c47ee] NSX: log request body to NSX as debug
  - [97d622a] Fix metadata agent's auth info caching
  - [255df45] NSX: Correct allowed_address_pair return value on create_port
  - [5bea041] Neutron should not use the neutronclient utils module for import_class
  - [d5314e2] Cisco N1kv plugin to send subtype on network profile creation
  - [f32d1ce] Pass object to policy when finding fields to strip
  - [8b5f6be] Call policy.init() once per API request
  - [9a6d811] Perform policy checks only once on list responses
  - [c48db90] Datacenter moid should not be tuple
  - [161d465] Allow unsharing a network used as gateway/floatingip
  - [9574a2f] Add support for router scheduling in Cisco N1kv Plugin
  - [6f54565] Fix func job hook script permission problems
  - [ea43103] Add hook scripts for the functional infra job
  - [8161cb7] Fixes Hyper-V agent issue on Hyper-V 2008 R2
  - [8e99cfd] Fixes Hyper-V issue due to ML2 RPC versioning
  - [69f9121] Ensure ip6tables are used only if ipv6 is enabled in kernel
  - [399b809] Remove explicit dependency on amqplib
  - [a872143] Clear entries in Cisco N1KV specific tables on rollback
  - [ad82fad] Verify ML2 type driver exists before calling del
  - [af2cc98] Big Switch: Only update hash header on success
  - [b1e5eec] Ignore variable column widths in ovsdb functional tests
  - [4a0210e] VMWare: don't notify on disassociate_floatingips()

Show diffs side-by-side

added added

removed removed

Lines of Context:
100
100
        for ip_cidr, ip_version in previous.items():
101
101
            if ip_cidr not in preserve_ips:
102
102
                device.addr.delete(ip_version, ip_cidr)
 
103
                self.delete_conntrack_state(root_helper=self.root_helper,
 
104
                                            namespace=namespace,
 
105
                                            ip=ip_cidr)
 
106
 
 
107
    def delete_conntrack_state(self, root_helper, namespace, ip):
 
108
        """Delete conntrack state associated with an IP address.
 
109
 
 
110
        This terminates any active connections through an IP.  Call this soon
 
111
        after removing the IP address from an interface so that new connections
 
112
        cannot be created before the IP address is gone.
 
113
 
 
114
        root_helper: root_helper to gain root access to call conntrack
 
115
        namespace: the name of the namespace where the IP has been configured
 
116
        ip: the IP address for which state should be removed.  This can be
 
117
            passed as a string with or without /NN.  A netaddr.IPAddress or
 
118
            netaddr.Network representing the IP address can also be passed.
 
119
        """
 
120
        ip_str = str(netaddr.IPNetwork(ip).ip)
 
121
        ip_wrapper = ip_lib.IPWrapper(root_helper, namespace=namespace)
 
122
 
 
123
        # Delete conntrack state for ingress traffic
 
124
        # If 0 flow entries have been deleted
 
125
        # conntrack -D will return 1
 
126
        try:
 
127
            ip_wrapper.netns.execute(["conntrack", "-D", "-d", ip_str],
 
128
                                     check_exit_code=True,
 
129
                                     extra_ok_codes=[1])
 
130
 
 
131
        except RuntimeError:
 
132
            LOG.exception(_("Failed deleting ingress connection state of"
 
133
                            " floatingip %s"), ip_str)
 
134
 
 
135
        # Delete conntrack state for egress traffic
 
136
        try:
 
137
            ip_wrapper.netns.execute(["conntrack", "-D", "-q", ip_str],
 
138
                                     check_exit_code=True,
 
139
                                     extra_ok_codes=[1])
 
140
        except RuntimeError:
 
141
            LOG.exception(_("Failed deleting egress connection state of"
 
142
                            " floatingip %s"), ip_str)
103
143
 
104
144
    def check_bridge_exists(self, bridge):
105
145
        if not ip_lib.device_exists(bridge):