Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
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
Exemple #4
0
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))
Exemple #5
0
 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())
Exemple #6
0
    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())
Exemple #8
0
    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)
Exemple #10
0
 def _create_session(self, url, username, password):
     return session.XenAPISession(url,
                                  username,
                                  password,
                                  originator="neutron")