def main()

in blueprints/cloud-operations/asset-inventory-feed-remediation/cf/main.py [0:0]


def main(event=None, context=None):
  'Cloud Function entry point.'
  logging.basicConfig(level=logging.INFO)
  try:
    data = _parse_event(event)
    instance = _parse_asset(data)
    project, zone, name = _parse_self_link(instance['selfLink'])
  except Error as e:
    logging.critical(e.args[0])
    return
  logging.info('checking %s', instance['selfLink'])
  if instance['status'] not in ('RUNNING', 'TERMINATED'):
    logging.info('ignoring status %s', instance['status'])
    return
  tags = instance.get('tags', {})
  logging.info('tags %s', tags.get('items'))
  if not tags or not tags.get('items'):
    return
  valid_tags = _validate_tags(project, tags['items'])
  if tags['items'] == valid_tags:
    logging.info('all tags are valid')
    return
  logging.info('modify tags %s %s %s %s %s', project, zone, name,
               tags['fingerprint'], valid_tags)
  try:
    _set_tags(project, zone, name, tags.get('fingerprint'), valid_tags)
  except Error as e:
    logging.critical(e.args[0])