Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 3
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
Exemplo n.º 4
0
 def delete(self, request, instance_id):
     url = reverse("horizon:project:policytargets:policy_targetdetails",
                   kwargs={'policy_target_id':
                       self.table.kwargs['policy_target_id']})
     try:
         pts = []
         for port in api.neutron.port_list(request, device_id=instance_id):
             policytarget = client.pt_list(request, port_id=port.id)
             if policytarget:
                 pts.append(policytarget[0])
         for pt in pts:
             client.pt_delete(request, pt.id)
         api.nova.server_delete(request, instance_id)
         LOG.debug('Deleted instance %s successfully' % instance_id)
         return http.HttpResponseRedirect(url)
     except Exception:
         msg = _('Failed to delete instance %s') % instance_id
         LOG.info(msg)
         exceptions.handle(request, msg, redirect=shortcuts.redirect)
Exemplo n.º 5
0
 def delete(self, request, instance_id):
     url = reverse("horizon:project:policytargets:policy_targetdetails",
                   kwargs={'policy_target_id':
                       self.table.kwargs['policy_target_id']})
     try:
         pts = []
         for port in api.neutron.port_list(request, device_id=instance_id):
             policytarget = client.pt_list(request,
             tenant_id=request.user.tenant_id, port_id=port.id)
             if policytarget:
                 pts.append(policytarget[0])
         for pt in pts:
             client.pt_delete(request, pt.id)
         api.nova.server_delete(request, instance_id)
         LOG.debug('Deleted instance %s successfully' % instance_id)
         return http.HttpResponseRedirect(url)
     except Exception:
         msg = _('Failed to delete instance %s') % instance_id
         LOG.info(msg)
         exceptions.handle(request, msg, redirect=shortcuts.redirect)