All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ata.spydra.spydra.0.3.3.source-code.self-destruct.py Maven / Gradle / Ivy

There is a newer version: 0.3.25
Show newest version
#!/usr/bin/env python

# Copyright 2017 Spotify AB.
# 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.


import datetime
import requests
import subprocess
import sys
import time

METADATA_URL = 'http://metadata.google.internal/computeMetadata/v1/'
METADATA_HEADERS = {'Metadata-Flavor': 'Google'}

GCLOUD_PATH = "gcloud"


def metadata(m):
    url = METADATA_URL + m
    while True:
        r = requests.get(
            url,
            headers=METADATA_HEADERS)

        if r.status_code == 503:
            time.sleep(1)
            continue
        r.raise_for_status()

        return r.text


timestamp = metadata('instance/attributes/heartbeat')
update_time = datetime.datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S.%fZ")
delta = datetime.datetime.utcnow() - update_time
expiry = datetime.timedelta(minutes=int(sys.argv[1]))

if delta > expiry:
    cluster = metadata('instance/attributes/dataproc-cluster-name')
    region = metadata('instance/attributes/dataproc-region')
    project = metadata('project/project-id')

    gcloud_command = [GCLOUD_PATH, "--project=" + project, "dataproc", "clusters", "delete", cluster, "--async",
                      "--quiet"]
    subprocess.call(gcloud_command)




© 2015 - 2024 Weber Informatics LLC | Privacy Policy