def _create_vpool(self): """ Needed to actually run tests on This is not actually a test of "Add Vpool to OVS", so any failure here will be reported as a setUp error and no tests will run """ pmachine = System.get_my_storagerouter().pmachine mgmt_center = MgmtCenter( data={ 'name': 'Openstack', 'description': 'test', 'username': OVSPluginTestCase.CINDER_USER, 'password': OVSPluginTestCase.CINDER_PASS, 'ip': OVSPluginTestCase.CINDER_CONTROLLER, 'port': 80, 'type': 'OPENSTACK', 'metadata': { 'integratemgmt': True } }) mgmt_center.save() pmachine.mgmtcenter = mgmt_center pmachine.save() self._debug('Creating vpool') parameters = { 'storagerouter_ip': OVSPluginTestCase.ip, 'vpool_name': OVSPluginTestCase.VPOOL_NAME, 'type': 'local', 'storage_ip': '127.0.0.1', # KVM 'vrouter_port': OVSPluginTestCase.VPOOL_PORT, 'integrate_vpool': True, 'connection_host': OVSPluginTestCase.ip, 'connection_port': OVSPluginTestCase.VPOOL_PORT, 'connection_username': '', 'connection_password': '', 'connection_backend': {}, 'readcache_size': 50, 'writecache_size': 50 } StorageRouterController.add_vpool(parameters) attempt = 0 while attempt < 10: vpool = VPoolList.get_vpool_by_name(OVSPluginTestCase.VPOOL_NAME) if vpool is not None: self._debug('vpool {0} created'.format( OVSPluginTestCase.VPOOL_NAME)) try: os.listdir(OVSPluginTestCase.VPOOL_MOUNTPOINT) return vpool except Exception as ex: # either it doesn't exist, or we don't have permission self._debug('vpool not ready yet {0}'.format(str(ex))) pass attempt += 1 time.sleep(2) raise RuntimeError( 'Vpool {0} was not modeled correctly or did not start.'.format( OVSPluginTestCase.VPOOL_NAME))
def _create_vpool(self): """ Needed to actually run tests on This is not actually a test of "Add Vpool to OVS", so any failure here will be reported as a setUp error and no tests will run """ pmachine = System.get_my_storagerouter().pmachine mgmt_center = MgmtCenter(data={'name':'Openstack', 'description':'test', 'username':CINDER_USER, 'password':CINDER_PASS, 'ip':CINDER_CONTROLLER, 'port':80, 'type':'OPENSTACK', 'metadata':{'integratemgmt':True}}) mgmt_center.save() pmachine.mgmtcenter = mgmt_center pmachine.save() self._debug('Creating vpool') backend_type = 'local' fields = ['storage_ip', 'vrouter_port'] parameters = {'storagerouter_ip': IP, 'vpool_name': VPOOL_NAME, 'type': 'local', 'mountpoint_bfs': VPOOL_BFS, 'mountpoint_temp': VPOOL_TEMP, 'mountpoint_md': VPOOL_MD, 'mountpoint_readcaches': [VPOOL_READCACHE], 'mountpoint_writecaches': [VPOOL_WRITECACHE], 'mountpoint_foc': VPOOL_FOC, 'storage_ip': '127.0.0.1', #KVM 'vrouter_port': VPOOL_PORT, 'integrate_vpool': True, 'connection_host': IP, 'connection_port': VPOOL_PORT, 'connection_username': '', 'connection_password': '', 'connection_backend': {}, } StorageRouterController.add_vpool(parameters) attempt = 0 while attempt < 10: vpool = VPoolList.get_vpool_by_name(VPOOL_NAME) if vpool is not None: self._debug('vpool %s created' % VPOOL_NAME) try: os.listdir(VPOOL_MOUNTPOINT) return vpool except Exception as ex: #either it doesn't exist, or we don't have permission self._debug('vpool not ready yet %s' % (str(ex))) pass attempt += 1 time.sleep(2) raise RuntimeError('Vpool %s was not modeled correctly or did not start.' % VPOOL_NAME)
def _create_vpool(self): """ Needed to actually run tests on This is not actually a test of "Add Vpool to OVS", so any failure here will be reported as a setUp error and no tests will run """ pmachine = System.get_my_storagerouter().pmachine mgmt_center = MgmtCenter( data={ "name": "Openstack", "description": "test", "username": CINDER_USER, "password": CINDER_PASS, "ip": CINDER_CONTROLLER, "port": 80, "type": "OPENSTACK", "metadata": {"integratemgmt": True}, } ) mgmt_center.save() pmachine.mgmtcenter = mgmt_center pmachine.save() self._debug("Creating vpool") parameters = { "storagerouter_ip": IP, "vpool_name": VPOOL_NAME, "type": "local", "storage_ip": "127.0.0.1", # KVM "vrouter_port": VPOOL_PORT, "integrate_vpool": True, "connection_host": IP, "connection_port": VPOOL_PORT, "connection_username": "", "connection_password": "", "connection_backend": {}, "readcache_size": 50, "writecache_size": 50, } StorageRouterController.add_vpool(parameters) attempt = 0 while attempt < 10: vpool = VPoolList.get_vpool_by_name(VPOOL_NAME) if vpool is not None: self._debug("vpool {0} created".format(VPOOL_NAME)) try: os.listdir(VPOOL_MOUNTPOINT) return vpool except Exception as ex: # either it doesn't exist, or we don't have permission self._debug("vpool not ready yet {0}".format(str(ex))) pass attempt += 1 time.sleep(2) raise RuntimeError("Vpool {0} was not modeled correctly or did not start.".format(VPOOL_NAME))
def _create_vpool(self): """ Needed to actually run tests on This is not actually a test of "Add Vpool to OVS", so any failure here will be reported as a setUp error and no tests will run """ pmachine = System.get_my_storagerouter().pmachine mgmt_center = MgmtCenter(data={'name': 'Openstack', 'description': 'test', 'username': OVSPluginTestCase.CINDER_USER, 'password': OVSPluginTestCase.CINDER_PASS, 'ip': OVSPluginTestCase.CINDER_CONTROLLER, 'port': 80, 'type': 'OPENSTACK', 'metadata': {'integratemgmt': True}}) mgmt_center.save() pmachine.mgmtcenter = mgmt_center pmachine.save() self._debug('Creating vpool') parameters = {'storagerouter_ip': OVSPluginTestCase.ip, 'vpool_name': OVSPluginTestCase.VPOOL_NAME, 'type': 'local', 'storage_ip': '127.0.0.1', # KVM 'vrouter_port': OVSPluginTestCase.VPOOL_PORT, 'integrate_vpool': True, 'connection_host': OVSPluginTestCase.ip, 'connection_port': OVSPluginTestCase.VPOOL_PORT, 'connection_username': '', 'connection_password': '', 'connection_backend': {}, 'readcache_size': 50, 'writecache_size': 50 } StorageRouterController.add_vpool(parameters) attempt = 0 while attempt < 10: vpool = VPoolList.get_vpool_by_name(OVSPluginTestCase.VPOOL_NAME) if vpool is not None: self._debug('vpool {0} created'.format(OVSPluginTestCase.VPOOL_NAME)) try: os.listdir(OVSPluginTestCase.VPOOL_MOUNTPOINT) return vpool except Exception as ex: # either it doesn't exist, or we don't have permission self._debug('vpool not ready yet {0}'.format(str(ex))) pass attempt += 1 time.sleep(2) raise RuntimeError('Vpool {0} was not modeled correctly or did not start.'.format(OVSPluginTestCase.VPOOL_NAME))
def create(self, request): """ Creates a Management Center """ serializer = FullSerializer(MgmtCenter, instance=MgmtCenter(), data=request.DATA, allow_passwords=True) if serializer.is_valid(): mgmt_center = serializer.object duplicate = MgmtCenterList.get_by_ip(mgmt_center.ip) if duplicate is None: mgmt_center.save() try: task_id = MgmtCenterController.test_connection.apply_async( kwargs={ 'mgmt_center_guid': mgmt_center.guid }).id task = MgmtCenterController.test_connection.AsyncResult( task_id) except: mgmt_center.delete() raise try: is_mgmt_center = task.get(timeout=60, propagate=True) except TimeoutError: mgmt_center.delete() logger.error('Timed out waiting for test_connection') raise NotAcceptable( 'Timed out waiting for test_connection') except Exception as ex: # propagate reraises the exception raised in the task mgmt_center.delete() logger.error('Task exception %s' % ex) raise NotAcceptable('Task exception') if is_mgmt_center is True: return Response(serializer.data, status=status.HTTP_201_CREATED) elif is_mgmt_center is None: mgmt_center.delete() raise NotAcceptable('The given information is invalid.') elif is_mgmt_center is False: mgmt_center.delete() raise NotAcceptable( 'The given information is not for a Management center.' ) else: mgmt_center.delete() raise NotAcceptable('Unexpected result %s' % is_mgmt_center) else: raise NotAcceptable( 'A Management Center with this ip already exists.') else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def configure_host(pmachine_guid, mgmtcenter_guid, update_link): pmachine = PMachine(pmachine_guid) mgmt_center = MgmtCenter(mgmtcenter_guid) mgmt_center_client = None try: mgmt_center_client = Factory.get_mgmtcenter( mgmt_center=mgmt_center) except Exception as ex: logger.error('Cannot get management center client: {0}'.format(ex)) if mgmt_center_client is not None: logger.info('Configuring host {0} on management center {1}'.format( pmachine.name, mgmt_center.name)) mgmt_center_client.configure_host(pmachine.ip) if update_link is True: pmachine.mgmtcenter = mgmt_center pmachine.save()
def test_connection(mgmt_center_guid): """ Test mgmtcenter connection """ mgmt_center = MgmtCenter(mgmt_center_guid) try: mgmt_center_client = Factory.get_mgmtcenter( mgmt_center=mgmt_center) except Exception as ex: logger.error('Cannot get mgmt center client: %s' % ex) return None try: is_mgmt_center = mgmt_center_client.test_connection() except Exception as ex: logger.error('Cannot test connection: %s' % ex) return False return is_mgmt_center
def test_connection(mgmt_center_guid): """ Test management center connection """ mgmt_center = MgmtCenter(mgmt_center_guid) try: mgmt_center_client = Factory.get_mgmtcenter( mgmt_center=mgmt_center) except Exception as ex: MgmtCenterController._logger.error( 'Cannot get mgmt center client: {0}'.format(ex)) return None try: is_mgmt_center = mgmt_center_client.test_connection() except Exception as ex: MgmtCenterController._logger.error( 'Cannot test connection: {0}'.format(ex)) return False return is_mgmt_center
def create(self, request): """ Creates a Management Center """ serializer = FullSerializer(MgmtCenter, instance=MgmtCenter(), data=request.DATA, allow_passwords=True) if serializer.is_valid(): mgmt_center = serializer.object duplicate = MgmtCenterList.get_by_ip(mgmt_center.ip) if duplicate is None: try: mgmt_center_client = Factory.get_mgmtcenter(mgmt_center=mgmt_center) is_mgmt_center = mgmt_center_client.test_connection() except Exception as ex: logger.debug('Management center testing: {0}'.format(ex)) raise NotAcceptable('The given information is invalid.') if not is_mgmt_center: raise NotAcceptable('The given information is not for a Management center.') mgmt_center.save() return Response(serializer.data, status=status.HTTP_201_CREATED) else: raise NotAcceptable('A Mangement Center with this ip already exists.') else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def _create_vpool(self): """ Needed to actually run tests on This is not actually a test of "Add Vpool to OVS", so any failure here will be reported as a setUp error and no tests will run """ pmachine = System.get_my_storagerouter().pmachine mgmt_center = MgmtCenter( data={ 'name': 'Openstack', 'description': 'test', 'username': CINDER_USER, 'password': CINDER_PASS, 'ip': CINDER_CONTROLLER, 'port': 80, 'type': 'OPENSTACK', 'metadata': { 'integratemgmt': True } }) mgmt_center.save() pmachine.mgmtcenter = mgmt_center pmachine.save() self._debug('Creating vpool') backend_type = 'local' fields = ['storage_ip', 'vrouter_port'] parameters = { 'storagerouter_ip': IP, 'vpool_name': VPOOL_NAME, 'type': 'local', 'mountpoint_bfs': VPOOL_BFS, 'mountpoint_temp': VPOOL_TEMP, 'mountpoint_md': VPOOL_MD, 'mountpoint_readcaches': [VPOOL_READCACHE], 'mountpoint_writecaches': [VPOOL_WRITECACHE], 'mountpoint_foc': VPOOL_FOC, 'storage_ip': '127.0.0.1', #KVM 'vrouter_port': VPOOL_PORT, 'integrate_vpool': True, 'connection_host': IP, 'connection_port': VPOOL_PORT, 'connection_username': '', 'connection_password': '', 'connection_backend': {}, } StorageRouterController.add_vpool(parameters) attempt = 0 while attempt < 10: vpool = VPoolList.get_vpool_by_name(VPOOL_NAME) if vpool is not None: self._debug('vpool %s created' % VPOOL_NAME) try: os.listdir(VPOOL_MOUNTPOINT) return vpool except Exception as ex: #either it doesn't exist, or we don't have permission self._debug('vpool not ready yet %s' % (str(ex))) pass attempt += 1 time.sleep(2) raise RuntimeError( 'Vpool %s was not modeled correctly or did not start.' % VPOOL_NAME)
from subprocess import check_output from ovs.extensions.generic.system import System from ovs.dal.hybrids.mgmtcenter import MgmtCenter from ovs.dal.hybrids.diskpartition import DiskPartition from ovs.dal.lists.storagerouterlist import StorageRouterList from ovs.lib.storagerouter import StorageRouterController from ovs.extensions.hypervisor.mgmtcenters.management.openstack_mgmt import OpenStackManagement pmachine = System.get_my_storagerouter().pmachine mgmt_center = MgmtCenter(data={'name':'Openstack', 'description':'test', 'username':'******', 'password':'******', 'ip':'127.0.0.1', 'port':80, 'type':'OPENSTACK', 'metadata':{'integratemgmt':True, } }) IP = check_output("""ip a l dev eth0 | grep "inet " | awk '{split($0,a," "); split(a[2],b,"/"); print(b[1])}'""", shell=True).strip() mgmt_center.save() pmachine.mgmtcenter = mgmt_center pmachine.save() osm = OpenStackManagement(None) osm.configure_host(IP) for sr in StorageRouterList.get_storagerouters(): for disk in sr.disks: for partition in disk.partitions: for role in [DiskPartition.ROLES.DB, DiskPartition.ROLES.SCRUB, DiskPartition.ROLES.READ, DiskPartition.ROLES.WRITE]: