def test_session_on_slave_node_using_host_ip(self, mock_gethostbyname, mock_login, mock_version_and_brand, mock_create_session, mock_platform_version, mock_verify_plugin_version): sess = mock.Mock() fake_records = {'fake_PIF_ref': {'host': 'fake_host_ref'}} sess.xenapi.PIF.get_all_records_where.return_value = fake_records sess.xenapi.host.get_uuid.return_value = 'fake_host_uuid' side_effects = [XenAPI.Failure(['HOST_IS_SLAVE', 'fake_master_url']), sess, sess, sess] mock_login.side_effect = side_effects concurrent = 2 originator = 'os-xenapi-nova' timeout = 10 mock_version_and_brand.return_value = ('6.5', 'XenServer') mock_platform_version.return_value = (2, 1, 0) fake_url = 'http://0.0.0.0' fake_ip = '0.0.0.0' xenapi_sess = session.XenAPISession(fake_url, 'username', 'password', originator=originator, concurrent=concurrent, timeout=timeout) self.assertTrue(xenapi_sess.is_slave) mock_gethostbyname.assert_called_with(fake_ip) self.assertEqual('fake_host_ref', xenapi_sess.host_ref) self.assertEqual('fake_host_uuid', xenapi_sess.host_uuid) self.assertEqual('http://fake_master_url', xenapi_sess.master_url) self.assertEqual(fake_url, xenapi_sess.url)
def test_session_nova_originator(self, mock_gethostbyname, mock_version_and_brand, mock_create_session, mock_platform_version, mock_verify_plugin_version): concurrent = 2 originator = 'os-xenapi-nova' version = '2.1' timeout = 10 sess = mock.Mock() mock_create_session.return_value = sess mock_version_and_brand.return_value = ('6.5', 'XenServer') mock_platform_version.return_value = (2, 1, 0) sess.xenapi.host.get_uuid.return_value = 'fake_host_uuid' sess.xenapi.session.get_this_host.return_value = 'fake_host_ref' fake_url = 'http://someserver' fake_host_name = 'someserver' xenapi_sess = session.XenAPISession(fake_url, 'username', 'password', originator=originator, concurrent=concurrent, timeout=timeout) sess.login_with_password.assert_called_with('username', 'password', version, originator) self.assertFalse(xenapi_sess.is_slave) mock_gethostbyname.assert_called_with(fake_host_name) sess.xenapi.session.get_this_host.assert_called_once_with(sess.handle) sess.xenapi.PIF.get_all_records_where.assert_not_called() self.assertEqual('fake_host_ref', xenapi_sess.host_ref) self.assertEqual('fake_host_uuid', xenapi_sess.host_uuid) self.assertEqual(fake_url, xenapi_sess.url)
def get_api_session(conf): url = conf.xenapi.connection_url username = conf.xenapi.connection_username password = conf.xenapi.connection_password if not url or password is None: raise XenapiException(_('Must specify connection_url, and ' 'connection_password to use')) try: session = xenapi_session.XenAPISession(url, username, password, originator="ceilometer") LOG.debug("XenAPI session is created successfully, %s", session) except XenAPI.Failure as e: msg = _("Could not connect to XenAPI: %s") % e.details[0] raise XenapiException(msg) return session
def main(): config.parse_args(sys.argv) _session = session.XenAPISession(CONF.xenserver.connection_url, CONF.xenserver.connection_username, CONF.xenserver.connection_password) sr_ref = vm_utils.safe_find_sr(_session) destroyed = vm_utils.destroy_cached_images( _session, sr_ref, all_cached=CONF.all_cached, dry_run=CONF.dry_run, keep_days=CONF.keep_days) if '--verbose' in sys.argv: print('\n'.join(destroyed)) print("Destroyed %d cached VDIs" % len(destroyed))
def test_relax_xsm_sr_check_XS7_missing(self, mock_get_host_ref, mock_gethostbyname, mock_create_session, mock_get_software_version, mock_call_plugin, mock_verify_plugin_version): sess = mock.Mock() mock_create_session.return_value = sess mock_get_software_version.return_value = {'product_version': '7.0.0', 'product_brand': 'XenServer', 'platform_version': '2.1.0'} # mark no relax-xsm-sr-check in /etc/xapi.conf mock_call_plugin.return_value = "" xenapi_sess = session.XenAPISession( 'http://someserver', 'username', 'password') self.assertTrue(xenapi_sess.is_xsm_sr_check_relaxed())
def test_session_login_with_timeout(self, mock_get_host_ref, mock_gethostbyname, mock_version, create_session, mock_timeout, mock_platform_version, mock_verify_plugin_version): concurrent = 2 originator = 'os-xenapi-nova' sess = mock.Mock() create_session.return_value = sess mock_version.return_value = ('version', 'brand') mock_platform_version.return_value = (2, 1, 0) session.XenAPISession('http://someserver', 'username', 'password', originator=originator, concurrent=concurrent) self.assertEqual(concurrent, sess.login_with_password.call_count) self.assertEqual(concurrent, mock_timeout.call_count)
def test_relax_xsm_sr_check_true(self, mock_create_session, mock_get_software_version, mock_call_plugin, mock_verify_plugin_version): sess = mock.Mock() mock_create_session.return_value = sess mock_get_software_version.return_value = { 'product_version': '6.5.0', 'product_brand': 'XenServer', 'platform_version': '1.9.0' } # mark relax-xsm-sr-check=True in /etc/xapi.conf mock_call_plugin.return_value = "True" xenapi_sess = session.XenAPISession('http://someserver', 'username', 'password') self.assertTrue(xenapi_sess.is_xsm_sr_check_relaxed())
def __init__(self, virtapi, read_only=False): super(XenAPIDriver, self).__init__(virtapi) url = CONF.xenserver.connection_url username = CONF.xenserver.connection_username password = CONF.xenserver.connection_password if not url or password is None: raise Exception(_('Must specify connection_url, ' 'connection_username (optionally), and ' 'connection_password to use ' 'compute_driver=xenapi.XenAPIDriver')) self._session = session.XenAPISession(url, username, password, originator="nova") self._volumeops = volumeops.VolumeOps(self._session) self._host_state = None self._host = host.Host(self._session, self.virtapi) self._vmops = vmops.VMOps(self._session, self.virtapi) self._initiator = None self._hypervisor_hostname = None self._pool = pool.ResourcePool(self._session, self.virtapi)
def test_session_nova_originator(self, mock_version_and_brand, mock_create_session, mock_platform_version, mock_verify_plugin_version): concurrent = 2 originator = 'os-xenapi-nova' version = '2.1' timeout = 10 sess = mock.Mock() mock_create_session.return_value = sess mock_version_and_brand.return_value = ('6.5', 'XenServer') mock_platform_version.return_value = (2, 1, 0) session.XenAPISession('http://someserver', 'username', 'password', originator=originator, concurrent=concurrent, timeout=timeout) sess.login_with_password.assert_called_with('username', 'password', version, originator)
def _create_session(self, url, username, password): return session.XenAPISession(url, username, password, originator="neutron")