summaryrefslogtreecommitdiff
path: root/hack/infrastructure/docker-ci/report/deployment.py
diff options
context:
space:
mode:
Diffstat (limited to 'hack/infrastructure/docker-ci/report/deployment.py')
-rwxr-xr-xhack/infrastructure/docker-ci/report/deployment.py130
1 files changed, 0 insertions, 130 deletions
diff --git a/hack/infrastructure/docker-ci/report/deployment.py b/hack/infrastructure/docker-ci/report/deployment.py
deleted file mode 100755
index 5b2eaf3cab..0000000000
--- a/hack/infrastructure/docker-ci/report/deployment.py
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/usr/bin/env python
-
-'''Deploy docker-ci report container on Digital Ocean.
-Usage:
- export CONFIG_JSON='
- { "DROPLET_NAME": "Digital_Ocean_dropplet_name",
- "DO_CLIENT_ID": "Digital_Ocean_client_id",
- "DO_API_KEY": "Digital_Ocean_api_key",
- "DOCKER_KEY_ID": "Digital_Ocean_ssh_key_id",
- "DOCKER_CI_KEY_PATH": "docker-ci_private_key_path",
- "DOCKER_CI_PUB": "$(cat docker-ci_ssh_public_key.pub)",
- "DOCKER_CI_ADDRESS" "user@docker-ci_fqdn_server",
- "SMTP_USER": "SMTP_server_user",
- "SMTP_PWD": "SMTP_server_password",
- "EMAIL_SENDER": "Buildbot_mailing_sender",
- "EMAIL_RCP": "Buildbot_mailing_receipient" }'
- python deployment.py
-'''
-
-import re, json, requests, base64
-from fabric import api
-from fabric.api import cd, run, put, sudo
-from os import environ as env
-from time import sleep
-from datetime import datetime
-
-# Populate environment variables
-CONFIG = json.loads(env['CONFIG_JSON'])
-for key in CONFIG:
- env[key] = CONFIG[key]
-
-# Load DOCKER_CI_KEY
-env['DOCKER_CI_KEY'] = open(env['DOCKER_CI_KEY_PATH']).read()
-
-DROPLET_NAME = env.get('DROPLET_NAME','report')
-TIMEOUT = 120 # Seconds before timeout droplet creation
-IMAGE_ID = 1004145 # Docker on Ubuntu 13.04
-REGION_ID = 4 # New York 2
-SIZE_ID = 66 # memory 512MB
-DO_IMAGE_USER = 'root' # Image user on Digital Ocean
-API_URL = 'https://api.digitalocean.com/'
-
-
-class digital_ocean():
-
- def __init__(self, key, client):
- '''Set default API parameters'''
- self.key = key
- self.client = client
- self.api_url = API_URL
-
- def api(self, cmd_path, api_arg={}):
- '''Make api call'''
- api_arg.update({'api_key':self.key, 'client_id':self.client})
- resp = requests.get(self.api_url + cmd_path, params=api_arg).text
- resp = json.loads(resp)
- if resp['status'] != 'OK':
- raise Exception(resp['error_message'])
- return resp
-
- def droplet_data(self, name):
- '''Get droplet data'''
- data = self.api('droplets')
- data = [droplet for droplet in data['droplets']
- if droplet['name'] == name]
- return data[0] if data else {}
-
-def json_fmt(data):
- '''Format json output'''
- return json.dumps(data, sort_keys = True, indent = 2)
-
-
-do = digital_ocean(env['DO_API_KEY'], env['DO_CLIENT_ID'])
-
-# Get DROPLET_NAME data
-data = do.droplet_data(DROPLET_NAME)
-
-# Stop processing if DROPLET_NAME exists on Digital Ocean
-if data:
- print ('Droplet: {} already deployed. Not further processing.'
- .format(DROPLET_NAME))
- exit(1)
-
-# Create droplet
-do.api('droplets/new', {'name':DROPLET_NAME, 'region_id':REGION_ID,
- 'image_id':IMAGE_ID, 'size_id':SIZE_ID,
- 'ssh_key_ids':[env['DOCKER_KEY_ID']]})
-
-# Wait for droplet to be created.
-start_time = datetime.now()
-while (data.get('status','') != 'active' and (
- datetime.now()-start_time).seconds < TIMEOUT):
- data = do.droplet_data(DROPLET_NAME)
- print data['status']
- sleep(3)
-
-# Wait for the machine to boot
-sleep(15)
-
-# Get droplet IP
-ip = str(data['ip_address'])
-print 'droplet: {} ip: {}'.format(DROPLET_NAME, ip)
-
-api.env.host_string = ip
-api.env.user = DO_IMAGE_USER
-api.env.key_filename = env['DOCKER_CI_KEY_PATH']
-
-# Correct timezone
-sudo('echo "America/Los_Angeles" >/etc/timezone')
-sudo('dpkg-reconfigure --frontend noninteractive tzdata')
-
-# Load JSON_CONFIG environment for Dockerfile
-CONFIG_JSON= base64.b64encode(
- '{{"DOCKER_CI_PUB": "{DOCKER_CI_PUB}",'
- ' "DOCKER_CI_KEY": "{DOCKER_CI_KEY}",'
- ' "DOCKER_CI_ADDRESS": "{DOCKER_CI_ADDRESS}",'
- ' "SMTP_USER": "{SMTP_USER}",'
- ' "SMTP_PWD": "{SMTP_PWD}",'
- ' "EMAIL_SENDER": "{EMAIL_SENDER}",'
- ' "EMAIL_RCP": "{EMAIL_RCP}"}}'.format(**env))
-
-run('mkdir -p /data/report')
-put('./', '/data/report')
-with cd('/data/report'):
- run('chmod 700 report.py')
- run('echo "{}" > credentials.json'.format(CONFIG_JSON))
- run('docker build -t report .')
- run('rm credentials.json')
- run("echo -e '30 09 * * * /usr/bin/docker run report\n' |"
- " /usr/bin/crontab -")