summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLianhao Lu <lianhao.lu@intel.com>2015-03-27 14:53:09 +0800
committerLianhao Lu <lianhao.lu@intel.com>2015-03-27 16:53:06 +0800
commit9dbbff5fb46811855b105e5db8b7750e2c519072 (patch)
tree00487c057e157294675954eb31dc6441b8beef20
parente14a4edc81c365a84289d72f34703eff03a37e8b (diff)
downloadceilometer-9dbbff5fb46811855b105e5db8b7750e2c519072.tar.gz
Added ipv6 support for udp publisher
Change-Id: Ibbae6c2513ff197aa1a1e66c875f9e0ee8840f63 Closes-Bug: #1436687
-rw-r--r--ceilometer/publisher/udp.py6
-rw-r--r--ceilometer/tests/publisher/test_udp.py15
2 files changed, 20 insertions, 1 deletions
diff --git a/ceilometer/publisher/udp.py b/ceilometer/publisher/udp.py
index 718161f0..4320b39a 100644
--- a/ceilometer/publisher/udp.py
+++ b/ceilometer/publisher/udp.py
@@ -38,7 +38,11 @@ class UDPPublisher(publisher.PublisherBase):
self.host, self.port = netutils.parse_host_port(
parsed_url.netloc,
default_port=cfg.CONF.collector.udp_port)
- self.socket = socket.socket(socket.AF_INET,
+ if netutils.is_valid_ipv6(self.host):
+ addr_family = socket.AF_INET6
+ else:
+ addr_family = socket.AF_INET
+ self.socket = socket.socket(addr_family,
socket.SOCK_DGRAM)
def publish_samples(self, context, samples):
diff --git a/ceilometer/tests/publisher/test_udp.py b/ceilometer/tests/publisher/test_udp.py
index 0f6ad059..0461fa85 100644
--- a/ceilometer/tests/publisher/test_udp.py
+++ b/ceilometer/tests/publisher/test_udp.py
@@ -16,6 +16,7 @@
"""
import datetime
+import socket
import mock
import msgpack
@@ -112,6 +113,20 @@ class TestUDPPublisher(base.BaseTestCase):
self.CONF = self.useFixture(fixture_config.Config()).conf
self.CONF.publisher.telemetry_secret = 'not-so-secret'
+ def _check_udp_socket(self, url, expected_addr_family):
+ with mock.patch.object(socket, 'socket') as mock_socket:
+ udp.UDPPublisher(netutils.urlsplit(url))
+ mock_socket.assert_called_with(expected_addr_family,
+ socket.SOCK_DGRAM)
+
+ def test_publisher_udp_socket_ipv4(self):
+ self._check_udp_socket('udp://127.0.0.1:4952',
+ socket.AF_INET)
+
+ def test_publisher_udp_socket_ipv6(self):
+ self._check_udp_socket('udp://[::1]:4952',
+ socket.AF_INET6)
+
def test_published(self):
self.data_sent = []
with mock.patch('socket.socket',