def test_local_datasource_uses_ephemeral_dhcp(self, _m_fallback, m_dhcp):
     _set_mock_metadata()
     ds = DataSourceGCE.DataSourceGCELocal(sys_cfg={},
                                           distro=None,
                                           paths=None)
     ds._get_data()
     assert m_dhcp.call_count == 1
Esempio n. 2
0
    def test_has_expired(self):

        def _get_timestamp(days):
            format_str = '%Y-%m-%dT%H:%M:%S+0000'
            today = datetime.datetime.now()
            timestamp = today + datetime.timedelta(days=days)
            return timestamp.strftime(format_str)

        past = _get_timestamp(-1)
        future = _get_timestamp(1)
        ssh_keys = {
            None: False,
            '': False,
            'Invalid': False,
            'user:ssh-rsa key [email protected]': False,
            'user:ssh-rsa key google {"expireOn":"%s"}' % past: False,
            'user:ssh-rsa key google-ssh': False,
            'user:ssh-rsa key google-ssh {invalid:json}': False,
            'user:ssh-rsa key google-ssh {"userName":"******"}': False,
            'user:ssh-rsa key google-ssh {"expireOn":"invalid"}': False,
            'user:xyz key google-ssh {"expireOn":"%s"}' % future: False,
            'user:xyz key google-ssh {"expireOn":"%s"}' % past: True,
        }

        for key, expired in ssh_keys.items():
            self.assertEqual(DataSourceGCE._has_expired(key), expired)
Esempio n. 3
0
 def setUp(self):
     self.ds = DataSourceGCE.DataSourceGCE(settings.CFG_BUILTIN, None,
                                           helpers.Paths({}))
     ppatch = self.m_platform_reports_gce = mock.patch(
         'cloudinit.sources.DataSourceGCE.platform_reports_gce')
     self.m_platform_reports_gce = ppatch.start()
     self.m_platform_reports_gce.return_value = True
     self.addCleanup(ppatch.stop)
     super(TestDataSourceGCE, self).setUp()
 def setUp(self):
     tmp = self.tmp_dir()
     self.ds = DataSourceGCE.DataSourceGCE(settings.CFG_BUILTIN, None,
                                           helpers.Paths({"run_dir": tmp}))
     ppatch = self.m_platform_reports_gce = mock.patch(
         "cloudinit.sources.DataSourceGCE.platform_reports_gce")
     self.m_platform_reports_gce = ppatch.start()
     self.m_platform_reports_gce.return_value = True
     self.addCleanup(ppatch.stop)
     self.add_patch("time.sleep", "m_sleep")  # just to speed up tests
     super(TestDataSourceGCE, self).setUp()
Esempio n. 5
0
 def test_parse_public_keys_non_ascii(self):
     public_key_data = [
         'cloudinit:rsa ssh-ke%s invalid' % chr(165),
         'use%sname:rsa ssh-key' % chr(174),
         'cloudinit:test 1',
         'default:test 2',
         'user:test 3',
     ]
     expected = ['test 1', 'test 2']
     found = DataSourceGCE._parse_public_keys(
         public_key_data, default_user='******')
     self.assertEqual(sorted(found), sorted(expected))
 def test_parse_public_keys_non_ascii(self):
     public_key_data = [
         "cloudinit:rsa ssh-ke%s invalid" % chr(165),
         "use%sname:rsa ssh-key" % chr(174),
         "cloudinit:test 1",
         "default:test 2",
         "user:test 3",
     ]
     expected = ["test 1", "test 2"]
     found = DataSourceGCE._parse_public_keys(public_key_data,
                                              default_user="******")
     self.assertEqual(sorted(found), sorted(expected))
    def test_default_user_ssh_keys(self, mock_ug_util):
        mock_ug_util.normalize_users_groups.return_value = None, None
        mock_ug_util.extract_default.return_value = "ubuntu", None
        ubuntu_ds = DataSourceGCE.DataSourceGCE(
            settings.CFG_BUILTIN,
            self._make_distro("ubuntu"),
            helpers.Paths({"run_dir": self.tmp_dir()}),
        )

        valid_key = "ssh-rsa VALID {0}"
        invalid_key = "ssh-rsa INVALID {0}"
        project_attributes = {
            "sshKeys":
            "\n".join([
                "ubuntu:{0}".format(valid_key.format(0)),
                "user:{0}".format(invalid_key.format(0)),
            ]),
            "ssh-keys":
            "\n".join([
                "ubuntu:{0}".format(valid_key.format(1)),
                "user:{0}".format(invalid_key.format(1)),
            ]),
        }
        instance_attributes = {
            "ssh-keys":
            "\n".join([
                "ubuntu:{0}".format(valid_key.format(2)),
                "user:{0}".format(invalid_key.format(2)),
            ]),
            "block-project-ssh-keys":
            "False",
        }

        meta = GCE_META.copy()
        meta["project/attributes"] = project_attributes
        meta["instance/attributes"] = instance_attributes

        _set_mock_metadata(meta)
        ubuntu_ds.get_data()

        expected = [valid_key.format(key) for key in range(3)]
        self.assertEqual(set(expected), set(ubuntu_ds.get_public_ssh_keys()))
Esempio n. 8
0
    def test_default_user_ssh_keys(self, mock_ug_util):
        mock_ug_util.normalize_users_groups.return_value = None, None
        mock_ug_util.extract_default.return_value = 'ubuntu', None
        ubuntu_ds = DataSourceGCE.DataSourceGCE(
            settings.CFG_BUILTIN, self._make_distro('ubuntu'),
            helpers.Paths({'run_dir': self.tmp_dir()}))

        valid_key = 'ssh-rsa VALID {0}'
        invalid_key = 'ssh-rsa INVALID {0}'
        project_attributes = {
            'sshKeys':
            '\n'.join([
                'ubuntu:{0}'.format(valid_key.format(0)),
                'user:{0}'.format(invalid_key.format(0)),
            ]),
            'ssh-keys':
            '\n'.join([
                'ubuntu:{0}'.format(valid_key.format(1)),
                'user:{0}'.format(invalid_key.format(1)),
            ]),
        }
        instance_attributes = {
            'ssh-keys':
            '\n'.join([
                'ubuntu:{0}'.format(valid_key.format(2)),
                'user:{0}'.format(invalid_key.format(2)),
            ]),
            'block-project-ssh-keys':
            'False',
        }

        meta = GCE_META.copy()
        meta['project/attributes'] = project_attributes
        meta['instance/attributes'] = instance_attributes

        _set_mock_metadata(meta)
        ubuntu_ds.get_data()

        expected = [valid_key.format(key) for key in range(3)]
        self.assertEqual(set(expected), set(ubuntu_ds.get_public_ssh_keys()))
Esempio n. 9
0
 def setUp(self):
     self.ds = DataSourceGCE.DataSourceGCE(
         settings.CFG_BUILTIN, None,
         helpers.Paths({}))
     super(TestDataSourceGCE, self).setUp()
 def test_datasource_doesnt_use_ephemeral_dhcp(self, m_dhcp):
     _set_mock_metadata()
     ds = DataSourceGCE.DataSourceGCE(sys_cfg={}, distro=None, paths=None)
     ds._get_data()
     assert m_dhcp.call_count == 0