def _build_label_filter(category, *args, **kwargs):
 terms = list(args)
 for (key, value) in six.iteritems(kwargs):
  if (value is None):
   continue
  suffix = None
  if key.endswith(('_prefix', '_suffix', '_greater', '_greaterequal', '_less', '_lessequal')):
   (key, suffix) = key.rsplit('_', 1)
  if ((category == 'resource') and (key == 'resource_type')):
   key = 'resource.type'
  else:
   key = '.'.join((category, 'label', key))
  if (suffix == 'prefix'):
   term = '{key} = starts_with("{value}")'
  elif (suffix == 'suffix'):
   term = '{key} = ends_with("{value}")'
  elif (suffix == 'greater'):
   term = '{key} > {value}'
  elif (suffix == 'greaterequal'):
   term = '{key} >= {value}'
  elif (suffix == 'less'):
   term = '{key} < {value}'
  elif (suffix == 'lessequal'):
   term = '{key} <= {value}'
  else:
   term = '{key} = "{value}"'
  terms.append(term.format(key=key, value=value))
 return ' AND '.join(sorted(terms))

def _build_label_filter ( category , * args , ** kwargs ) : terms = list ( args ) for ( key , value ) in six . iteritems ( kwargs ) : if ( value is None ) : continue suffix = None if key . endswith ( ( '_prefix' , '_suffix' , '_greater' , '_greaterequal' , '_less' , '_lessequal' ) ) : ( key , suffix ) = key . rsplit ( '_' , 1 ) if ( ( category == 'resource' ) and ( key == 'resource_type' ) ) : key = 'resource.type' else : key = '.' . join ( ( category , 'label' , key ) ) if ( suffix == 'prefix' ) : term = '{key} = starts_with("{value}")' elif ( suffix == 'suffix' ) : term = '{key} = ends_with("{value}")' elif ( suffix == 'greater' ) : term = '{key} > {value}' elif ( suffix == 'greaterequal' ) : term = '{key} >= {value}' elif ( suffix == 'less' ) : term = '{key} < {value}' elif ( suffix == 'lessequal' ) : term = '{key} <= {value}' else : term = '{key} = "{value}"' terms . append ( term . format ( key = key , value = value ) ) return ' AND ' . join ( sorted ( terms ) )
construct a filter string to filter on metric or resource labels .