def start(self, ctx, action, block=False): """ do something... spawn thread? :param action Action Object shared_storage? """ if not self.can_execute(action): self.register_action(action, discard=True) raise exceptions.ActionInProgress() self.register_action(action) try: config = action.action_meta_obj.get('data') or {} self.client = utils.get_nova_client(ctx) if not block: block = config.get('block', False) output = self.client.servers.migrate(server=action.target_id) output = str(output) except Exception as e: LOG.exception(e) self.error(action, message=str(e)) return None if block: self.block_until_finish(action, ctx) else: self.finish(action, message=output) return action.id
def start(self, ctx, action, block=False): """ do something... spawn thread? :param action ActionData Object """ if not self.can_execute(action): self.register_action(action, discard=True) raise exceptions.ActionInProgress() self.register_action(action) try: client = utils.get_nova_client(ctx) config = action.action_meta_obj.get('data') or {} nova_action = config.get('action', 'suspend') if nova_action == 'resume': output = client.servers.resume(action.target_id) else: output = client.servers.suspend(action.target_id) except Exception as e: LOG.exception(e) self.error(action, message=e.message) return None self.finish(action, "") return self.current_action.id
def start(self, ctx, action, block=False): try: import mistralclient.api.client as client import mistralclient.api.executions as executions except: LOG.error("Mistral not installed") return if not self.can_execute(action): self.register_action(action, discard=True) raise exceptions.ActionInProgress() self.register_action(action) options = action.action_meta_obj.get('data') or {} workflow = options.get('workflow', None) task = options.get('task', None) params = options.get('params', {}) if params.get('output'): params['output'] = '%s [%s]' % (params['output'], action.target_id) else: params['output'] = '[%s]' % action.target_id params['request_id'] = action.request_id if not params.get('instance_id'): params['instance_id'] = action.target_id if not params.get('project'): params['project'] = action.project_id params.update(self._common_endpoints(ctx)) if not workflow or not task: LOG.warning('required parameters missing for mistral') self.stop(action, error=True) return try: client = client.Client(auth_token=ctx.token) execute = executions.ExecutionManager(client) output = execute.create(workflow, task, params) except Exception as e: LOG.exception(e) self.error(action, message=str(e)) return None self.finish(action, str(output)) return self.current_action.id
def start(self, ctx, action, block=False): """ do something... spawn thread? :param action ActionData Object """ if not self.can_execute(action): self.register_action(action, discard=True) raise exceptions.ActionInProgress() self.register_action(action) try: client = utils.get_nova_client(ctx) output = client.servers.get(action.target_id) except Exception as e: LOG.exception(e) self.error(action, message=e.message) return None self.finish(action, str(output))
def start(self, ctx, action, block=False): """ do something... spawn thread? :param action ActionData Object """ if not self.can_execute(action): self.register_action(action, discard=True) raise exceptions.ActionInProgress() self.register_action(action) try: options = action.action_meta_obj.get('data') or {} flavor = options.get('flavor_id', '42') client = utils.get_nova_client(ctx) output = client.servers.resize(action.target_id, flavor=flavor) except Exception as e: LOG.exception(e) self.error(action, e.message) return None self.finish(action, str(output)) return self.current_action.id