예제 #1
0
 def detail(self, req):
     context = req.environ['xdrs.context']
     authorize(context, 'get_vms_migration_records')
     
     vms_migration_records = self._get_vms_migration_records(req)
     
     return self._view_builder.detail(req, vms_migration_records)
예제 #2
0
 def detail(self, req):
     context = req.environ['xdrs.context']
     authorize(context, 'get_vm_cpu_data')
     
     vms_cpu_data = self._get_vm_cpu_data(req)
     
     return self._view_builder.detail(req, vms_cpu_data)   
예제 #3
0
 def create(self, req, body):
     """
     Creates a new algorithm.
     """
     context = req.environ['xdrs.context']
     authorize(context, 'update_algorithms')
     
     if not self.is_valid_body(body, 'parameters'):
         raise webob.exc.HTTPBadRequest()
     algorithm_parameters = body['parameters']
     
     if not self.is_valid_body(body, 'algorithm_name'):
         raise webob.exc.HTTPBadRequest()
     algorithm_name = body['algorithm_name']
     
     if not self.is_valid_body(body, 'algorithm_description'):
         raise webob.exc.HTTPBadRequest()
     algorithm_description = body['algorithm_description']
     
     algorithm_id = random.randint(0, 0xffffffffffffffff)
     
     algorithm_create_values = {
                                'algorithm_name': algorithm_name,
                                'algorithm_id': algorithm_id,
                                'algorithm_parameters': algorithm_parameters,
                                'algorithm_description': algorithm_description,
                                'in_use': False
                                }
     
     try:
         algorithm = self.hosts_api.create_vm_select_algorithm(context, algorithm_create_values)
     except exception.AlgorithmNotFound as ex:
         raise webob.exc.HTTPNotFound(explanation=ex.format_message())
     
     return {'algorithm': algorithm}
예제 #4
0
 def index(self, req):
     context = req.environ['xdrs.context']
     authorize(context, 'get_vm_metadata')
     
     vms_metadata = self._get_vm_metadata(req)
     
     return self._view_builder.index(req, vms_metadata)
예제 #5
0
    def detail(self, req):
        context = req.environ['xdrs.context']
        authorize(context, 'get_vm_cpu_data')

        vms_cpu_data = self._get_vm_cpu_data(req)

        return self._view_builder.detail(req, vms_cpu_data)
예제 #6
0
 def index(self, req):
     context = req.environ['xdrs.context']
     authorize(context, 'get_host_cpu_data')
     
     hosts_cpu_data = self._get_host_cpu_data(req)
     
     return self._view_builder.index(req, hosts_cpu_data)
예제 #7
0
 def index(self, req):
     """
     Return all hosts states in brief.
     """
     context = req.environ['xdrs.context']
     authorize(context, 'get_hosts_states')
     
     hosts_states = self._get_hosts_states(req)
     return self._view_builder.index(req, hosts_states)
예제 #8
0
    def index(self, req):
        """
        Return all hosts states in brief.
        """
        context = req.environ['xdrs.context']
        authorize(context, 'get_hosts_states')

        hosts_states = self._get_hosts_states(req)
        return self._view_builder.index(req, hosts_states)
예제 #9
0
 def delete(self, req, id):
     context = req.environ['xdrs.context']
     authorize(context, 'delete_vm_migration_record')
     
     try:
         vm_migration_record = self.vms_api.delete_vm_migration_record_by_id(context, id)
     except exception.VmMigrationRecordNotFound:
         msg = _('vm migration record not found')
         raise webob.exc.HTTPBadRequest(explanation=msg)
 def get_specific_vm_migration_task_state(self, req, id):
     context = req.environ['xdrs.context']
     authorize(context, 'get_vm_migration_task_state')
     
     try:
         vm_migration_task_state = self.vms_api.get_specific_vm_migration_task_state(context, id)
     except exception.NotFound:
         raise exc.HTTPNotFound()
     
     return vm_migration_task_state
예제 #11
0
    def get_vm_select_algorithm_in_used(self, req):
        context = req.environ['xdrs.context']
        authorize(context, 'get_algorithm')

        try:
            algorithm = self.hosts_api.get_vm_select_algorithm_in_used(context, id)
        except exception.NotFound:
            raise exc.HTTPNotFound()
        
        return {'vm_select_algorithm': _translate_vm_select_algorithm_detail_view(context, algorithm)}
예제 #12
0
 def detail(self, req):
     """
     Return all algorithms in detail.
     """
     context = req.environ['xdrs.context']
     authorize(context, 'get_algorithms')
     
     algorithms = self._get_algorithms(req)
     
     return self._view_builder.detail(req, algorithms)
예제 #13
0
 def index(self, req):
     """
     Return all algorithms in brief.
     注:这里只是提供一个实现示例,具体功能的实现还有待探讨;
     """
     context = req.environ['xdrs.context']
     authorize(context, 'get_algorithms')
     
     algorithms = self._get_algorithms(req)
     return self._view_builder.index(req, algorithms)
예제 #14
0
    def get_specific_vm_migration_task_state(self, req, id):
        context = req.environ['xdrs.context']
        authorize(context, 'get_vm_migration_task_state')

        try:
            vm_migration_task_state = self.vms_api.get_specific_vm_migration_task_state(
                context, id)
        except exception.NotFound:
            raise exc.HTTPNotFound()

        return vm_migration_task_state
예제 #15
0
    def show(self, req, id):
        context = req.environ['xdrs.context']
        authorize(context, 'show_vm_migration_record')
        
        try:
            vm_migration_record = self.vms_api.get_vm_migration_record_by_id(context, id)
        except exception.VmMigrationRecordNotFound:
            msg = _('vm migration record not found')
            raise webob.exc.HTTPBadRequest(explanation=msg)

        return self._view_builder.show(req, vm_migration_record)
예제 #16
0
    def show(self, req, id):
        context = req.environ['xdrs.context']
        authorize(context, 'show_host_cpu_data')
        
        try:
            host_cpu_data = self.hosts_api.get_host_cpu_data_by_id(context, id)
        except exception.HostCpuDataNotFound:
            msg = _('host cpu data not found')
            raise webob.exc.HTTPBadRequest(explanation=msg)

        return self._view_builder.show(req, host_cpu_data)
예제 #17
0
 def delete_vm_metadata_by_id(self, req, id):
     """
     注:这个方法需要比较细致地来写;
     """
     context = req.environ['xdrs.context']
     authorize(context, 'destroy_vm_cpu_data')
     
     try:
         vm_cpu_data = self.vms_api.delete_vm_metadata_by_id(context, id)
     except exception.NotFound:
         raise exc.HTTPNotFound()
     return webob.Response(status_int=202)
 def get_specific_host_all_migration_in_records(self, req, id):
     context = req.environ['xdrs.context']
     authorize(context, 'get_specific_host_all_migration_records')
     
     try:
         vm_migration_records = self.vms_api.get_specific_host_all_migration_in_records(context, id)
     except exception.NotFound:
         raise exc.HTTPNotFound()
     
     vm_migration_records_dict = self._items(req, context, vm_migration_records, entity_maker=_translate_vm_migration_record_detail_view)
     
     return vm_migration_records_dict
예제 #19
0
    def delete_vm_metadata_by_id(self, req, id):
        """
        注:这个方法需要比较细致地来写;
        """
        context = req.environ['xdrs.context']
        authorize(context, 'destroy_vm_cpu_data')

        try:
            vm_cpu_data = self.vms_api.delete_vm_metadata_by_id(context, id)
        except exception.NotFound:
            raise exc.HTTPNotFound()
        return webob.Response(status_int=202)
예제 #20
0
    def delete(self, req, id):
        """
        Delete a host task states.
        """
        context = req.environ['xdrs.context']
        authorize(context, 'delete_host_task_states')

        try:
            host_task_states = self.hosts_api.delete_host_task_states_by_id(context, id)
        except exception.NotFound:
            raise exc.HTTPNotFound()
        return webob.Response(status_int=202)
예제 #21
0
 def get_vm_cpu_data_by_host_id(self, req, id):
     context = req.environ['xdrs.context']
     authorize(context, 'get_vm_cpu_data')
     
     try:
         vms_cpu_data = self.hosts_api.get_vm_cpu_data_by_host_id(context, id)
     except exception.NotFound:
         raise exc.HTTPNotFound()
     
     vms_cpu_data_dict = self._items(req, context, vms_cpu_data, entity_maker=_translate_vm_cpu_data_detail_view)
     
     return vms_cpu_data_dict
예제 #22
0
    def delete(self, req, id):
        """
        Delete a algorithm.
        """
        context = req.environ['xdrs.context']
        authorize(context, 'delete_algorithms')

        try:
            algorithm = self.hosts_api.delete_underload_algorithm_by_id(context, id)
        except exception.NotFound:
            raise exc.HTTPNotFound()
        return webob.Response(status_int=202)
예제 #23
0
    def get_filter_scheduler_algorithms_in_used(self, req):
        context = req.environ['xdrs.context']
        authorize(context, 'get_algorithm')

        try:
            algorithms = self.hosts_api.get_filter_scheduler_algorithms_in_used(context)
        except exception.NotFound:
            raise exc.HTTPNotFound()
        
        algorithms_info = [_translate_filter_scheduler_algorithms_detail_view(context, algorithm) for algorithm in algorithms]        
        filter_scheduler_algorithms = [algorithm['algorithm_name'] for algorithm in algorithms_info]
        
        return {'filter_scheduler_algorithms': filter_scheduler_algorithms}
예제 #24
0
 def get_vm_cpu_data_by_vm_id(self, req, id):
     context = req.environ['xdrs.context']
     authorize(context, 'get_vm_cpu_data')
     
     try:
         vm_cpu_data = self.hosts_api.get_vm_cpu_data_by_vm_id(context, id)
     except exception.NotFound:
         raise exc.HTTPNotFound()
     
     vm_cpu_data = _translate_vm_cpu_data_detail_view(context, vm_cpu_data)
     vm_cpu_data_dict = {'vm_cpu_data':vm_cpu_data}
     
     return vm_cpu_data_dict
예제 #25
0
    def show(self, req, id):
        """
        Return data about the given host task states.
        """
        context = req.environ['xdrs.context']
        authorize(context, 'show_host_task_states')

        try:
            host_task_states = self.hosts_api.get_host_task_states_by_id(context, id)
        except exception.NotFound:
            raise exc.HTTPNotFound()
        
        return {'host_task_states': _translate_host_task_states_detail_view(context, host_task_states)}
예제 #26
0
    def delete(self, req, id):
        """
        Delete a host task states.
        """
        context = req.environ['xdrs.context']
        authorize(context, 'delete_host_task_states')

        try:
            host_task_states = self.hosts_api.delete_host_task_states_by_id(
                context, id)
        except exception.NotFound:
            raise exc.HTTPNotFound()
        return webob.Response(status_int=202)
예제 #27
0
    def get_vm_cpu_data_by_vm_id(self, req, id):
        context = req.environ['xdrs.context']
        authorize(context, 'get_vm_cpu_data')

        try:
            vm_cpu_data = self.hosts_api.get_vm_cpu_data_by_vm_id(context, id)
        except exception.NotFound:
            raise exc.HTTPNotFound()

        vm_cpu_data = _translate_vm_cpu_data_detail_view(context, vm_cpu_data)
        vm_cpu_data_dict = {'vm_cpu_data': vm_cpu_data}

        return vm_cpu_data_dict
예제 #28
0
    def show(self, req, id):
        """
        Return data about the given algorithm.
        """
        context = req.environ['xdrs.context']
        authorize(context, 'show_algorithms')

        try:
            algorithm = self.hosts_api.get_vm_select_algorithm_by_id(context, id)
        except exception.NotFound:
            raise exc.HTTPNotFound()
        
        return {'vm_select_algorithm': _translate_vm_select_algorithm_detail_view(context, algorithm)}
예제 #29
0
    def get_vm_task_state_by_id(self, req, id):
        context = req.environ['xdrs.context']
        authorize(context, 'get_vm_task_state')

        try:
            vm_task_state = self.vms_api.get_vm_task_state_by_id(context, id)
        except exception.NotFound:
            raise exc.HTTPNotFound()

        if vm_task_state not in [states.VM_MIGRATING, states.VM_NORMAL]:
            msg = _('vm task state info is error!')
            raise webob.exc.HTTPBadRequest(explanation=msg)

        return vm_task_state
예제 #30
0
 def update(self, req, id, body):
     context = req.environ['xdrs.context']
     authorize(context, 'update_algorithms')
     
     if not self.is_valid_body(body, 'parameters'):
         raise webob.exc.HTTPBadRequest()
     parameters = body['parameters']
     
     try:
         algorithm = self.hosts_api.update_underload_algorithm(context, id, parameters)
     except exception.AlgorithmNotFound as ex:
         raise webob.exc.HTTPNotFound(explanation=ex.format_message())
     
     return {'parameters':parameters}
예제 #31
0
 def _items(self, req, server_id, entity_maker):
     """
     Returns a list of hosts load states, transformed through entity_maker.
     """
     context = req.environ['xdrs.context']
     authorize(context, 'get_hosts_load_states')
     
     try:
         hosts_load_states = self.hosts_api.get_all_hosts_load_states_sorted_list(context)
     except exception.HostLoadStateNotFound:
         msg = _('hosts load states not found')
         raise webob.exc.HTTPBadRequest(explanation=msg)
     
     hosts_load_states = [entity_maker(context, host_load_states) for host_load_states in hosts_load_states]
     return {'hosts_load_states': hosts_load_states}
예제 #32
0
    def create(self, req, body):
        context = req.environ['xdrs.context']
        authorize(context, 'create_vm_migration_record')
        
        try:
            vm_migration_record = body['vm_migration_record']
        except (KeyError, TypeError):
            msg = _("Malformed request body")
            raise exc.HTTPBadRequest(explanation=msg)

        new_vm_migration_record = self.vms_api.create_vm_migration_record(
                                                      context,
                                                      vm_migration_record)

        return {'vm_migration_record': new_vm_migration_record}
예제 #33
0
 def get_vm_task_state_by_id(self, req, id):
     context = req.environ['xdrs.context']
     authorize(context, 'get_vm_task_state')
     
     try:
         vm_task_state = self.vms_api.get_vm_task_state_by_id(context, id)
     except exception.NotFound:
         raise exc.HTTPNotFound()
     
     if vm_task_state not in [states.VM_MIGRATING, 
                      states.VM_NORMAL]:
         msg = _('vm task state info is error!')
         raise webob.exc.HTTPBadRequest(explanation=msg)
        
     return vm_task_state
예제 #34
0
 def _items(self, req, entity_maker):
     """
     Returns a list of algorithms, transformed through entity_maker.
     """
     context = req.environ['xdrs.context']
     authorize(context, 'get_algorithms')
     
     try:
         algorithms = self.hosts_api.get_all_vm_select_algorithm_sorted_list(context)
     except exception.AlgorithmsNotFound:
         msg = _('overload algorithms not found')
         raise webob.exc.HTTPBadRequest(explanation=msg)
     
     vm_select_algorithms = [entity_maker(context, algorithm) for algorithm in algorithms]
     return {'vm_select_algorithms': vm_select_algorithms}
예제 #35
0
    def get_specific_host_all_migration_records(self, req, id):
        context = req.environ['xdrs.context']
        authorize(context, 'get_specific_host_all_migration_records')

        try:
            vm_migration_records = self.vms_api.get_specific_host_all_migration_records(
                context, id)
        except exception.NotFound:
            raise exc.HTTPNotFound()

        vm_migration_records_dict = self._items(
            req,
            context,
            vm_migration_records,
            entity_maker=_translate_vm_migration_record_detail_view)

        return vm_migration_records_dict
예제 #36
0
    def show(self, req, id):
        """
        Return data about the given host task states.
        """
        context = req.environ['xdrs.context']
        authorize(context, 'show_host_task_states')

        try:
            host_task_states = self.hosts_api.get_host_task_states_by_id(
                context, id)
        except exception.NotFound:
            raise exc.HTTPNotFound()

        return {
            'host_task_states':
            _translate_host_task_states_detail_view(context, host_task_states)
        }
예제 #37
0
    def get_vm_cpu_data_by_host_id(self, req, id):
        context = req.environ['xdrs.context']
        authorize(context, 'get_vm_cpu_data')

        try:
            vms_cpu_data = self.hosts_api.get_vm_cpu_data_by_host_id(
                context, id)
        except exception.NotFound:
            raise exc.HTTPNotFound()

        vms_cpu_data_dict = self._items(
            req,
            context,
            vms_cpu_data,
            entity_maker=_translate_vm_cpu_data_detail_view)

        return vms_cpu_data_dict
예제 #38
0
    def _items(self, req, server_id, entity_maker):
        """
        Returns a list of hosts load states, transformed through entity_maker.
        """
        context = req.environ['xdrs.context']
        authorize(context, 'get_hosts_load_states')

        try:
            hosts_load_states = self.hosts_api.get_all_hosts_load_states_sorted_list(
                context)
        except exception.HostLoadStateNotFound:
            msg = _('hosts load states not found')
            raise webob.exc.HTTPBadRequest(explanation=msg)

        hosts_load_states = [
            entity_maker(context, host_load_states)
            for host_load_states in hosts_load_states
        ]
        return {'hosts_load_states': hosts_load_states}
예제 #39
0
 def update(self, req, id, body):
     context = req.environ['xdrs.context']
     authorize(context, 'update_host_running_states')
     
     if not self.is_valid_body(body, 'parameters'):
         raise webob.exc.HTTPBadRequest()
     parameters = body['parameters']
     
     value = parameters['host_running_state']
     if value not in [states.NORMAL_POWER, 
                      states.LOW_POWER]:
         msg = _('host running states info is error!')
         raise webob.exc.HTTPBadRequest(explanation=msg)
     
     update_value = {'host_running_state':value}
     
     try:
         host_running_states = self.hosts_api.update_host_running_states(context, id, update_value)
     except exception.HostRunningStateNotFound as ex:
         raise webob.exc.HTTPNotFound(explanation=ex.format_message())
     
     return {'host_running_states':host_running_states}
예제 #40
0
    def update(self, req, id, body):
        context = req.environ['xdrs.context']
        authorize(context, 'update_host_load_states')

        if not self.is_valid_body(body, 'parameters'):
            raise webob.exc.HTTPBadRequest()
        parameters = body['parameters']

        value = parameters['host_load_state']
        if value not in [states.NORMALLOAD, states.OVERLOAD, states.UNDERLOAD]:
            msg = _('host load states info is error!')
            raise webob.exc.HTTPBadRequest(explanation=msg)

        update_value = {'host_load_state': value}

        try:
            host_load_states = self.hosts_api.update_host_load_states(
                context, id, update_value)
        except exception.HostLoadStateNotFound as ex:
            raise webob.exc.HTTPNotFound(explanation=ex.format_message())

        return {'host_load_states': host_load_states}
예제 #41
0
 def update(self, req, id, body):
     context = req.environ['xdrs.context']
     authorize(context, 'update_host_task_states')
     
     if not self.is_valid_body(body, 'parameters'):
         raise webob.exc.HTTPBadRequest()
     parameters = body['parameters']
     value = parameters['host_task_state']
     if value not in [states.DETECTING, 
                      states.COLLECTING, 
                      states.MIGRATING_OUT, 
                      states.MIGRATING_IN,
                      states.DO_NOTING]:
         msg = _('host task states info is error!')
         raise webob.exc.HTTPBadRequest(explanation=msg)
     
     update_value = {'host_task_state':value}
     try:
         host_task_states = self.hosts_api.update_host_task_states(context, id, update_value)
     except exception.HostTaskStateNotFound as ex:
         raise webob.exc.HTTPNotFound(explanation=ex.format_message())
     
     return {'host_task_states':host_task_states}
예제 #42
0
    def update(self, req, id, body):
        context = req.environ['xdrs.context']
        authorize(context, 'update_host_task_states')

        if not self.is_valid_body(body, 'parameters'):
            raise webob.exc.HTTPBadRequest()
        parameters = body['parameters']
        value = parameters['host_task_state']
        if value not in [
                states.DETECTING, states.COLLECTING, states.MIGRATING_OUT,
                states.MIGRATING_IN, states.DO_NOTING
        ]:
            msg = _('host task states info is error!')
            raise webob.exc.HTTPBadRequest(explanation=msg)

        update_value = {'host_task_state': value}
        try:
            host_task_states = self.hosts_api.update_host_task_states(
                context, id, update_value)
        except exception.HostTaskStateNotFound as ex:
            raise webob.exc.HTTPNotFound(explanation=ex.format_message())

        return {'host_task_states': host_task_states}