From 8edfbaca387efdd5f4bca3fa039448375daafe65 Mon Sep 17 00:00:00 2001 From: Garrett Holmstrom Date: Jan 27 2017 02:08:38 +0000 Subject: Merge branch 'f25' Conflicts: cloud-init.spec --- diff --git a/Delete-GCE-test-it-s-failing.patch b/Delete-GCE-test-it-s-failing.patch deleted file mode 100644 index 4f167b7..0000000 --- a/Delete-GCE-test-it-s-failing.patch +++ /dev/null @@ -1,176 +0,0 @@ -From 44b87ec7c3b948d1a32076e3d865b1a1de21d32e Mon Sep 17 00:00:00 2001 -From: Colin Walters -Date: Fri, 20 Jan 2017 17:35:08 +0000 -Subject: [PATCH] Delete GCE test, it's failing - ---- - tests/unittests/test_datasource/test_gce.py | 157 ---------------------------- - 1 file changed, 157 deletions(-) - delete mode 100644 tests/unittests/test_datasource/test_gce.py - -diff --git a/tests/unittests/test_datasource/test_gce.py b/tests/unittests/test_datasource/test_gce.py -deleted file mode 100644 -index 4f66767..0000000 ---- a/tests/unittests/test_datasource/test_gce.py -+++ /dev/null -@@ -1,157 +0,0 @@ --# Copyright (C) 2014 Vaidas Jablonskis --# --# Author: Vaidas Jablonskis --# --# This file is part of cloud-init. See LICENSE file for license information. -- --import re -- --from base64 import b64encode, b64decode --from six.moves.urllib_parse import urlparse -- --from cloudinit import helpers --from cloudinit import settings --from cloudinit.sources import DataSourceGCE -- --from .. import helpers as test_helpers -- --httpretty = test_helpers.import_httpretty() -- --GCE_META = { -- 'instance/id': '123', -- 'instance/zone': 'foo/bar', -- 'project/attributes/sshKeys': 'user:ssh-rsa AA2..+aRD0fyVw== root@server', -- 'instance/hostname': 'server.project-foo.local', -- 'instance/attributes/user-data': b'/bin/echo foo\n', --} -- --GCE_META_PARTIAL = { -- 'instance/id': '1234', -- 'instance/hostname': 'server.project-bar.local', -- 'instance/zone': 'bar/baz', --} -- --GCE_META_ENCODING = { -- 'instance/id': '12345', -- 'instance/hostname': 'server.project-baz.local', -- 'instance/zone': 'baz/bang', -- 'instance/attributes/user-data': b64encode(b'/bin/echo baz\n'), -- 'instance/attributes/user-data-encoding': 'base64', --} -- --HEADERS = {'X-Google-Metadata-Request': 'True'} --MD_URL_RE = re.compile( -- r'http://metadata.google.internal/computeMetadata/v1/.*') -- -- --def _set_mock_metadata(gce_meta=None): -- if gce_meta is None: -- gce_meta = GCE_META -- -- def _request_callback(method, uri, headers): -- url_path = urlparse(uri).path -- if url_path.startswith('/computeMetadata/v1/'): -- path = url_path.split('/computeMetadata/v1/')[1:][0] -- else: -- path = None -- if path in gce_meta: -- return (200, headers, gce_meta.get(path)) -- else: -- return (404, headers, '') -- -- httpretty.register_uri(httpretty.GET, MD_URL_RE, body=_request_callback) -- -- --@httpretty.activate --class TestDataSourceGCE(test_helpers.HttprettyTestCase): -- -- def setUp(self): -- self.ds = DataSourceGCE.DataSourceGCE( -- settings.CFG_BUILTIN, None, -- helpers.Paths({})) -- super(TestDataSourceGCE, self).setUp() -- -- def test_connection(self): -- _set_mock_metadata() -- success = self.ds.get_data() -- self.assertTrue(success) -- -- req_header = httpretty.last_request().headers -- self.assertDictContainsSubset(HEADERS, req_header) -- -- def test_metadata(self): -- _set_mock_metadata() -- self.ds.get_data() -- -- shostname = GCE_META.get('instance/hostname').split('.')[0] -- self.assertEqual(shostname, -- self.ds.get_hostname()) -- -- self.assertEqual(GCE_META.get('instance/id'), -- self.ds.get_instance_id()) -- -- self.assertEqual(GCE_META.get('instance/attributes/user-data'), -- self.ds.get_userdata_raw()) -- -- # test partial metadata (missing user-data in particular) -- def test_metadata_partial(self): -- _set_mock_metadata(GCE_META_PARTIAL) -- self.ds.get_data() -- -- self.assertEqual(GCE_META_PARTIAL.get('instance/id'), -- self.ds.get_instance_id()) -- -- shostname = GCE_META_PARTIAL.get('instance/hostname').split('.')[0] -- self.assertEqual(shostname, self.ds.get_hostname()) -- -- def test_metadata_encoding(self): -- _set_mock_metadata(GCE_META_ENCODING) -- self.ds.get_data() -- -- decoded = b64decode( -- GCE_META_ENCODING.get('instance/attributes/user-data')) -- self.assertEqual(decoded, self.ds.get_userdata_raw()) -- -- def test_missing_required_keys_return_false(self): -- for required_key in ['instance/id', 'instance/zone', -- 'instance/hostname']: -- meta = GCE_META_PARTIAL.copy() -- del meta[required_key] -- _set_mock_metadata(meta) -- self.assertEqual(False, self.ds.get_data()) -- httpretty.reset() -- -- def test_project_level_ssh_keys_are_used(self): -- _set_mock_metadata() -- self.ds.get_data() -- -- # we expect a list of public ssh keys with user names stripped -- self.assertEqual(['ssh-rsa AA2..+aRD0fyVw== root@server'], -- self.ds.get_public_ssh_keys()) -- -- def test_instance_level_ssh_keys_are_used(self): -- key_content = 'ssh-rsa JustAUser root@server' -- meta = GCE_META.copy() -- meta['instance/attributes/sshKeys'] = 'user:{0}'.format(key_content) -- -- _set_mock_metadata(meta) -- self.ds.get_data() -- -- self.assertIn(key_content, self.ds.get_public_ssh_keys()) -- -- def test_instance_level_keys_replace_project_level_keys(self): -- key_content = 'ssh-rsa JustAUser root@server' -- meta = GCE_META.copy() -- meta['instance/attributes/sshKeys'] = 'user:{0}'.format(key_content) -- -- _set_mock_metadata(meta) -- self.ds.get_data() -- -- self.assertEqual([key_content], self.ds.get_public_ssh_keys()) -- -- def test_only_last_part_of_zone_used_for_availability_zone(self): -- _set_mock_metadata() -- self.ds.get_data() -- self.assertEqual('bar', self.ds.availability_zone) -- --# vi: ts=4 expandtab --- -2.9.3 - diff --git a/cloud-init.spec b/cloud-init.spec index 54da458..dbcab1a 100644 --- a/cloud-init.spec +++ b/cloud-init.spec @@ -17,7 +17,7 @@ Patch0: cloud-init-0.7.8-fedora.patch # Fix rsyslog log filtering # https://code.launchpad.net/~gholms/cloud-init/rsyslog-programname/+merge/186906 -#Patch1: cloud-init-0.7.5-rsyslog-programname.patch +Patch1: cloud-init-0.7.5-rsyslog-programname.patch # Add 3 ecdsa-sha2-nistp* ssh key types now that they are standardized # https://bugzilla.redhat.com/show_bug.cgi?id=1151824 @@ -39,7 +39,6 @@ Patch11: cloud-init-0.7.8-nm-controlled.patch # Requires pylxd Patch12: tests-Neuter-lxd-testing.patch # Not debugged/upstreamed yet -Patch13: Delete-GCE-test-it-s-failing.patch Patch14: disable-failing-tests.patch BuildArch: noarch @@ -131,7 +130,12 @@ cp -p tools/21-cloudinit.conf $RPM_BUILD_ROOT/%{_sysconfdir}/rsyslog.d/21-cloudi %check -nosetests-%{python3_version} tests/unittests/ +# python-httpretty-0.8.14 broke several GCE tests +# https://github.com/gabrielfalcao/HTTPretty/issues/316 +nosetests-%{python3_version} tests/unittests/ \ + -e test_instance_level_keys_replace_project_level_keys \ + -e test_instance_level_ssh_keys_are_used \ + -e test_metadata_encoding %clean @@ -182,9 +186,13 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Fri Jan 27 2017 Garrett Holmstrom - 0.7.8-5 +- Re-applied rsyslog configuration fixes +- Disabled GCE tests broken by python-httpretty-0.8.14-1.20161011git70af1f8 +- Fixed systemd dependency loop for cloud-init.target [RH:1393094] + * Fri Jan 20 2017 Colin Walters - 0.7.9-1 -- New upstream version - Resolves: #1393094 +- New upstream version [RH:1393094] * Tue Dec 13 2016 Charalampos Stratakis - 0.7.8-4 - Rebuild for Python 3.6