in src/lambda.d/nexuspreconfigure/index.py [0:0]
def handler(event, context):
def cfn_error(message=None):
logger.error("| cfn_error: %s" % message)
cfn_send(event, context, CFN_FAILED, reason=message)
try:
logger.info(event)
# cloudformation request type (create/update/delete)
request_type = event['RequestType']
# extract resource properties
props = event['ResourceProperties']
old_props = event.get('OldResourceProperties', {})
if request_type == "Create":
physical_id = f"nexus.on.aws.{str(uuid4())}"
else:
physical_id = event.get('PhysicalResourceId', None)
if not physical_id:
cfn_error("invalid request: request type is '%s' but 'PhysicalResourceId' is not defined" % request_type)
return
if request_type != "Delete":
username = props['Username']
password = props['Password']
endpoint = props['Endpoint']
blobstoreName = props['BlobStoreName'] if 'BlobStoreName' in props else 's3-blobsstore'
bucketName = props['S3BucketName']
nexusHelper = nexus.Nexus(username=username, password=password, endpoint=endpoint)
nexusHelper.deleteAllRepos()
nexusHelper.removeDefaultFileBlobstore()
nexusHelper.createS3Blobstore(blobstoreName, bucketName, '-1')
cfn_send(event, context, CFN_SUCCESS, physicalResourceId=physical_id)
except KeyError as e:
cfn_error(f"invalid request. Missing key {str(e)}")
except Exception as e:
logger.exception(str(e))
cfn_error(str(e))