aboutsummaryrefslogtreecommitdiff
path: root/VexRiscv/src/test/python/gcloud/gcloud.py
blob: 46411242cdc6eae0fcb601fd4f49d465e152863c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/env python

from os import system
from sys import argv
import time

class GCInstance:
	def __init__(self, name):
		self.instance = name
		self.project = "ivory-infusion-209508" 
		self.zone = "europe-west1-b" 

	def local(self, cmd):
		print(cmd)
		system(cmd)

	def createCustom(self, cores=1, ram=1024):
		self.create("custom-{}-{}".format(cores,ram))

	#n1-highcpu-8
	def create(self, machine="f1-micro", args = "--preemptible"):
		self.delete()
		self.local('gcloud beta compute --project=ivory-infusion-209508 instances create {} --zone=europe-west1-b --machine-type={} --subnet=default --network-tier=PREMIUM --no-restart-on-failure --maintenance-policy=TERMINATE {} --service-account=470010940365-compute@developer.gserviceaccount.com --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append --disk=name=miaou,device-name=miaou,mode=rw,boot=yes'.format(self.instance, machine, args))


	def stopScript(self, script):
		self.local('gcloud compute --project {}  instances add-metadata {} --metadata-from-file shutdown-script={} --zone "{}"'.format(self.project, self.instance, script, self.zone))

	def start(self):
		self.local('gcloud compute --project "{}" instances start --zone "{}" "{}"'.format(self.project, self.zone, self.instance))  # --machine-type=f1-micro
		time.sleep(60) 


	def stopHours(self, hours):
		self.remote('sudo shutdown -P +{}'.format(int(hours*60)))

	def stop(self):
		self.remote('sudo shutdown -P now')

	def delete(self):
		self.local('gcloud compute --project "{}" instances delete "{}"  --zone "{}" --keep-disks all --quiet'.format(self.project, self.instance, self.zone))

	def remote(self, cmd):
		self.local('gcloud compute --project "{}" ssh --zone "{}" "{}" -- "{}"'.format(self.project, self.zone, self.instance, cmd))

	def localToRemote(self, source, target):
		self.remote("rm -rf {}".format(target))
		self.local('gcloud compute --project "{}" scp --zone "{}" {} {}:{}'.format(self.project, self.zone, source, self.instance, target))

	def remoteToLocal(self, source, target):
		self.remote("rm -rf {}".format(target))
		self.local('gcloud compute --project "{}" scp --zone "{}" {}:{} {}'.format(self.project, self.zone, self.instance, source,  target))

#setsid nohup (sbt test;sudo poweroff) &> sbtTest.txt