예제 #1
0
 def _get_ds(self, ovfcontent=None):
     if ovfcontent is not None:
         populate_dir(os.path.join(self.paths.seed_dir, "azure"),
                      {'ovf-env.xml': ovfcontent})
     return DataSourceAzure.DataSourceAzureNet({},
                                               distro=None,
                                               paths=self.paths)
예제 #2
0
 def _get_ds(self, ovfcontent=None, agent_command=None):
     if ovfcontent is not None:
         populate_dir(os.path.join(self.paths.seed_dir, "azure"),
                      {'ovf-env.xml': ovfcontent})
     dsrc = dsaz.DataSourceAzureNet({}, distro=None, paths=self.paths)
     if agent_command is not None:
         dsrc.ds_cfg['agent_command'] = agent_command
     return dsrc
예제 #3
0
    def _get_ds(self, data, agent_command=None):
        def dsdevs():
            return data.get('dsdevs', [])

        def _invoke_agent(cmd):
            data['agent_invoked'] = cmd

        def _wait_for_files(flist, _maxwait=None, _naplen=None):
            data['waited'] = flist
            return []

        def _pubkeys_from_crt_files(flist):
            data['pubkey_files'] = flist
            return ["pubkey_from: %s" % f for f in flist]

        if data.get('ovfcontent') is not None:
            populate_dir(os.path.join(self.paths.seed_dir, "azure"),
                         {'ovf-env.xml': data['ovfcontent']})

        dsaz.BUILTIN_DS_CONFIG['data_dir'] = self.waagent_d

        self.get_metadata_from_fabric = mock.MagicMock(return_value={
            'public-keys': [],
        })

        self.instance_id = 'test-instance-id'

        def _dmi_mocks(key):
            if key == 'system-uuid':
                return self.instance_id
            elif key == 'chassis-asset-tag':
                return '7783-7084-3265-9085-8269-3286-77'

        self.apply_patches([
            (dsaz, 'list_possible_azure_ds_devs', dsdevs),
            (dsaz, 'invoke_agent', _invoke_agent),
            (dsaz, 'wait_for_files', _wait_for_files),
            (dsaz, 'pubkeys_from_crt_files', _pubkeys_from_crt_files),
            (dsaz, 'perform_hostname_bounce', mock.MagicMock()),
            (dsaz, 'get_hostname', mock.MagicMock()),
            (dsaz, 'set_hostname', mock.MagicMock()),
            (dsaz, 'get_metadata_from_fabric', self.get_metadata_from_fabric),
            (dsaz.util, 'read_dmi_data',
             mock.MagicMock(side_effect=_dmi_mocks)),
        ])

        dsrc = dsaz.DataSourceAzureNet(data.get('sys_cfg', {}),
                                       distro=None,
                                       paths=self.paths)
        if agent_command is not None:
            dsrc.ds_cfg['agent_command'] = agent_command

        return dsrc
예제 #4
0
    def test_non_azure_dmi_chassis_asset_tag(self, m_read_dmi_data):
        """Report non-azure when DMI's chassis asset tag doesn't match.

        Return False when the asset tag doesn't match Azure's static
        AZURE_CHASSIS_ASSET_TAG.
        """
        # Return a non-matching asset tag value
        nonazure_tag = dsaz.AZURE_CHASSIS_ASSET_TAG + 'X'
        m_read_dmi_data.return_value = nonazure_tag
        dsrc = dsaz.DataSourceAzureNet({}, distro=None, paths=self.paths)
        self.assertFalse(dsrc.get_data())
        self.assertEqual(
            "Non-Azure DMI asset tag '{0}' discovered.\n".format(nonazure_tag),
            self.logs.getvalue())