コード例 #1
0
	def shutdown(self, vcname):
		"""
		Shutdown the nodes of the specified virtual cluster.

		:param vcname: Name of running virtual cluster

		:return: True if cluster is shutdown, otherwise False
		"""

		nodes = self.get_cluster_status(vcname)
		for node in nodes:
			if nodes[node] == 'active':
				print "  Shutting down node %s" % node
				exitcode=0
				(out, exitcode) = pragma.utils.getRocksOutputAsList(
					"stop host vm %s" % node)
				if exitcode != 0:
					sys.stderr.write("Problem shutting down node %s: %s\n" % (
						node, "\n".join(out)))
					sys.exit(1)
				time.sleep(1)
		nodes = self.get_cluster_status(vcname)
		disks = ImageManager.get_disks(vcname)
		for node in nodes:
			if nodes[node] != 'nostate':
				sys.stderr.write("Error, node %s not shut down\n" % node)
				return False
			ImageManager.wait_for_disk(vcname, disks[vcname])
		return True
コード例 #2
0
ファイル: __init__.py プロジェクト: Delphia-Nien/pragma_boot
    def shutdown(self, vcname):
        """
		Shutdown the nodes of the specified virtual cluster.

		:param vcname: Name of running virtual cluster

		:return: True if cluster is shutdown, otherwise False
		"""

        nodes = self.get_cluster_status(vcname)
        for node in nodes:
            if nodes[node] == 'active':
                print "  Shutting down node %s" % node
                exitcode = 0
                (out, exitcode) = pragma.utils.getRocksOutputAsList(
                    "stop host vm %s" % node)
                if exitcode != 0:
                    sys.stderr.write("Problem shutting down node %s: %s\n" %
                                     (node, "\n".join(out)))
                    sys.exit(1)
                time.sleep(1)
        nodes = self.get_cluster_status(vcname)
        disks = ImageManager.get_disks(vcname)
        for node in nodes:
            if nodes[node] != 'nostate':
                sys.stderr.write("Error, node %s not shut down\n" % node)
                return False
            ImageManager.wait_for_disk(vcname, disks[vcname])
        return True
コード例 #3
0
	def deploy(self, repository):
		"""
		Deploy the specified virtual cluster

		:param repository: repository with xml in/out objects
		:return:
		"""
		# get references to xml in/out objects and temp directory 
		vc_in = repository.getXmlInputObject(repository.cluster)
		vc_out = repository.getXmlOutputObject()
		temp_dir = repository.getStagingDir()

		network_conf = [
			'/etc/udev/rules.d/70-persistent-net.rules',
			'/etc/sysconfig/network-scripts/ifcfg-eth*'
		]
		new_config = {
			vc_out.filename: "/root/vc-out.xml"
		}
		image_manager = ImageManager.factory(vc_in, vc_out, temp_dir)

		# prepare and boot frontend
		image_manager.prepare_frontend(network_conf, new_config)
		self.boot(image_manager.fe_name)

		# prepare and boot computes
		for node in vc_out.get_compute_names():
			compute_config = {
				vc_out.get_vc_out(node): "/root/vc-out.xml"
			}
			image_manager.prepare_compute(node, network_conf, compute_config)
			self.boot(node)
		image_manager.boot_cleanup()
コード例 #4
0
	def clean(self, vcname):
		"""
		Unallocate virtual cluster and clean up disks.

		:param vcname: Name of virtual cluster to be cleaned
		:return: True if clean was successful, otherwise False
		"""
		nodes = self.get_cluster_status(vcname)
		for node in nodes:
			if nodes[node] == 'active':
				sys.stderr.write("Error: node %s still active; please shutdown cluster first.\n" % node)
				return False
		for node in nodes:
			(out, exitcode) = pragma.utils.getRocksOutputAsList(
				"list host vm %s showdisks=true" % node)
			if exitcode != 0:
				sys.stderr.write("Problem quering node %s: %s\n" % (
					node, "\n".join(out)))
				return False
			fields = re.split("\s+", out[1])

			if ImageManager.clean_disk(node, fields[6], fields[4]) == False:
				sys.stderr.write("Problem cleaning disk of node %s\n" % node)
				return False

		print "  Unallocating cluster %s" % vcname
		(out, exitcode) = pragma.utils.getRocksOutputAsList(
			"remove cluster %s" % vcname)
		for line in out:
			print "  %s" % line
		return True
コード例 #5
0
ファイル: __init__.py プロジェクト: Delphia-Nien/pragma_boot
    def deploy(self, repository):
        """
		Deploy the specified virtual cluster

		:param repository: repository with xml in/out objects
		:return:
		"""
        # get references to xml in/out objects and temp directory
        vc_in = repository.getXmlInputObject(repository.cluster)
        vc_out = repository.getXmlOutputObject()
        temp_dir = repository.getStagingDir()

        network_conf = [
            '/etc/udev/rules.d/70-persistent-net.rules',
            '/etc/sysconfig/network-scripts/ifcfg-eth*'
        ]
        new_config = {vc_out.filename: "/root/vc-out.xml"}
        image_manager = ImageManager.factory(vc_in, vc_out, temp_dir)

        # prepare and boot frontend
        image_manager.prepare_frontend(network_conf, new_config)
        self.boot(image_manager.fe_name)

        # prepare and boot computes
        for node in vc_out.get_compute_names():
            compute_config = {vc_out.get_vc_out(node): "/root/vc-out.xml"}
            image_manager.prepare_compute(node, network_conf, compute_config)
            self.boot(node)
        image_manager.boot_cleanup()
コード例 #6
0
ファイル: __init__.py プロジェクト: Delphia-Nien/pragma_boot
    def clean(self, vcname):
        """
		Unallocate virtual cluster and clean up disks.

		:param vcname: Name of virtual cluster to be cleaned
		:return: True if clean was successful, otherwise False
		"""
        nodes = self.get_cluster_status(vcname)
        for node in nodes:
            if nodes[node] == 'active':
                sys.stderr.write(
                    "Error: node %s still active; please shutdown cluster first.\n"
                    % node)
                return False
        for node in nodes:
            (out, exitcode) = pragma.utils.getRocksOutputAsList(
                "list host vm %s showdisks=true" % node)
            if exitcode != 0:
                sys.stderr.write("Problem quering node %s: %s\n" %
                                 (node, "\n".join(out)))
                return False
            fields = re.split("\s+", out[1])

            if ImageManager.clean_disk(node, fields[6], fields[4]) == False:
                sys.stderr.write("Problem cleaning disk of node %s\n" % node)
                return False

        print "  Unallocating cluster %s" % vcname
        (out, exitcode) = pragma.utils.getRocksOutputAsList(
            "remove cluster %s" % vcname)
        for line in out:
            print "  %s" % line
        return True