Example #1
0
    def define(self, clustername=None, **kwargs):
            """Define a cluster.

            kwargs are passed to Cluster

            :returns: a cluster
            :rtype: :class:`Cluster`
            """

            clustername = clustername or Default.generate_name(Names.CLUSTER_COUNTER)

            # remove None to defer default definitions to later
            for k in kwargs.keys():
                if kwargs[k] is None:
                    del kwargs[k]

            try:
                spec = db.select(SPECIFICATION, name=clustername, type='cluster')[0]
                spec.update(kwargs)
                db.updateObj(spec)
            except IndexError:
                spec = SPECIFICATION(clustername, 'cluster', kwargs)
                db.insert(spec)

            Default.set_specification(clustername)
            Console.ok('Defined cluster {}'.format(clustername))
    def define(self, name=None, **kwargs):
        """Define a hadoop stack.

            """

        stackname = name or Default.generate_name(Names.STACK_COUNTER)

        # remove None to defer default definitions to latter
        for k in kwargs.keys():
            if kwargs[k] is None:
                del kwargs[k]

        kwargs['local_path'] = os.path.join(
            os.path.expanduser('~/.cloudmesh/stacks'), stackname)

        try:
            spec = db.select(SPECIFICATION, name=stackname, type='stack')[0]
            spec.update(kwargs)
            db.updateObj(spec)
        except IndexError:
            spec = SPECIFICATION(stackname, 'stack', kwargs)
            db.insert(spec)

        Default.set_stack(stackname)
        Console.ok('Defined stack {}'.format(stackname))
    def define(self, clustername=None, **kwargs):
        """Define a cluster.

            kwargs are passed to Cluster

            :returns: a cluster
            :rtype: :class:`Cluster`
            """

        clustername = clustername or Default.generate_name(
            Names.CLUSTER_COUNTER)

        # remove None to defer default definitions to later
        for k in kwargs.keys():
            if kwargs[k] is None:
                del kwargs[k]

        try:
            spec = db.select(SPECIFICATION, name=clustername,
                             type='cluster')[0]
            spec.update(kwargs)
            db.updateObj(spec)
        except IndexError:
            spec = SPECIFICATION(clustername, 'cluster', kwargs)
            db.insert(spec)

        Default.set_specification(clustername)
        Console.ok('Defined cluster {}'.format(clustername))
Example #4
0
 def generate_vm_name(cls, prefix=None, fill=3):
     return Default.generate_name(Names.VM_COUNTER,
                                  display_name=Default.user,
                                  prefix=prefix,
                                  fill=fill)
Example #5
0
 def generate_vm_name(cls, prefix=None, fill=3):
     return Default.generate_name(Names.VM_COUNTER,
                                  display_name=Default.user,
                                  prefix=prefix,
                                  fill=fill)
Example #6
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