-
Notifications
You must be signed in to change notification settings - Fork 6.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #156 from GoogleCloudPlatform/managedvms-samples
Adding new Managed VMs samples.
- Loading branch information
Showing
142 changed files
with
2,653 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
# Byte-compiled / optimized / DLL files | ||
__pycache__/ | ||
*.py[cod] | ||
*$py.class | ||
|
||
# C extensions | ||
*.so | ||
|
||
# Distribution / packaging | ||
.Python | ||
env/ | ||
build/ | ||
develop-eggs/ | ||
dist/ | ||
downloads/ | ||
eggs/ | ||
.eggs/ | ||
lib/ | ||
lib64/ | ||
parts/ | ||
sdist/ | ||
var/ | ||
*.egg-info/ | ||
.installed.cfg | ||
*.egg | ||
|
||
# PyInstaller | ||
# Usually these files are written by a python script from a template | ||
# before PyInstaller builds the exe, so as to inject date/other infos into it. | ||
*.manifest | ||
*.spec | ||
|
||
# Installer logs | ||
pip-log.txt | ||
pip-delete-this-directory.txt | ||
|
||
# Unit test / coverage reports | ||
htmlcov/ | ||
.tox/ | ||
.coverage | ||
.coverage.* | ||
.cache | ||
nosetests.xml | ||
coverage.xml | ||
*,cover | ||
|
||
# Django stuff: | ||
*.log | ||
|
||
# Sphinx documentation | ||
docs/_build/ | ||
|
||
# PyBuilder | ||
target/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
## Google App Engine Managed VMs Python Samples | ||
|
||
These are samples for using Python on Google App Engine Managed VMs. These samples are typically referenced from the [docs](https://cloud.google.com/appengine/docs). | ||
|
||
See our other [Google Cloud Platform github repos](https://github.com/GoogleCloudPlatform) for sample applications and | ||
scaffolding for other frameworks and use cases. | ||
|
||
## Run Locally | ||
|
||
Some samples have specific instructions. If there is a README in the sample folder, pleaese refer to it for any additional steps required to run the sample. | ||
|
||
In general, the samples typically require: | ||
|
||
1. Install the [Google Cloud SDK](https://cloud.google.com/sdk/), including the [gcloud tool](https://cloud.google.com/sdk/gcloud/), and [gcloud app component](https://cloud.google.com/sdk/gcloud-app). | ||
|
||
2. Setup the gcloud tool. This provides authentication to Google Cloud APIs and services. | ||
|
||
``` | ||
gcloud init | ||
``` | ||
|
||
3. Clone this repo. | ||
|
||
``` | ||
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git | ||
cd python-docs-samples/managed_vms | ||
``` | ||
|
||
4. Open a sample folder, create a virtualenv, install dependencies, and run the sample: | ||
|
||
``` | ||
cd hello-world | ||
virtualenv env | ||
source env/bin/activate | ||
pip install -r requirements.txt | ||
python main.py | ||
``` | ||
|
||
5. Visit the application at [http://localhost:8080](http://localhost:8080). | ||
|
||
|
||
## Deploying | ||
|
||
Some samples in this repositories may have special deployment instructions. Refer to the readme in the sample directory. | ||
|
||
1. Use the [Google Developers Console](https://console.developer.google.com) to create a project/app id. (App id and project id are identical) | ||
|
||
2. Setup the gcloud tool, if you haven't already. | ||
|
||
``` | ||
gcloud init | ||
``` | ||
|
||
3. Use gcloud to deploy your app. | ||
|
||
``` | ||
gcloud preview app deploy app.yaml | ||
``` | ||
|
||
4. Congratulations! Your application is now live at `your-app-id.appspot.com` | ||
|
||
## Contributing changes | ||
|
||
* See [CONTRIBUTING.md](../CONTRIBUTING.md) | ||
|
||
## Licensing | ||
|
||
* See [LICENSE](../LICENSE) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
.dockerignore | ||
Dockerfile | ||
.git | ||
.hg | ||
.svn | ||
env | ||
*.pyc | ||
__pycache__ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
FROM gcr.io/google_appengine/python | ||
|
||
# Change the -p argument to use Python 2.7 if desired. | ||
RUN virtualenv /env -p python3.4 | ||
|
||
# Set virtualenv environment variables. This is equivalent to running | ||
# source /env/bin/activate. | ||
ENV VIRTUAL_ENV /env | ||
ENV PATH /env/bin:$PATH | ||
|
||
ADD requirements.txt /app/ | ||
RUN pip install -r requirements.txt | ||
ADD . /app/ | ||
|
||
CMD gunicorn -b :$PORT main:app |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# Google Analytics Measurement Protocol sample for Google App Engine Managed VMs | ||
|
||
This sample demonstrates how to use the [Google Analytics Measurement Protocol](https://developers.google.com/analytics/devguides/collection/protocol/v1/) (or any other SQL server) on [Google App Engine Managed VMs](https://cloud.google.com/appengine). | ||
|
||
## Setup | ||
|
||
Before you can run or deploy the sample, you will need to do the following: | ||
|
||
1. Create a Google Analytics Property and obtain the Tracking ID. | ||
|
||
2. Update the environment variables in in ``app.yaml`` with your Tracking ID. | ||
|
||
## Running locally | ||
|
||
Refer to the [top-level README](../README.md) for instructions on running and deploying. | ||
|
||
You will need to set the following environment variables via your shell before running the sample: | ||
|
||
$ export GA_TRACKING_ID=[your Tracking ID] | ||
$ python main.py |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
runtime: custom | ||
vm: true | ||
|
||
#[START env] | ||
env_variables: | ||
GA_TRACKING_ID: your-tracking-id | ||
#[END env] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
# Copyright 2015 Google Inc. All Rights Reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
# [START app] | ||
import os | ||
|
||
from flask import Flask | ||
import requests | ||
|
||
|
||
app = Flask(__name__) | ||
|
||
|
||
# Environment variables are defined in app.yaml. | ||
GA_TRACKING_ID = os.environ['GA_TRACKING_ID'] | ||
|
||
|
||
def track_event(category, action, label=None, value=None): | ||
data = { | ||
'v': '1', # API Version. | ||
'tid': GA_TRACKING_ID, # Tracking ID / Property ID. | ||
# Anonymous Client Identifier. Ideally, this should be a UUID that | ||
# is associated with particular user, device, or browser instance. | ||
'cid': '555', | ||
't': 'event', # Event hit type. | ||
'ec': category, # Event category. | ||
'ea': action, # Event action. | ||
'el': label, # Event label. | ||
'ev': value, # Event valueself. | ||
} | ||
|
||
response = requests.post( | ||
'http://www.google-analytics.com/collect', data=data) | ||
|
||
# If the request fails, this will raise a RequestException. Depending | ||
# on your application's needs, this may be a non-error and can be caught | ||
# by the caller. | ||
response.raise_for_status() | ||
|
||
|
||
@app.route('/') | ||
def track_example(): | ||
track_event( | ||
category='Example', | ||
action='test action') | ||
return 'Event tracked.' | ||
|
||
|
||
if __name__ == '__main__': | ||
# This is used when running locally. Gunicorn is used to run the | ||
# application on Google App Engine. See CMD in Dockerfile. | ||
app.run(host='127.0.0.1', port=8080, debug=True) | ||
# [END app] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
Flask==0.10.1 | ||
gunicorn==19.4.5 | ||
requests[security]==2.9.1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
.dockerignore | ||
Dockerfile | ||
.git | ||
.hg | ||
.svn | ||
env | ||
*.pyc | ||
__pycache__ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
FROM gcr.io/google_appengine/python | ||
|
||
# Change the -p argument to use Python 2.7 if desired. | ||
RUN virtualenv /env -p python3.4 | ||
|
||
# Set virtualenv environment variables. This is equivalent to running | ||
# source /env/bin/activate. | ||
ENV VIRTUAL_ENV /env | ||
ENV PATH /env/bin:$PATH | ||
|
||
ADD requirements.txt /app/ | ||
RUN pip install -r requirements.txt | ||
ADD . /app/ | ||
|
||
CMD gunicorn -b :$PORT main:app |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
# Python Google Cloud SQL sample for Google App Engine Managed VMs | ||
|
||
This sample demonstrates how to use [Google Cloud SQL](https://cloud.google.com/sql/) (or any other SQL server) on [Google App Engine Managed VMs](https://cloud.google.com/appengine). | ||
|
||
## Setup | ||
|
||
Before you can run or deploy the sample, you will need to do the following: | ||
|
||
1. Create a Cloud SQL instance. You can do this from the [Google Developers Console](https://console.developers.google.com) or via the [Cloud SDK](https://cloud.google.com/sdk). To create it via the SDK use the following command: | ||
|
||
$ gcloud sql instances create [your-instance-name] \ | ||
--assign-ip \ | ||
--authorized-networks 0.0.0.0/0 \ | ||
--tier D0 | ||
|
||
2. Create a new user and database for the application. The easiest way to do this is via the [Google Developers Console](https://console.developers.google.com/project/_/sql/instances/example-instance2/access-control/users). Alternatively, you can use MySQL tools such as the command line client or workbench, but you will need to set a root password for your database using `gcloud sql instances set-root-password`. | ||
|
||
3. Update the connection string in ``app.yaml`` with your instance values. | ||
|
||
4. Finally, run ``create_tables.py`` to ensure that the database is properly configured and to create the tables needed for the sample. | ||
|
||
## Running locally | ||
|
||
Refer to the [top-level README](../README.md) for instructions on running and deploying. | ||
|
||
You will need to set the following environment variables via your shell before running the sample: | ||
|
||
$ export SQLALCHEMY_DATABASE_URI=[your connection string] | ||
$ python main.py |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
runtime: custom | ||
vm: true | ||
|
||
#[START env] | ||
env_variables: | ||
# Replace user, password, and host with the values obtained when | ||
# configuring your Cloud SQL instance. | ||
SQLALCHEMY_DATABASE_URI: mysql+pymysql://user:password@host/db | ||
# If you are connecting over SSL, you can specify your certificates by | ||
# using a connection string such as: | ||
# > mysql+pymysql://user:password@host/db? | ||
# ssl_key=client-key.pem?ssl_cert=client-cert.pem?ssl_ca=server-ca.pem | ||
#[END env] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
#! /usr/bin/env python | ||
# Copyright 2015 Google Inc. All Rights Reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
# [START all] | ||
|
||
from main import db | ||
|
||
|
||
if __name__ == '__main__': | ||
print('Creating all database tables...') | ||
db.create_all() | ||
print('Done!') | ||
# [END all] |
Oops, something went wrong.