Exemple #1
0
 def get_instances_data(self):
     policy_targetid = self.tab_group.kwargs['policy_target_id']
     filtered_instances = []
     try:
         policytargets = client.pt_list(self.request,
                                   policy_target_group_id=policy_targetid)
         policy_target_ports = [x.port_id for x in policytargets]
         marker = self.request.GET.get(
             tables.InstancesTable._meta.pagination_param, None)
         instances, self._has_more = api.nova.server_list(
             self.request, search_opts={'marker': marker, 'paginate': True})
         instances = [item for item in instances
                 if not itables.is_deleting(item)]
         for item in instances:
             for port in api.neutron.port_list(self.request,
                                               device_id=item.id):
                 if port.id in policy_target_ports:
                     filtered_instances.append(item)
                     break
     except Exception:
         self._has_more = False
         error_message = _('Unable to get instances')
         exceptions.handle(self.request, error_message)
         filtered_instances = []
     return filtered_instances
Exemple #2
0
 def get_instances_data(self):
     policy_targetid = self.tab_group.kwargs['policy_target_id']
     filtered_instances = []
     try:
         policytargets = client.pt_list(
             self.request,
             tenant_id=self.request.user.tenant_id,
             policy_target_group_id=policy_targetid)
         policy_target_ports = [x.port_id for x in policytargets]
         policy_target_ids = [p.id for p in policytargets]
         marker = self.request.GET.get(
             tables.InstancesTable._meta.pagination_param, None)
         # TODO(Sumit): Setting paginate to False is a temporary
         # fix. Earlier, when paginate was set to True we were
         # retrieving instances in pages and were only processing
         # the first page. While pagination is required for
         # scaling to a large number of instances, we need to first
         # retrieve the instances in pages, then process them,
         # and then show the filtered list (filtered_instances)
         # in pages.
         instances, self._has_more = api.nova.server_list(self.request,
                                                          search_opts={
                                                              'marker':
                                                              marker,
                                                              'paginate':
                                                              False
                                                          })
         self._has_more = False
         instances = [
             item for item in instances if not itables.is_deleting(item)
         ]
         # port_list for a given instance is not available
         # when it query immediately after member create,
         # So adding half sec sleep before port list query
         if policy_target_ports:
             time.sleep(0.5)
         for item in instances:
             metadata_pts = item.metadata.get('pts', None)
             if metadata_pts:
                 pts = metadata_pts.split(",")
                 for pt in pts:
                     if pt in policy_target_ids:
                         filtered_instances.append(item)
                         break
             else:
                 for port in api.neutron.port_list(self.request,
                                                   device_id=item.id):
                     if port.id in policy_target_ports:
                         filtered_instances.append(item)
                         break
     except Exception:
         self._has_more = False
         error_message = _('Unable to get instances')
         exceptions.handle(self.request, error_message)
         filtered_instances = []
     return filtered_instances
 def get_instances_data(self):
     policy_targetid = self.tab_group.kwargs['policy_target_id']
     filtered_instances = []
     try:
         policytargets = client.pt_list(self.request,
         tenant_id=self.request.user.tenant_id,
         policy_target_group_id=policy_targetid)
         policy_target_ports = [x.port_id for x in policytargets]
         policy_target_ids = [p.id for p in policytargets]
         marker = self.request.GET.get(
             tables.InstancesTable._meta.pagination_param, None)
         # TODO(Sumit): Setting paginate to False is a temporary
         # fix. Earlier, when paginate was set to True we were
         # retrieving instances in pages and were only processing
         # the first page. While pagination is required for
         # scaling to a large number of instances, we need to first
         # retrieve the instances in pages, then process them,
         # and then show the filtered list (filtered_instances)
         # in pages.
         instances, self._has_more = api.nova.server_list(
             self.request, search_opts={'marker': marker,
                                        'paginate': False})
         self._has_more = False
         instances = [item for item in instances
                 if not itables.is_deleting(item)]
         # port_list for a given instance is not available
         # when it query immediately after member create,
         # So adding half sec sleep before port list query
         if policy_target_ports:
             time.sleep(0.5)
         for item in instances:
             metadata_pts = item.metadata.get('pts', None)
             if metadata_pts:
                 pts = metadata_pts.split(",")
                 for pt in pts:
                     if pt in policy_target_ids:
                         filtered_instances.append(item)
                         break
             else:
                 for port in api.neutron.port_list(self.request,
                                                   device_id=item.id):
                     if port.id in policy_target_ports:
                         filtered_instances.append(item)
                         break
     except Exception:
         self._has_more = False
         error_message = _('Unable to get instances')
         exceptions.handle(self.request, error_message)
         filtered_instances = []
     return filtered_instances
 def allowed(self, request, instance):
     return ((instance.status in project_tables.ACTIVE_STATES
              or instance.status == 'SHUTOFF')
             and not project_tables.is_deleting(instance))
Exemple #5
0
 def allowed(self, request, instance):
     return ((instance.status in project_tables.ACTIVE_STATES)
             and not project_tables.is_deleting(instance))
Exemple #6
0
 def allowed(self, request, instance):
     return ((instance.status in ACTIVE_STATES
              or instance.status == 'SHUTOFF')
             and not is_deleting(instance))
Exemple #7
0
 def allowed(self, request, instance=None):
     return (instance.status in instance_tables.SNAPSHOT_READY_STATES
             and not instance_tables.is_deleting(instance)
             and request.user.tenant_id == instance.tenant_id)
Exemple #8
0
 def allowed(self, request, instance):
     return request.user.is_superuser and instance.status in proj_tables.ACTIVE_STATES and not proj_tables.is_deleting(instance)
Exemple #9
0
 def allowed(self, request, instance):
     return instance.status in BLESSED_STATES and not proj_tables.is_deleting(instance)
Exemple #10
0
 def allowed(self, request, instance):
     return request.user.is_superuser \
             and instance.status not in self.DISALLOWED_STATES \
             and not proj_tables.is_deleting(instance)
Exemple #11
0
 def allowed(self, request, instance):
     return ((instance.status in ACTIVE_STATES
              or instance.status == 'SHUTOFF')
             and not is_deleting(instance))
 def allowed(self, request, instance=None):
     return (instance.status in instance_tables.SNAPSHOT_READY_STATES and
             not instance_tables.is_deleting(instance) and
             request.user.tenant_id == instance.tenant_id)
Exemple #13
0
 def allowed(self, request, instance):
     return request.user.is_superuser and instance.status in proj_tables.ACTIVE_STATES and not proj_tables.is_deleting(
         instance)
Exemple #14
0
 def allowed(self, request, instance):
     return instance.status in BLESSED_STATES and not proj_tables.is_deleting(
         instance)