Exemple #1
0
    def delete(self, clusternames=None, force=False, all=False):
        """Delete clusters that have these names.

        If not specified, delete the active cluster.
        If there is no active cluster, delete the first cluster.

        :param list clusternames: list of cluster names to delete
        """

        if all:
            clusters = db.select(Cluster)
        else:

            clusternames = clusternames or [Default.cluster]
            clusters = [db.select(Cluster, name=name).one()
                        for name in clusternames]

        for cluster in clusters:
            Console.ok('Deleting cluster {}'.format(cluster.name))
            cluster.delete(force=force)
            Console.ok('Deleted cluster {}: {} nodes'
                       .format(cluster.name, cluster.count))

        remaining_clusters = db.select(Cluster).all()
        if remaining_clusters:
            name = remaining_clusters[-1].name
        else:
            name = None
        Default.set_cluster(name)
        Console.ok('Active cluster: {}'.format(name))
    def delete(self, clusternames=None, force=False, all=False):
        """Delete clusters that have these names.

        If not specified, delete the active cluster.
        If there is no active cluster, delete the first cluster.

        :param list clusternames: list of cluster names to delete
        """

        if all:
            clusters = db.select(Cluster)
        else:

            clusternames = clusternames or [Default.cluster]
            clusters = [
                db.select(Cluster, name=name).one() for name in clusternames
            ]

        for cluster in clusters:
            Console.ok('Deleting cluster {}'.format(cluster.name))
            cluster.delete(force=force)
            Console.ok('Deleted cluster {}: {} nodes'.format(
                cluster.name, cluster.count))

        remaining_clusters = db.select(Cluster).all()
        if remaining_clusters:
            name = remaining_clusters[-1].name
        else:
            name = None
        Default.set_cluster(name)
        Console.ok('Active cluster: {}'.format(name))
    def allocate(self, clustername=None):

        specname = clustername or Default.active_specification

        try:
            spec = db.select(SPECIFICATION, name=specname)[0]
        except IndexError:
            Console.error(
                'No specification with name={} found'.format(specname))
            return 1

        defns = spec.get()

        try:
            cluster = db.select(Cluster, name=spec.name, specId=spec.cm_id)[0]
        except IndexError:
            cluster = Cluster(name=spec.name, specId=spec.cm_id, **defns)

        Default.set_cluster(cluster.name)
        Console.ok('Cluster {} is now active'.format(cluster.name))

        cluster.create()
        Console.ok('Cluster {} created'.format(cluster.name))

        return cluster
Exemple #4
0
    def use(self, specname):
        """Activate the given specification

        :param specname: namne of the specification
        """
        spec = db.select(SPECIFICATION, type='cluster', name=specname)[0]
        Default.set_specification(spec.name)
        Default.set_cluster(spec.name)
    def use(self, specname):
        """Activate the given specification

        :param specname: namne of the specification
        """
        spec = db.select(SPECIFICATION, type='cluster', name=specname)[0]
        Default.set_specification(spec.name)
        Default.set_cluster(spec.name)
Exemple #6
0
    def allocate(self, clustername=None):

        specname = clustername or Default.active_specification

        try:
            spec = db.select(SPECIFICATION, name=specname)[0]
        except IndexError:
            Console.error('No specification with name={} found'.format(specname))
            return 1

        defns = spec.get()

        try:
            cluster = db.select(Cluster, name=spec.name, specId=spec.cm_id)[0]
        except IndexError:
            cluster = Cluster(name=spec.name, specId=spec.cm_id, **defns)

        Default.set_cluster(cluster.name)
        Console.ok('Cluster {} is now active'.format(cluster.name))

        cluster.create()
        Console.ok('Cluster {} created'.format(cluster.name))

        return cluster
Exemple #7
0
    def create(self,
               clustername=None,
               cloud=None,
               count=1,
               username=None,
               image=None,
               flavor=None,
               key=None,
               secgroup=None,
               assignFloatingIP=True,
               activate=True):
        """Create a cluster.

            If values are `None`, they are automatically determined via
            defaults.

            :param str clustername: name of this cluster (generated if None)
            :param str cloud: cloud name
            :param int count: number of instances in the cluster
            :param str user: cloudmesh user
            :param str username: cloud image username
            :param str image: image name
            :param str flavor: instance flavor
            :param str key: key name
            :param str secgroup: security group name
            :param bool activate: activate this cluster after creation
            :returns: a cluster
            :rtype: :class:`Cluster`
            """

        clustername = clustername or Default.generate_name(
            Names.CLUSTER_COUNTER)
        cloud = cloud or Default.cloud
        username = username or Image.guess_username(image)
        image = image or Default.image
        flavor = flavor or Default.flavor
        key = key or Default.key
        secgroup = secgroup or Default.secgroup

        try:
            cluster = Cluster(
                name=clustername,
                count=count,
                cloud=cloud,
                username=username,
                image=image,
                flavor=flavor,
                key=key,
                secgroup=secgroup,
                assignFloatingIP=assignFloatingIP,
            )
        except ClusterNameClashException as e:
            Console.error(str(e))
            raise UnrecoverableErrorException(str(e))

        cluster.create()
        Console.ok('Cluster {} created'.format(clustername))

        if activate:
            Default.set_cluster(clustername)
            Console.ok('Cluster {} is now active'.format(clustername))

        return cluster