def link(self, id, out_format):
     try:
         result, errors = self.control.link(id)
         client_utils.print_data(self.get_resource(), result, out_format)
         client_utils.print_data(self.get_resource(), errors, out_format, 'FAIL')
     except TypeError as e:
         raise click.BadArgumentUsage(e.message)
     except Exception as e:
             raise click.ClickException(e.message)
 def delete(self, id, file, out_format):
     try:
         if file:
             parameters = file
         elif id:
             parameters = [{"id":id}]
         else:
             raise TypeError('You need to specify either --id or --file')
         result, errors =  self.control.delete(parameters=parameters)
         client_utils.print_data(self.get_resource(), result, out_format)
         client_utils.print_data(self.get_resource(), errors, out_format, 'FAIL')
     except TypeError as e:
         raise click.BadArgumentUsage(e.message)
     except Exception as e:
         raise click.ClickException(e.message)
 def create(self, attributes, file, out_format):
     try:
         if file:
             parameters = file
         elif attributes:
             parameters = [attributes]
         else:
             # click.get_current_context.get_help()
             raise TypeError('You need to specify either --attributes or --file')
         result, errors = self.control.create(parameters)
         client_utils.print_data(self.get_resource(), result, out_format)
         client_utils.print_data(self.get_resource(), errors, out_format, 'FAIL')
     except TypeError as e:
         raise click.BadArgumentUsage(e.message)
     except Exception as e:
             raise click.ClickException(e.message)
 def list_roles_by_query(self, out_format, parameters):
     try:
         data = []
         result = self.control.index(parameters)
         for row in result:
             row2 = {}
             row.update(row['scope'])
             del row['scope']
             for key, value in row.iteritems():
                 if 'id' in value:
                    row2[key]= value['id']
                    name = self.control.custom_query('/%ss/%s'% (key, row2[key]),key)['name']
                    row2['%s_name'%key] = name
             data.append(row2)
         client_utils.print_data(self.get_resource(), data, out_format)
     except TypeError as e:
         raise click.BadArgumentUsage(e.message)
     except Exception as e:
             raise click.ClickException(e.message)
 def index(self, out_format, parameters=None):
     try:
         result = self.control.index(parameters=None)
         client_utils.print_data(self.get_resource(), result, out_format)
     except Exception as e:
         raise click.ClickException(e.message)