From e174380a0bb60a82ea95470331c8e79c9534e5c6 Mon Sep 17 00:00:00 2001 From: alexander-l-stone Date: Wed, 17 Oct 2018 15:31:36 -0700 Subject: [PATCH 1/3] changed celery yaml files. --- deploy/celery/beat-deployment.yaml | 2 +- deploy/celery/worker-deployment.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/celery/beat-deployment.yaml b/deploy/celery/beat-deployment.yaml index 0985bb5..32a0d6f 100644 --- a/deploy/celery/beat-deployment.yaml +++ b/deploy/celery/beat-deployment.yaml @@ -17,7 +17,7 @@ spec: containers: - name: celery-beat image: detoxipy:0.0.1 - command: ['celery', '-A', 'kubernetes_django', 'beat', '-l', 'debug'] + command: ['celery', '-A', '', 'beat', '-l', 'debug'] env: - name: POSTGRES_USER valueFrom: diff --git a/deploy/celery/worker-deployment.yaml b/deploy/celery/worker-deployment.yaml index 5230f74..01b6ff7 100644 --- a/deploy/celery/worker-deployment.yaml +++ b/deploy/celery/worker-deployment.yaml @@ -17,7 +17,7 @@ spec: containers: - name: celery-worker image: detoxipy:0.0.1 - command: ['celery', '-A', 'kubernetes_django', 'worker', '-l', 'info'] + command: ['celery', '-A', '', 'worker', '-l', 'info'] env: - name: POSTGRES_USER valueFrom: From 7d4663aa4a3ed1716f6a13f4e27dff093b6c6cec Mon Sep 17 00:00:00 2001 From: alexander-l-stone Date: Wed, 17 Oct 2018 21:27:21 -0700 Subject: [PATCH 2/3] changed from kubernetes to script base deployment. --- Pipfile | 3 +- Pipfile.lock | 57 ++++++++++++++-------------- deploy.py | 10 +++++ deploy/celery/beat-deployment.yaml | 38 ------------------- deploy/celery/worker-deployment.yaml | 38 ------------------- deploy/django/deployment.yaml | 39 ------------------- deploy/django/job-migration.yaml | 26 ------------- deploy/django/service.yaml | 12 ------ deploy/flower/deployment.yaml | 28 -------------- deploy/flower/service.yaml | 10 ----- deploy/postgres/deployment.yaml | 44 --------------------- deploy/postgres/secrets.yaml | 8 ---- deploy/postgres/service.yaml | 11 ------ deploy/postgres/volume.yaml | 15 -------- deploy/postgres/volume_claim.yaml | 13 ------- deploy/rds/service.yaml | 7 ---- deploy/redis/deployment.yaml | 25 ------------ deploy/redis/service.yaml | 11 ------ 18 files changed, 41 insertions(+), 354 deletions(-) create mode 100644 deploy.py delete mode 100644 deploy/celery/beat-deployment.yaml delete mode 100644 deploy/celery/worker-deployment.yaml delete mode 100644 deploy/django/deployment.yaml delete mode 100644 deploy/django/job-migration.yaml delete mode 100644 deploy/django/service.yaml delete mode 100644 deploy/flower/deployment.yaml delete mode 100644 deploy/flower/service.yaml delete mode 100644 deploy/postgres/deployment.yaml delete mode 100644 deploy/postgres/secrets.yaml delete mode 100644 deploy/postgres/service.yaml delete mode 100644 deploy/postgres/volume.yaml delete mode 100644 deploy/postgres/volume_claim.yaml delete mode 100644 deploy/rds/service.yaml delete mode 100644 deploy/redis/deployment.yaml delete mode 100644 deploy/redis/service.yaml diff --git a/Pipfile b/Pipfile index eab93c0..9962cdb 100644 --- a/Pipfile +++ b/Pipfile @@ -14,10 +14,11 @@ flower = "==0.9.2" kombu = ">=4.2.0" "psycopg2" = "==2.7.5" redis = "==2.10.6" +sh = "*" +boto = "*" [dev-packages] pylint = "*" -"flake8" = "*" "pep8" = "*" pytest = "*" "autopep8" = "*" diff --git a/Pipfile.lock b/Pipfile.lock index e16ad42..9586095 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "9de5e4217026727b8e332aaef09ee0c1f6f9349e80bcb9fd12746453b0e324b3" + "sha256": "9a1b9ae158d9e7ab3e0de2fd7f2f2dc3bce5697cb2f45d4d0c3bb135e48d2a96" }, "pipfile-spec": 6, "requires": { @@ -36,6 +36,14 @@ ], "version": "==3.5.0.4" }, + "boto": { + "hashes": [ + "sha256:147758d41ae7240dc989f0039f27da8ca0d53734be0eb869ef16e3adcfa462e8", + "sha256:ea0d3b40a2d852767be77ca343b58a9e3a4b00d9db440efb8da74b4e58025e5a" + ], + "index": "pypi", + "version": "==2.49.0" + }, "celery": { "hashes": [ "sha256:6fc4678d1692af97e137b2a9f1c04efd8e7e2fb7134c5c5ad60738cdd927762f", @@ -141,6 +149,14 @@ "index": "pypi", "version": "==2.10.6" }, + "sh": { + "hashes": [ + "sha256:ae3258c5249493cebe73cb4e18253a41ed69262484bad36fdb3efcb8ad8870bb", + "sha256:b52bf5833ed01c7b5c5fb73a7f71b3d98d48e9b9b8764236237bdc7ecae850fc" + ], + "index": "pypi", + "version": "==1.12.14" + }, "tornado": { "hashes": [ "sha256:0662d28b1ca9f67108c7e3b77afabfb9c7e87bde174fbda78186ecedc2499a9d", @@ -187,10 +203,10 @@ }, "autopep8": { "hashes": [ - "sha256:655e3ee8b4545be6cfed18985f581ee9ecc74a232550ee46e9797b6fbf4f336d" + "sha256:096426ef4b489784c08395d7fc7f8cbf38a107b806984513e4c2d9070b0dc1d8" ], "index": "pypi", - "version": "==1.4" + "version": "==1.4.1" }, "factory-boy": { "hashes": [ @@ -207,14 +223,6 @@ ], "version": "==0.9.2" }, - "flake8": { - "hashes": [ - "sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0", - "sha256:c7841163e2b576d435799169b78703ad6ac1bbb0f199994fc05f700b2a90ea37" - ], - "index": "pypi", - "version": "==3.5.0" - }, "isort": { "hashes": [ "sha256:1153601da39a25b14ddc54955dbbacbb6b2d19135386699e2ad58517953b34af", @@ -283,11 +291,11 @@ }, "pluggy": { "hashes": [ - "sha256:6e3836e39f4d36ae72840833db137f7b7d35105079aee6ec4a62d9f80d594dd1", - "sha256:95eb8364a4708392bae89035f45341871286a333f749c3141c20573d2b3876e1" + "sha256:447ba94990e8014ee25ec853339faf7b0fc8050cdc3289d4d71f7f410fb90095", + "sha256:bde19360a8ec4dfd8a20dcb811780a30998101f078fc7ded6162f0076f50508f" ], - "markers": "python_version != '3.2.*' and python_version != '3.0.*' and python_version != '3.3.*' and python_version != '3.1.*' and python_version >= '2.7'", - "version": "==0.7.1" + "markers": "python_version != '3.2.*' and python_version != '3.3.*' and python_version != '3.0.*' and python_version >= '2.7' and python_version != '3.1.*'", + "version": "==0.8.0" }, "py": { "hashes": [ @@ -299,17 +307,10 @@ }, "pycodestyle": { "hashes": [ - "sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766", - "sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9" + "sha256:cbc619d09254895b0d12c2c691e237b2e91e9b2ecf5e84c26b35400f93dcfb83", + "sha256:cbfca99bd594a10f674d0cd97a3d802a1fdef635d4361e1a2658de47ed261e3a" ], - "version": "==2.3.1" - }, - "pyflakes": { - "hashes": [ - "sha256:08bd6a50edf8cffa9fa09a463063c425ecaaf10d1eb0335a7e8b1401aef89e6f", - "sha256:8d616a382f243dbf19b54743f280b80198be0bca3a5396f1d2e1fca6223e8805" - ], - "version": "==1.6.0" + "version": "==2.4.0" }, "pylint": { "hashes": [ @@ -321,11 +322,11 @@ }, "pytest": { "hashes": [ - "sha256:7e258ee50338f4e46957f9e09a0f10fb1c2d05493fa901d113a8dafd0790de4e", - "sha256:9332147e9af2dcf46cd7ceb14d5acadb6564744ddff1fe8c17f0ce60ece7d9a2" + "sha256:10e59f84267370ab20cec9305bafe7505ba4d6b93ecbf66a1cce86193ed511d5", + "sha256:8c827e7d4816dfe13e9329c8226aef8e6e75d65b939bc74fda894143b6d1df59" ], "index": "pypi", - "version": "==3.8.2" + "version": "==3.9.1" }, "python-dateutil": { "hashes": [ diff --git a/deploy.py b/deploy.py new file mode 100644 index 0000000..f6eb120 --- /dev/null +++ b/deploy.py @@ -0,0 +1,10 @@ +import sh +import boto +import os + +rds_conn = boto.rds.connect_to_region('us-west-2') +db = rds_conn.create_dbinstance(os.environ.get('RDS_NAME'), 20, 'db.t2.micro', os.environ.get('RDS_USER'), os.environ.get('RDS_PASSWORD')) +db = rds_conn.get_all_dbinstances(os.environ.get('RDS_NAME'))[0] +while db.status != 'available': + print('waiting for rds to spin up.\n') + diff --git a/deploy/celery/beat-deployment.yaml b/deploy/celery/beat-deployment.yaml deleted file mode 100644 index 32a0d6f..0000000 --- a/deploy/celery/beat-deployment.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: celery-beat - labels: - deployment: celery-beat -spec: - replicas: 1 - selector: - matchLabels: - pod: celery-beat - template: - metadata: - labels: - pod: celery-beat - spec: - containers: - - name: celery-beat - image: detoxipy:0.0.1 - command: ['celery', '-A', '', 'beat', '-l', 'debug'] - env: - - name: POSTGRES_USER - valueFrom: - secretKeyRef: - name: postgres-credentials - key: user - - - name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: postgres-credentials - key: password - - - name: POSTGRES_HOST - value: postgres-service - - - name: REDIS_HOST - value: redis-service diff --git a/deploy/celery/worker-deployment.yaml b/deploy/celery/worker-deployment.yaml deleted file mode 100644 index 01b6ff7..0000000 --- a/deploy/celery/worker-deployment.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: celery-worker - labels: - deployment: celery-worker -spec: - replicas: 1 - selector: - matchLabels: - pod: celery-worker - template: - metadata: - labels: - pod: celery-worker - spec: - containers: - - name: celery-worker - image: detoxipy:0.0.1 - command: ['celery', '-A', '', 'worker', '-l', 'info'] - env: - - name: POSTGRES_USER - valueFrom: - secretKeyRef: - name: postgres-credentials - key: user - - - name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: postgres-credentials - key: password - - - name: POSTGRES_HOST - value: postgres-service - - - name: REDIS_HOST - value: redis-service diff --git a/deploy/django/deployment.yaml b/deploy/django/deployment.yaml deleted file mode 100644 index 84998a1..0000000 --- a/deploy/django/deployment.yaml +++ /dev/null @@ -1,39 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: detoxipy-server - labels: - deployment: detoxipy-server -spec: - replicas: 1 - selector: - matchLabels: - pod: detoxipy-server - template: - metadata: - labels: - pod: detoxipy-server - spec: - containers: - - name: detoxipy-server - image: detoxipy:0.0.1 - ports: - - containerPort: 8000 - env: - - name: POSTGRES_USER - valueFrom: - secretKeyRef: - name: postgres-credentials - key: user - - - name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: postgres-credentials - key: password - - - name: POSTGRES_HOST - value: postgres-service - - - name: REDIS_HOST - value: redis-service diff --git a/deploy/django/job-migration.yaml b/deploy/django/job-migration.yaml deleted file mode 100644 index cf606ff..0000000 --- a/deploy/django/job-migration.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: detoxipy-server-migrations -spec: - template: - spec: - containers: - - name: detoxipy-server - image: detoxipy:0.0.1 - command: ['python', 'manage.py', 'migrate'] - env: - - name: POSTGRES_USER - valueFrom: - secretKeyRef: - name: postgres-credentials - key: user - - name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: postgres-credentials - key: password - - name: POSTGREST_HOST - value: postgres-service - restartPolicy: Never - backoffLimit: 5 diff --git a/deploy/django/service.yaml b/deploy/django/service.yaml deleted file mode 100644 index 24c9220..0000000 --- a/deploy/django/service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: detoxipy-server-service -spec: - selector: - pod: detoxipy-server - ports: - - protocol: TCP - port: 80 - targetPort: 8000 - type: NodePort diff --git a/deploy/flower/deployment.yaml b/deploy/flower/deployment.yaml deleted file mode 100644 index 9162500..0000000 --- a/deploy/flower/deployment.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: flower - labels: - deployment: flower -spec: - replicas: 1 - selector: - matchLabels: - pod: celery-flower - template: - metadata: - labels: - pod: celery-flower - spec: - containers: - - name: flower - image: detoxipy:0.0.1 - command: ['celery', 'flower', '-A', 'kubernetes_django' , 'flower'] - ports: - - containerPort: 5555 - env: - - name: REDIS_HOST - value: redis-service - resources: - limits: - cpu: 100m diff --git a/deploy/flower/service.yaml b/deploy/flower/service.yaml deleted file mode 100644 index a3fbfe4..0000000 --- a/deploy/flower/service.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: flower-service -spec: - selector: - pod: celery-flower - ports: - - port: 5555 - type: NodePort diff --git a/deploy/postgres/deployment.yaml b/deploy/postgres/deployment.yaml deleted file mode 100644 index bb7fff3..0000000 --- a/deploy/postgres/deployment.yaml +++ /dev/null @@ -1,44 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: postgres -spec: - replicas: 1 - selector: - matchLabels: - app: postgres-container - template: - metadata: - labels: - app: postgres-container - tier: backend - spec: - containers: - - name: postgres-container - image: postgres:9.6.6 - env: - - name: POSTGRES_USER - valueFrom: - secretKeyRef: - name: postgres-credentials - key: user - - - name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: postgres-credentials - key: password - - - name: POSTGRES_DB - value: kubernetes_django - - ports: - - containerPort: 5432 - volumeMounts: - - name: postgres-volume-mount - mountPath: /var/lib/postgresql/data - - volumes: - - name: postgres-volume-mount - persistentVolumeClaim: - claimName: postgres-pvc diff --git a/deploy/postgres/secrets.yaml b/deploy/postgres/secrets.yaml deleted file mode 100644 index 72b7994..0000000 --- a/deploy/postgres/secrets.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: postgres-credentials -type: Opaque -data: - user: ZGphbmdv - password: MWEyNmQxZzI2ZDFnZXNiP2U3ZGVzYj9lN2Q= diff --git a/deploy/postgres/service.yaml b/deploy/postgres/service.yaml deleted file mode 100644 index b05cabd..0000000 --- a/deploy/postgres/service.yaml +++ /dev/null @@ -1,11 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: postgres-service -spec: - selector: - app: postgres-container - ports: - - protocol: TCP - port: 5432 - targetPort: 5432 diff --git a/deploy/postgres/volume.yaml b/deploy/postgres/volume.yaml deleted file mode 100644 index 1deb8f0..0000000 --- a/deploy/postgres/volume.yaml +++ /dev/null @@ -1,15 +0,0 @@ -kind: PersistentVolume -apiVersion: v1 -metadata: - name: postgres-pv - labels: - type: local -spec: - capacity: - storage: 2Gi - storageClassName: standard - accessModes: - - ReadWriteMany - hostPath: - path: /data/postgres-pv - diff --git a/deploy/postgres/volume_claim.yaml b/deploy/postgres/volume_claim.yaml deleted file mode 100644 index 96c35de..0000000 --- a/deploy/postgres/volume_claim.yaml +++ /dev/null @@ -1,13 +0,0 @@ -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: postgres-pvc - labels: - type: local -spec: - accessModes: - - ReadWriteMany - resources: - requests: - storage: 2Gi - volumeName: postgres-pv \ No newline at end of file diff --git a/deploy/rds/service.yaml b/deploy/rds/service.yaml deleted file mode 100644 index dd2364b..0000000 --- a/deploy/rds/service.yaml +++ /dev/null @@ -1,7 +0,0 @@ -kind: Service -apiVersion: v1 -metadata: - name: postgres-service -spec: - type: ExternalName - externalName: Nope diff --git a/deploy/redis/deployment.yaml b/deploy/redis/deployment.yaml deleted file mode 100644 index 0f1878b..0000000 --- a/deploy/redis/deployment.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: redis - labels: - deployment: redis -spec: - selector: - matchLabels: - pod: redis - replicas: 1 - template: - metadata: - labels: - pod: redis - spec: - containers: - - name: master - image: redis - resources: - requests: - cpu: 100m - memory: 100Mi - ports: - - containerPort: 6379 diff --git a/deploy/redis/service.yaml b/deploy/redis/service.yaml deleted file mode 100644 index 852d083..0000000 --- a/deploy/redis/service.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: redis-service -spec: - selector: - pod: redis - ports: - - protocol: TCP - port: 6379 - targetPort: 6379 From f535b92bd85cd7f2917121e6899d6893059d5a5c Mon Sep 17 00:00:00 2001 From: alexander-l-stone Date: Thu, 18 Oct 2018 14:41:19 -0700 Subject: [PATCH 3/3] updated deployment file. This is currently sidelined until functionality is achieved. --- Pipfile | 1 + Pipfile.lock | 69 +++++++++++++++++++++++++++++++++++++++++++++++++--- deploy.py | 59 +++++++++++++++++++++++++++++++++++++++----- 3 files changed, 119 insertions(+), 10 deletions(-) diff --git a/Pipfile b/Pipfile index 9962cdb..314be12 100644 --- a/Pipfile +++ b/Pipfile @@ -16,6 +16,7 @@ kombu = ">=4.2.0" redis = "==2.10.6" sh = "*" boto = "*" +"boto3" = "*" [dev-packages] pylint = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 9586095..3f6b1f4 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "9a1b9ae158d9e7ab3e0de2fd7f2f2dc3bce5697cb2f45d4d0c3bb135e48d2a96" + "sha256": "13b7ec0f86275a01350558f8fedeb8a4e31c021e49517dafccabcc754fa75491" }, "pipfile-spec": 6, "requires": { @@ -44,6 +44,21 @@ "index": "pypi", "version": "==2.49.0" }, + "boto3": { + "hashes": [ + "sha256:077a653f14f1090a4bdc6afd4bee6e44f8f2ca3e442dd64df9652a6e96d741f3", + "sha256:fe75e8d76f81f86c0860e6c337812b261d774f9582f9ecbdb364d9e9bc589d29" + ], + "index": "pypi", + "version": "==1.9.26" + }, + "botocore": { + "hashes": [ + "sha256:b234cd935cc79013089742abd95e3c8246d9be7c68d3523cb910c86c5b2fab43", + "sha256:e9599b346a23c648957e955e045196da68013f7262f7c7d36f7a98232438461f" + ], + "version": "==1.12.26" + }, "celery": { "hashes": [ "sha256:6fc4678d1692af97e137b2a9f1c04efd8e7e2fb7134c5c5ad60738cdd927762f", @@ -77,11 +92,19 @@ }, "djangorestframework": { "hashes": [ - "sha256:b6714c3e4b0f8d524f193c91ecf5f5450092c2145439ac2769711f7eba89a9d9", - "sha256:c375e4f95a3a64fccac412e36fb42ba36881e52313ec021ef410b40f67cddca4" + "sha256:607865b0bb1598b153793892101d881466bd5a991de12bd6229abb18b1c86136", + "sha256:63f76cbe1e7d12b94c357d7e54401103b2e52aef0f7c1650d6c820ad708776e5" ], "index": "pypi", - "version": "==3.8.2" + "version": "==3.9.0" + }, + "docutils": { + "hashes": [ + "sha256:02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6", + "sha256:51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274", + "sha256:7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6" + ], + "version": "==0.14" }, "flower": { "hashes": [ @@ -90,6 +113,13 @@ "index": "pypi", "version": "==0.9.2" }, + "jmespath": { + "hashes": [ + "sha256:6a81d4c9aa62caf061cb517b4d9ad1dd300374cd4706997aff9cd6aedd61fc64", + "sha256:f11b4461f425740a1d908e9a3f7365c3d2e569f6ca68a2ff8bc5bcd9676edd63" + ], + "version": "==0.9.3" + }, "kombu": { "hashes": [ "sha256:86adec6c60f63124e2082ea8481bbe4ebe04fde8ebed32c177c7f0cd2c1c9082", @@ -134,6 +164,14 @@ "index": "pypi", "version": "==2.7.5" }, + "python-dateutil": { + "hashes": [ + "sha256:1adb80e7a782c12e52ef9a8182bebeb73f1d7e24e374397af06fb4956c8dc5c0", + "sha256:e27001de32f627c22380a688bcc43ce83504a7bc5da472209b4c70f02829f0b8" + ], + "markers": "python_version >= '2.7'", + "version": "==2.7.3" + }, "pytz": { "hashes": [ "sha256:a061aa0a9e06881eb8b3b2b43f05b9439d6583c206d0a6c340ff72a7b6669053", @@ -149,6 +187,13 @@ "index": "pypi", "version": "==2.10.6" }, + "s3transfer": { + "hashes": [ + "sha256:90dc18e028989c609146e241ea153250be451e05ecc0c2832565231dacdf59c1", + "sha256:c7a9ec356982d5e9ab2d4b46391a7d6a950e2b04c472419f5fdec70cc0ada72f" + ], + "version": "==0.1.13" + }, "sh": { "hashes": [ "sha256:ae3258c5249493cebe73cb4e18253a41ed69262484bad36fdb3efcb8ad8870bb", @@ -157,6 +202,13 @@ "index": "pypi", "version": "==1.12.14" }, + "six": { + "hashes": [ + "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9", + "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb" + ], + "version": "==1.11.0" + }, "tornado": { "hashes": [ "sha256:0662d28b1ca9f67108c7e3b77afabfb9c7e87bde174fbda78186ecedc2499a9d", @@ -170,6 +222,14 @@ "markers": "python_version != '3.0.*' and python_version >= '2.7' and python_version != '3.1.*' and python_version != '3.2.*' and python_version != '3.3.*'", "version": "==5.1.1" }, + "urllib3": { + "hashes": [ + "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf", + "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5" + ], + "markers": "python_version != '3.1.*' and python_version >= '2.6' and python_version < '4' and python_version != '3.2.*' and python_version != '3.3.*' and python_version != '3.0.*'", + "version": "==1.23" + }, "vine": { "hashes": [ "sha256:52116d59bc45392af9fdd3b75ed98ae48a93e822cee21e5fda249105c59a7a72", @@ -333,6 +393,7 @@ "sha256:1adb80e7a782c12e52ef9a8182bebeb73f1d7e24e374397af06fb4956c8dc5c0", "sha256:e27001de32f627c22380a688bcc43ce83504a7bc5da472209b4c70f02829f0b8" ], + "markers": "python_version >= '2.7'", "version": "==2.7.3" }, "six": { diff --git a/deploy.py b/deploy.py index f6eb120..3c7a869 100644 --- a/deploy.py +++ b/deploy.py @@ -1,10 +1,57 @@ import sh -import boto +import boto3 import os +import time + + +def deploy_rds(): + """ + Creates an RDS instance on AWS using environment variables + """ + rds = boto3.client('rds') + response = rds.create_db_instance( + DBName=os.environ.get('RDS_NAME'), + DBInstanceIdentifier=os.environ.get('RDS_NAME'), + AllocatedStorage=20, + DBInstanceClass='db.t2.micro', + Engine='postgres', + MasterUsername=os.environ.get('RDS_USER'), + MasterUserPassword='postgres', + Port=5432, + PubliclyAccessible=True, + DeletionProtection=False, + ) + # print(str(response)) + db = rds.describe_db_instances(DBInstanceIdentifier=os.environ.get('RDS_NAME')) + counter = 0 + db_endpoint = check_if_rds_deployed(rds, counter) + db_endpoint = db['DBInstances'][0]['Endpoint'] + print(db_endpoint) + +def check_if_rds_deployed(rds, counter): + db = rds.describe_db_instances(DBInstanceIdentifier=os.environ.get('RDS_NAME')) + try: + db_endpoint = db['DBInstances'][0]['Endpoint'] + if not db_endpoint: + check_if_rds_deployed(rds, counter) + return db_endpoint + except KeyError: + counter += 1 + print('RDS Instance is still spinning up. ' + str(counter) + 'minutes\n') + time.sleep(60) + check_if_rds_deployed(rds, counter) + + +def input_tree(): + user_choice = str(input('Do you want to spin up a database instance (y/n): \n')) + print('\n') + if user_choice.lower()[0] == 'y': + deploy_rds() + else: + print('have a nice day') + return + +input_tree() + -rds_conn = boto.rds.connect_to_region('us-west-2') -db = rds_conn.create_dbinstance(os.environ.get('RDS_NAME'), 20, 'db.t2.micro', os.environ.get('RDS_USER'), os.environ.get('RDS_PASSWORD')) -db = rds_conn.get_all_dbinstances(os.environ.get('RDS_NAME'))[0] -while db.status != 'available': - print('waiting for rds to spin up.\n')