~ubuntu-branches/ubuntu/raring/nova/raring-proposed

« back to all changes in this revision

Viewing changes to nova/openstack/common/rpc/impl_qpid.py

  • Committer: Package Import Robot
  • Author(s): Adam Gandelman
  • Date: 2013-08-09 10:12:27 UTC
  • mfrom: (1.1.74)
  • Revision ID: package-import@ubuntu.com-20130809101227-4n60fzcgra8dzk3d
Tags: 1:2013.1.3-0ubuntu1
* Resynchronize with stable/grizzly (89c7ee4) (LP: #1210447):
  - [8e6edd2] Bump stable/grizzly next version to 2013.1.3
  - [61fc529] attach quantum security group to an existing vm failed
    LP: 1189059
  - [60774bd] nova-compute fails to start if quantum is down LP: 1186357
  - [8e6d4b6] asymmetric routes in nova network with external gateway and
    routing_source_ip LP: 1182143
  - [8849413] Failed VM's not set to error state on exception LP: 1182056
  - [ef10eee] Double healing of info_cache with cells LP: 1180304
  - [7422d83] Can't log into  VM after powervm is resized LP: 1169848
  - [49ab0e8] stack trace when instance_actions extension can not find
    instance in GET LP: 1182867
  - [e71247c] nova service-list returns illegal result with non db service
    heartbeat LP: 1168861
  - [3f60606] Volume IO usage gets reset to 0 after a reboot / crash
    LP: 1169097
  - [19c443b] unused method  list_interfaces in vmware driver can be removed
    LP: 1187251
  - [a8dab9f] No cleanup done when file transfer fails with powervm driver
    LP: 1173017
  - [fc98015] nova consoleauth depends on Conductor Service LP: 1186123
  - [1066418] VMware drivers are no longer passing quantum port-id to
    vCenter LP: 1183452
  - [b92075c] nova net-list fails on empty list with Quantum backend
    LP: 1189976
  - [3ba31f2] Create VM with no networks with Quantum Gives SecurityGroups
    Exception LP: 1191044
  - [89150b2] Periodic ValueErrors when using qpid LP: 1185465
  - [0e0d615] Libvirt pre-Grizzly instances cannot be block migrated
    LP: 1185588
  - [27960ef] ZMQ ipc socket file is created using un-sanitized network
    input LP: 1122763
  - [265b868] cannot block migrate old style instances libvirt complains
    LP: 1175286
  - [008a68a] code logical error exists in vmwareapi vif.py  LP: 1177635
  - [378c045] Instance IP addresses are re-used even when previous instance
    could not be powered off LP: 1180178
  - [48ddffe] Reboot of compute node breaks VMs with volumes LP: 1188326
  - [f427f01] Missing dashes from console-log LP: 1194032
  - [78ebf1a] network-create returns an internal error when network
    conflicts LP: 1158075
  - [767c850] Instance nics are reorder after reboot LP: 1187092
  - [0b45996] instance directory naming update to use uuid  LP: 1186944
  - [06cfad5] Disassociate failed dhcp fixed ip in deallocate_for_instance()
    method LP: 1180766
  - [cbcdfc5] Allow confirm_resize action on an instance in 'deleting'
    status LP: 1189391
  - [2563c44] aggregate_get_by_host returns aggregates from other hosts
    LP: 1201277
  - [109f3a9] nova libvirt driver requires iscsi initiator name regardless
    of using it in volume drivers LP: 1007084
  - [7f1c336] Host is always set to None in get_instance_nw_info(...)
    LP: 1194178
  - [1cf30a3] nova boot with colume should fail if the volume is already
    attached to another instance LP: 1166770
  - [9cb9361] Aggregate metadata filtering by key returns unrelated metadata
    LP: 1201283
  - [a61872b] Need clean up  ftp transfer faiure  in powervm driver
    LP: 1188884
  - [91bcd15] Race can cause soft deleted instance to be erased by mistake
    LP: 1186243
  - [c57fded] Nova fails to create a security group rule if ::0/0 is used as
    cidr LP: 1199943
  - [c698dd3] VMwareESXDriver and VMwareVCDriver report incorrect stat
    LP: 1180779
  - [e572faf] novnc fails when amqp_rpc_single_reply_queue=True LP: 1193031
  - [34ddd27] eventlet.monkey_patch() for spice and vnc proxy
  - [864837f] hypervisor_hostname not updated on evacuate LP: 1198284
  - [756a772] libvirt migrate/resize on shared storage can cause data loss
    LP: 1177247
  - [889b215] nova live-migration of volume-backed VM fails because of image
    is None LP: 1199811
  - [60712a4] VNC console does not work with VCDriver LP: 1178369
  - [e0aa0f5] metadata service throws error 500 when compute_driver is not
    set LP: 1184641
  - [340d337] Instance IP addresses are re-used even when previous instance
    could not be powered off LP: 1180178
  - [8247dc8] Resource limit circumvention in Nova private flavors
    (CVE-2013-2256) LP: 1194093
  - [bd7e467] Denial of Service in Nova network source security groups
    (CVE-2013-4185) LP: 1184041
  - [c3fddb7] Resize a VM when a volume is attached fails LP: 1190364
  - [01edbaa] Hyper-V versions before 2012 are not properly recognized
    LP: 1203059
  - [b18818a] driver libvirt doesn't honor vif quota LP: 1185030
  - [798984d] config drive not visible to windows LP: 1155842
  - [d18ceb1] nova live-migration failed due to exception.MigrationError
    LP: 1171526
  - [1934dbc] vmware Hyper for nova vnc console url parameters error
    LP: 1172177
  - [89c7ee4] [OSSA 2013-023] Potential unsafe XML usage (CVE-2013-4179,
    CVE-2013-4202) LP: 1190229
* debian/rules: Clean new setuptools-git cruft.
* debian/control: Update Vcs fields.

Show diffs side-by-side

added added

removed removed

Lines of Context:
69
69
 
70
70
cfg.CONF.register_opts(qpid_opts)
71
71
 
 
72
JSON_CONTENT_TYPE = 'application/json; charset=utf8'
 
73
 
72
74
 
73
75
class ConsumerBase(object):
74
76
    """Consumer base class."""
123
125
        self.receiver = session.receiver(self.address)
124
126
        self.receiver.capacity = 1
125
127
 
 
128
    def _unpack_json_msg(self, msg):
 
129
        """Load the JSON data in msg if msg.content_type indicates that it
 
130
           is necessary.  Put the loaded data back into msg.content and
 
131
           update msg.content_type appropriately.
 
132
 
 
133
        A Qpid Message containing a dict will have a content_type of
 
134
        'amqp/map', whereas one containing a string that needs to be converted
 
135
        back from JSON will have a content_type of JSON_CONTENT_TYPE.
 
136
 
 
137
        :param msg: a Qpid Message object
 
138
        :returns: None
 
139
        """
 
140
        if msg.content_type == JSON_CONTENT_TYPE:
 
141
            msg.content = jsonutils.loads(msg.content)
 
142
            msg.content_type = 'amqp/map'
 
143
 
126
144
    def consume(self):
127
145
        """Fetch the message and pass it to the callback object"""
128
146
        message = self.receiver.fetch()
129
147
        try:
 
148
            self._unpack_json_msg(message)
130
149
            msg = rpc_common.deserialize_msg(message.content)
131
150
            self.callback(msg)
132
151
        except Exception:
331
350
 
332
351
    def reconnect(self):
333
352
        """Handles reconnecting and re-establishing sessions and queues"""
334
 
        if self.connection.opened():
335
 
            try:
336
 
                self.connection.close()
337
 
            except qpid_exceptions.ConnectionError:
338
 
                pass
339
 
 
340
353
        attempt = 0
341
354
        delay = 1
342
355
        while True:
 
356
            # Close the session if necessary
 
357
            if self.connection.opened():
 
358
                try:
 
359
                    self.connection.close()
 
360
                except qpid_exceptions.ConnectionError:
 
361
                    pass
 
362
 
343
363
            broker = self.brokers[attempt % len(self.brokers)]
344
364
            attempt += 1
345
365
 
383
403
        """Close/release this connection"""
384
404
        self.cancel_consumer_thread()
385
405
        self.wait_on_proxy_callbacks()
386
 
        self.connection.close()
 
406
        try:
 
407
            self.connection.close()
 
408
        except Exception:
 
409
            # NOTE(dripton) Logging exceptions that happen during cleanup just
 
410
            # causes confusion; there's really nothing useful we can do with
 
411
            # them.
 
412
            pass
387
413
        self.connection = None
388
414
 
389
415
    def reset(self):