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])