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))
def generate_vm_name(cls, prefix=None, fill=3): return Default.generate_name(Names.VM_COUNTER, display_name=Default.user, prefix=prefix, fill=fill)
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