def instantiate(self, update_existing, disable_rollback=True): main_tmpl = self._get_main_template() heat = h.client() kwargs = { 'stack_name': self.cluster.stack_name, 'timeout_mins': 180, 'disable_rollback': disable_rollback, 'parameters': {}, 'template': main_tmpl, 'files': self.files} if CONF.heat_stack_tags: kwargs['tags'] = ",".join(CONF.heat_stack_tags) if not update_existing: LOG.debug("Creating Heat stack with args: {args}" .format(args=kwargs)) b.execute_with_retries(heat.stacks.create, **kwargs) else: stack = h.get_stack(self.cluster.stack_name) self.last_updated_time = stack.updated_time LOG.debug("Updating Heat stack {stack} with args: " "{args}".format(stack=stack, args=kwargs)) b.execute_with_retries(stack.update, **kwargs) self.heat_stack = h.get_stack(self.cluster.stack_name)
def instantiate(self, update_existing, disable_rollback=True, instances_to_delete=None): main_tmpl = self._get_main_template(instances_to_delete) kwargs = { 'stack_name': self.cluster.stack_name, 'timeout_mins': 180, 'disable_rollback': disable_rollback, 'parameters': {}, 'template': main_tmpl, 'files': self.files } if CONF.heat_stack_tags: kwargs['tags'] = ",".join(CONF.heat_stack_tags) log_kwargs = copy.deepcopy(kwargs) log_kwargs['template'] = yaml.safe_load(log_kwargs['template']) for filename in log_kwargs['files'].keys(): log_kwargs['files'][filename] = yaml.safe_load( log_kwargs['files'][filename]) log_kwargs = json.dumps(log_kwargs) if not update_existing: LOG.debug("Creating Heat stack with args: \n{args}" .format(args=log_kwargs)) b.execute_with_retries(h.client().stacks.create, **kwargs) else: stack = h.get_stack(self.cluster.stack_name) self.last_updated_time = stack.updated_time LOG.debug("Updating Heat stack {stack} with args: \n" "{args}".format(stack=stack, args=log_kwargs)) b.execute_with_retries(stack.update, **kwargs)
def instantiate(self, update_existing, disable_rollback=True): main_tmpl = self._get_main_template() kwargs = { 'stack_name': self.cluster.stack_name, 'timeout_mins': 180, 'disable_rollback': disable_rollback, 'parameters': {}, 'template': main_tmpl, 'files': self.files} if CONF.heat_stack_tags: kwargs['tags'] = ",".join(CONF.heat_stack_tags) log_kwargs = copy.deepcopy(kwargs) log_kwargs['template'] = yaml.safe_load(log_kwargs['template']) for filename in log_kwargs['files'].keys(): log_kwargs['files'][filename] = yaml.safe_load( log_kwargs['files'][filename]) log_kwargs = json.dumps(log_kwargs) if not update_existing: LOG.debug("Creating Heat stack with args: \n{args}" .format(args=log_kwargs)) b.execute_with_retries(h.client().stacks.create, **kwargs) else: stack = h.get_stack(self.cluster.stack_name) self.last_updated_time = stack.updated_time LOG.debug("Updating Heat stack {stack} with args: \n" "{args}".format(stack=stack, args=log_kwargs)) b.execute_with_retries(stack.update, **kwargs)
def instantiate(self, update_existing, disable_rollback=True): main_tmpl = self._get_main_template() heat = h.client() kwargs = { 'stack_name': self.cluster.name, 'timeout_mins': 180, 'disable_rollback': disable_rollback, 'parameters': {}, 'template': main_tmpl, 'files': self.files} if not update_existing: b.execute_with_retries(heat.stacks.create, **kwargs) else: stack = h.get_stack(self.cluster.name) b.execute_with_retries(stack.update, **kwargs) self.heat_stack = h.get_stack(self.cluster.name)
def instantiate(self, update_existing, disable_rollback=True): files = {} main_tmpl = self._get_main_template(files) heat = h.client() kwargs = { 'stack_name': self.cluster.name, 'timeout_mins': 180, 'disable_rollback': disable_rollback, 'parameters': {}, 'template': main_tmpl, 'files': files} if not update_existing: b.execute_with_retries(heat.stacks.create, **kwargs) else: stack = h.get_stack(self.cluster.name) b.execute_with_retries(stack.update, **kwargs) self.heat_stack = h.get_stack(self.cluster.name)
def shutdown_cluster(self, cluster): """Shutdown specified cluster and all related resources.""" try: heat.client().stacks.delete(cluster.name) stack = heat.get_stack(cluster.name) heat.wait_stack_completion(stack) except heat_exc.HTTPNotFound: LOG.warn(_LW('Did not found stack for cluster %s') % cluster.name) self._clean_job_executions(cluster) ctx = context.ctx() instances = g.get_instances(cluster) for inst in instances: conductor.instance_remove(ctx, inst)
def shutdown_cluster(self, cluster): """Shutdown specified cluster and all related resources.""" try: b.execute_with_retries(heat.client().stacks.delete, cluster.name) stack = heat.get_stack(cluster.name) heat.wait_stack_completion(stack) except heat_exc.HTTPNotFound: LOG.warning(_LW('Did not find stack for cluster. Trying to delete ' 'cluster manually.')) # Stack not found. Trying to delete cluster like direct engine # do it self._shutdown_instances(cluster) self._delete_aa_server_group(cluster) self._clean_job_executions(cluster) self._remove_db_objects(cluster)
def shutdown_cluster(self, cluster): """Shutdown specified cluster and all related resources.""" try: b.execute_with_retries(heat.client().stacks.delete, cluster.name) stack = heat.get_stack(cluster.name) heat.wait_stack_completion(stack) except heat_exc.HTTPNotFound: LOG.warning( _LW('Did not find stack for cluster. Trying to delete ' 'cluster manually.')) # Stack not found. Trying to delete cluster like direct engine # do it self._shutdown_instances(cluster) self._delete_aa_server_group(cluster) self._clean_job_executions(cluster) self._remove_db_objects(cluster)
def instantiate(self, update_existing, disable_rollback=True): main_tmpl = self._get_main_template() heat = h.client() kwargs = { 'stack_name': self.cluster.name, 'timeout_mins': 180, 'disable_rollback': disable_rollback, 'parameters': {}, 'template': main_tmpl} if not update_existing: heat.stacks.create(**kwargs) else: for stack in heat.stacks.list(): if stack.stack_name == self.cluster.name: stack.update(**kwargs) break return ClusterStack(self, h.get_stack(self.cluster.name))
def instantiate(self, update_existing, disable_rollback=True): main_tmpl = _load_template('main.heat', {'resources': self._serialize_resources()}) heat = h.client() kwargs = { 'stack_name': self.cluster.name, 'timeout_mins': 180, 'disable_rollback': disable_rollback, 'parameters': {}, 'template': json.loads(main_tmpl)} if not update_existing: heat.stacks.create(**kwargs) else: for stack in heat.stacks.list(): if stack.stack_name == self.cluster.name: stack.update(**kwargs) break return ClusterStack(self, h.get_stack(self.cluster.name))
def check_heat_stack_name(cluster_name): if CONF.infrastructure_engine == 'heat': if heat.get_stack(cluster_name, raise_on_missing=False): raise ex.NameAlreadyExistsException( _("Cluster name '%s' is already used as Heat stack name") % cluster_name)