Skip to content

Commit

Permalink
Merge pull request serverless#6822 from tbarlow12/azure-python-template
Browse files Browse the repository at this point in the history
Azure Python template
  • Loading branch information
pmuens authored Oct 14, 2019
2 parents c68dd35 + faebd6f commit cd7dbfd
Show file tree
Hide file tree
Showing 8 changed files with 307 additions and 0 deletions.
3 changes: 3 additions & 0 deletions lib/plugins/create/templates/azure-python/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Azure Functions

Refer to [Serverless docs](https://serverless.com/framework/docs/providers/azure/guide/intro/) for more information.
103 changes: 103 additions & 0 deletions lib/plugins/create/templates/azure-python/gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# TypeScript v1 declaration files
typings/

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache

# next.js build output
.next

# nuxt.js build output
.nuxt

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TypeScript output
dist
out

# Azure Functions artifacts
bin
obj
appsettings.json
local.settings.json
.python_packages/

# Python
__pycache__/

# Virtual Environments
env/
.env/
.venv/
3 changes: 3 additions & 0 deletions lib/plugins/create/templates/azure-python/host.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"version": "2.0"
}
2 changes: 2 additions & 0 deletions lib/plugins/create/templates/azure-python/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
azure.functions
azure-functions-worker
148 changes: 148 additions & 0 deletions lib/plugins/create/templates/azure-python/serverless.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
# Welcome to Serverless!
#
# This file is the main config file for your service.
# It's very minimal at this point and uses default values.
# You can always add more config options for more control.
# We've included some commented out config examples here.
# Just uncomment any of them to get that config option.
#
# For full config options, check the docs:
# docs.serverless.com
#
# Happy Coding!

service: tabarlow-azure-python # NOTE: update this with your service name

# You can pin your service to only deploy with a specific Serverless version
# Check out our docs for more details
# frameworkVersion: "=X.X.X"

provider:
name: azure
region: West Europe
runtime: python3.6
# prefix: "sample" # prefix of generated resource name
# subscriptionId: A356AC8C-E310-44F4-BF85-C7F29044AF99
# stage: dev
# type: premium # premium azure functions

environment: # these will be created as application settings
VARIABLE_FOO: 'foo'

# you can define apim configuration here
# apim:
# apis:
# - name: v1
# subscriptionRequired: false # if true must provide an api key
# displayName: v1
# description: V1 sample app APIs
# protocols:
# - https
# path: v1
# tags:
# - tag1
# - tag2
# authorization: none
# cors:
# allowCredentials: false
# allowedOrigins:
# - "*"
# allowedMethods:
# - GET
# - POST
# - PUT
# - DELETE
# - PATCH
# allowedHeaders:
# - "*"
# exposeHeaders:
# - "*"

plugins: # look for additional plugins in the community plugins repo: https://github.com/serverless/plugins
- serverless-azure-functions

# you can add packaging information here
package:
# include:
# - include-me.py
# - include-me-dir/**
exclude:
- env/**
- .env/**
# # - exclude-me.py
# # - exclude-me-dir/**
# - local.settings.json
# - .vscode/**
# - node_modules/**
# - .gitignore
# - .git/**
# - env/**
# - package.json
# - package-lock.json

functions:
hello:
handler: src/handlers/hello.main
events:
- http: true
x-azure-settings:
methods:
- GET
authLevel: anonymous

goodbye:
handler: src/handlers/goodbye.main
events:
- http: true
x-azure-settings:
methods:
- GET
authLevel: anonymous
# The following are a few examples of other events you can configure:
# storageBlob:
# handler: src/handlers/storageBlob
# events:
# - blob:
# x-azure-settings:
# name: blob # Specifies which name is available on `context`
# path: blob-sample/{blobName}
# connection: AzureWebJobsStorage # App Setting/environment variable which contains Storage Account Connection String
# storageQueue:
# handler: src/handlers/storageQueue
# events:
# - queue: queue-sample
# x-azure-settings:
# name: message # Specifies which naem is available on `context`
# connection: AzureWebJobsStorage
# timer:
# handler: src/handlers/timer
# events:
# - timer:
# x-azure-settings:
# schedule: '*/10 * * * * *'
# eventhub:
# handler: src/handlers/eventHub
# events:
# - eventHub:
# x-azure-settings:
# name: eventHubMessages # Specifies which name it's available on `context`
# eventHubName: sample-hub # Specifies the Name of the Event Hub
# consumerGroup: $Default # Specifies the consumerGroup to listen with
# connection: EVENT_HUBS_CONNECTION # App Setting/environment variable which contains Event Hubs Namespace Connection String
# serviceBusQueue:
# handler: src/handlers/serviceBusQueue
# events:
# - serviceBus:
# x-azure-settings:
# name: message # Specifies which name is available on `context`
# queueName: sample-queue # Name of the service bus queue to consume
# connection: SERVICE_BUS_CONNECTION # App Setting/environment variable variable which contains Service Bus Namespace Connection String
# serviceBusTopic:
# handler: src/handlers/serviceBusTopic
# events:
# - serviceBus:
# x-azure-settings:
# name: message # Specifies which name it's available on `context`
# topicName: sample-topic # Name of the service bus topic to consume
# subscriptionName: sample-subscription # Name of the topic subscription to retrieve from
# connection: SERVICE_BUS_CONNECTION # App Setting/environment variable variable which contains Service Bus Namespace Connection String
Empty file.
24 changes: 24 additions & 0 deletions lib/plugins/create/templates/azure-python/src/handlers/goodbye.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import logging

import azure.functions as func


def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')

name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')

if name:
return func.HttpResponse(f'Goodbye {name}!')
else:
return func.HttpResponse(
"Please pass a name on the query string or in the request body",
status_code=400
)
24 changes: 24 additions & 0 deletions lib/plugins/create/templates/azure-python/src/handlers/hello.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import logging

import azure.functions as func


def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')

name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')

if name:
return func.HttpResponse(f"Hello {name}!")
else:
return func.HttpResponse(
"Please pass a name on the query string or in the request body",
status_code=400
)

0 comments on commit cd7dbfd

Please sign in to comment.