Esempio n. 1
0
def decommission(key, access, name, device="/dev/sdf"):
	def log(message, logging='warning'):
		"{0}: {1}, {2}".format('Decommission', message, logging)

	# first get the mountpoint (requires some energy, but we can...)
	df = subprocess.Popen(["/bin/df", device], stdout=subprocess.PIPE)
	output = df.communicate()[0]
	dummy, size, used, available, percent, mountpoint = \
							output.split("\n")[1].split()
	if device != dummy:
		log("No such device {0}".format(device), 'info')
		sys.exit()

	log('start dommissioning', 'info')

	# make a last snapshot
	log('and now a snapshot', 'info')
	snapshot = backup.make_snapshot(key, access, name, 'monthly')
	administration.add_snapshot(key, access, name, snapshot)

	# we don't have to get rid any the volume, it is deleted on termination

	# and empty the cron as well
	log('empty the cron', 'info')
	os.system("/bin/echo | /usr/bin/crontab")
Esempio n. 2
0
def decommission(key, access, name, device="/dev/sdf"):
    def log(message, logging='warning'):
        "{0}: {1}, {2}".format('Decommission', message, logging)

    # first get the mountpoint (requires some energy, but we can...)
    df = subprocess.Popen(["/bin/df", device], stdout=subprocess.PIPE)
    output = df.communicate()[0]
    dummy, size, used, available, percent, mountpoint = \
          output.split("\n")[1].split()
    if device != dummy:
        log("No such device {0}".format(device), 'info')
        sys.exit()

    log('start dommissioning', 'info')

    # make a last snapshot
    log('and now a snapshot', 'info')
    snapshot = backup.make_snapshot(key, access, name, 'monthly')
    administration.add_snapshot(key, access, name, snapshot)

    # we don't have to get rid any the volume, it is deleted on termination

    # and empty the cron as well
    log('empty the cron', 'info')
    os.system("/bin/echo | /usr/bin/crontab")
Esempio n. 3
0
def decommission(key, access, cluster, persistence="no"):
    events = Events(key, access, cluster)
    node = Host(cluster, events).get_node()

    def log(message, logging="warning"):
        events.log(node, "Decommission", message, logging)

    log("start dommissioning", "info")
    # make a last backup
    if "no" != persistence:
        log("make last backups, first RDB", "info")
        # take the latest RDB and move it to S3
        rdb = backup.put_RDB(key, access, cluster, "monthly")
        administration.set_RDB(key, access, cluster, rdb)

        # make a last snapshot
        log("and now a snapshot", "info")
        snapshot = backup.make_snapshot(key, access, cluster, "monthly")
        administration.add_snapshot(key, access, cluster, snapshot)

        delete_monitor()

        # we don't have to get rid any the volume, it is deleted on termination

        # change to the default (no persistence)
    log("remove redis.conf", "info")
    os.system("/bin/rm -f /etc/redis/redis.conf")
    # and empty the cron as well
    # log('empty the cron', 'info')
    # os.system("/bin/echo | /usr/bin/crontab")

    # make sure we make a clean AMI, with all monit checks monitored
    log("finally, monitor all (monit), but 'redis' and slave", "info")
    os.system("/usr/bin/monit unmonitor redis")
    os.system("/usr/bin/monit unmonitor slave")
Esempio n. 4
0
def decommission(key, access, cluster, persistence="no"):
	events = Events(key, access, cluster)
	node = Host(cluster, events).get_node()
	def log(message, logging='warning'):
		events.log(node, 'Decommission', message, logging)

	log('start dommissioning', 'info')
	# make a last backup
	if "no" != persistence:
		log('make last backups, first RDB', 'info')
		# take the latest RDB and move it to S3
		rdb = backup.put_RDB(key, access, cluster, 'monthly')
		administration.set_RDB(key, access, cluster, rdb)

		# make a last snapshot
		log('and now a snapshot', 'info')
		snapshot = backup.make_snapshot(key, access, cluster, 'monthly')
		administration.add_snapshot(key, access, cluster, snapshot)

		delete_monitor()

	# we don't have to get rid any the volume, it is deleted on termination

	# change to the default (no persistence)
	log('remove redis.conf', 'info')
	os.system("/bin/rm -f /etc/redis/redis.conf")
	# and empty the cron as well
	log('empty the cron', 'info')
	os.system("/bin/echo | /usr/bin/crontab")

	# make sure we make a clean AMI, with all monit checks monitored
	log('finally, monitor all (monit), for making AMIs', 'info')
	os.system("/usr/sbin/monit monitor all")
Esempio n. 5
0
	def snapshot_all(expiration="weekly"):
		# don't snapshot the WAL or root volume
		for tablespace in userdata['tablespaces']:
			backup = make_snapshot(sys.argv[2], sys.argv[3],
									cluster, tablespace['name'],
									expiration=expiration,
									device=tablespace['device'])
			administration.add_snapshot(sys.argv[2], sys.argv[3],
									cluster, tablespace['name'], backup)
			print "created {0} from {1}".format(backup[0], tablespace['name'])
Esempio n. 6
0
 def snapshot_all(expiration="weekly"):
     # don't snapshot the WAL or root volume
     for tablespace in userdata['tablespaces']:
         backup = make_snapshot(sys.argv[2],
                                sys.argv[3],
                                cluster,
                                tablespace['name'],
                                expiration=expiration,
                                device=tablespace['device'])
         administration.add_snapshot(sys.argv[2], sys.argv[3], cluster,
                                     tablespace['name'], backup)
         print "created {0} from {1}".format(backup[0], tablespace['name'])
Esempio n. 7
0
	def snapshot_all(expiration="weekly", master=True):
		# don't snapshot the WAL or root volume
		for tablespace in userdata['tablespaces']:
			backup = make_snapshot(sys.argv[2], sys.argv[3],
									cluster, tablespace['name'],
									expiration=expiration,
									device=tablespace['device'])
			# we use "dummy" to make sure the backups are not used
			# for restores
			if not master:
				administration.add_snapshot(sys.argv[2], sys.argv[3],
									cluster, "dummy", backup)
			else:
				administration.add_snapshot(sys.argv[2], sys.argv[3],
									cluster, tablespace['name'], backup)
			print "created {0} from {1}".format(backup[0], tablespace['name'])
Esempio n. 8
0
	os.system("/bin/gzip -df {0}.gz".format(src))
	#print os.system("/bin/cat {0}".format(src))

# for convenience we can call this file to make backups directly
if __name__ == '__main__':
	s3 = S3Connection(sys.argv[2],sys.argv[3])

	# get the bucket, from the cluster name
	name = os.environ['REDIS_NAME'].strip()
	hosted_zone = os.environ['HOSTED_ZONE_NAME'].rstrip('.')
	cluster = "{0}.{1}".format(name, hosted_zone)
	bucket = s3.get_bucket( cluster.replace('.', '-'))

	if "rdb" == sys.argv[1]:
		create_bucket(sys.argv[2], sys.argv[3], cluster)
		key = put_RDB(sys.argv[2], sys.argv[3], cluster, sys.argv[4])
		administration.set_RDB(sys.argv[2], sys.argv[3], cluster, key)
	elif "snapshot" == sys.argv[1]:
		backup = make_snapshot(sys.argv[2], sys.argv[3], cluster, sys.argv[4])
		administration.add_snapshot(sys.argv[2], sys.argv[3],
											cluster, backup)
	elif "purge" == sys.argv[1]:
		snapshots = administration.get_expired_snapshots(sys.argv[2],
											sys.argv[3], cluster)
		purge_snapshots(sys.argv[2], sys.argv[3], cluster, snapshots)

	elif "purge-all" == sys.argv[1]:
		snapshots = administration.get_all_snapshots(sys.argv[2],
											sys.argv[3], cluster)
		purge_snapshots(sys.argv[2], sys.argv[3], cluster, snapshots)
Esempio n. 9
0
	ec2 = EC2Connection(key, access, region=region_info)

	for snapshot in snapshots:
		if ec2.delete_snapshot(snapshot['snapshot']):
			print "deleting snapshot: {0}".format(snapshot['snapshot'])
			administration.delete_snapshot(key,
											access,
											name,
											snapshot['snapshot'])

# for convenience we can call this file to make backups directly
if __name__ == '__main__':
	# get the bucket, from the name
	name = userdata['name'].strip()
	hosted_zone = os.environ['HOSTED_ZONE_NAME'].rstrip('.')
	name = "{0}.{1}".format(name, hosted_zone)

	if "snapshot" == sys.argv[1]:
		backup = make_snapshot(sys.argv[2], sys.argv[3], name, sys.argv[4])
		administration.add_snapshot(sys.argv[2], sys.argv[3],
											name, backup)
	elif "purge" == sys.argv[1]:
		snapshots = administration.get_expired_snapshots(sys.argv[2],
											sys.argv[3], name)
		purge_snapshots(sys.argv[2], sys.argv[3], name, snapshots)

	elif "purge-all" == sys.argv[1]:
		snapshots = administration.get_all_snapshots(sys.argv[2],
											sys.argv[3], name)
		purge_snapshots(sys.argv[2], sys.argv[3], name, snapshots)
Esempio n. 10
0
                                   expiration=expiration,
                                   device=tablespace['device'])
            administration.add_snapshot(sys.argv[2], sys.argv[3], cluster,
                                        tablespace['name'], backup)
            print "created {0} from {1}".format(backup[0], tablespace['name'])

    if "latest" == sys.argv[1]:
        print administration.get_latest_snapshot(sys.argv[2], sys.argv[3],
                                                 cluster, sys.argv[4])
    elif "basebackup" == sys.argv[1]:
        if not is_in_recovery():
            start_backup(sys.argv[4])
            snapshot_all()
            stop_backup()
    elif "snapshot" == sys.argv[1]:
        backup = make_snapshot(sys.argv[2], sys.argv[3], cluster, sys.argv[4],
                               sys.argv[5])
        administration.add_snapshot(sys.argv[2], sys.argv[3], cluster,
                                    sys.argv[4], backup)
    elif "snapshot-all" == sys.argv[1]:
        snapshot_all()
    elif "purge" == sys.argv[1]:
        snapshots = administration.get_expired_snapshots(
            sys.argv[2], sys.argv[3], name)
        purge_snapshots(sys.argv[2], sys.argv[3], name, snapshots)

    elif "purge-all" == sys.argv[1]:
        snapshots = administration.get_all_snapshots(sys.argv[2], sys.argv[3],
                                                     name)
        purge_snapshots(sys.argv[2], sys.argv[3], name, snapshots)
Esempio n. 11
0
    region_info = RegionInfo(name=region,
                             endpoint="ec2.{0}.amazonaws.com".format(region))
    ec2 = EC2Connection(key, access, region=region_info)

    for snapshot in snapshots:
        if ec2.delete_snapshot(snapshot['snapshot']):
            print "deleting snapshot: {0}".format(snapshot['snapshot'])
            administration.delete_snapshot(key, access, name,
                                           snapshot['snapshot'])


# for convenience we can call this file to make backups directly
if __name__ == '__main__':
    # get the bucket, from the name
    name = userdata['name'].strip()
    hosted_zone = os.environ['HOSTED_ZONE_NAME'].rstrip('.')
    name = "{0}.{1}".format(name, hosted_zone)

    if "snapshot" == sys.argv[1]:
        backup = make_snapshot(sys.argv[2], sys.argv[3], name, sys.argv[4])
        administration.add_snapshot(sys.argv[2], sys.argv[3], name, backup)
    elif "purge" == sys.argv[1]:
        snapshots = administration.get_expired_snapshots(
            sys.argv[2], sys.argv[3], name)
        purge_snapshots(sys.argv[2], sys.argv[3], name, snapshots)

    elif "purge-all" == sys.argv[1]:
        snapshots = administration.get_all_snapshots(sys.argv[2], sys.argv[3],
                                                     name)
        purge_snapshots(sys.argv[2], sys.argv[3], name, snapshots)