def test_using_lambda(self): payload = {"params": ['sow', 'default']} self.lambda_name = 'osbot_browser.lambdas.lambda_browser' self.lambda_browser = Lambda(self.lambda_name) self.result = self.lambda_browser.invoke(payload)
def setUp(self): self.simple_test = Lambda('api_gateway.simple_test')
def expand(team_id=None, channel=None, params=None, data=None, only_create=False, save_graph=True): if len(params) < 3: text = ':red_circle: Hi, for the `expand` command, you need to provide the following parameters: ' attachment_text = '- *graph_name*: the graph to expand\n' \ '- *depth* : how many cycles to expand\n' \ '- *links to expand*: as a comma-delimited list ' slack_message(text, [{'text': attachment_text}], channel, team_id) return create_params = ["expand"] + list( params ) # create copy of array so that we don't lose data with the pops below graph_or_key = params.pop(0) depth = int(params.pop(0)) link_types_to_add = ' '.join(params).split(',') graph = Lambda_Graph().get_gs_graph___by_name(graph_or_key) if graph is None: graph = GS_Graph() # if it wasn't a graph graph.add_node(graph_or_key) # use it as key (graph.set_puml_link_types_to_add( link_types_to_add).add_all_linked_issues( [], depth).set_create_params(create_params)) if save_graph: new_graph_name = graph.reset_puml().render_and_save_to_elk() else: return graph if only_create: return graph, new_graph_name, graph_or_key, depth, link_types_to_add if channel: # if the channel value is provided render the new graph and send it to slack, if not, just return the new graph data text = "Rendering new graph called `{0}`,\n Which was created by expanding the graph/key `{1}` with depth `{2}`, for link types `{3}` (`{4}` nodes, `{5}` edges)"\ .format(new_graph_name, graph_or_key, depth, link_types_to_add, len(graph.nodes), len(graph.edges)) slack_message(text, [], channel, team_id) Lambda('gw_bot.lambdas.puml_to_slack').invoke({ "puml": graph.get_puml(), "channel": channel, "team_id": team_id }) else: data = { "graph_or_key": graph_or_key, "depth": depth, "nodes": graph.nodes, "edges": graph.edges, "puml": graph.puml.puml, "graph_name": new_graph_name } return json.dumps(data, indent=4)
def mindmap(graph_name): print('creating mindmap graph for: {0}'.format(graph_name)) payload = {"params": ['go_js', graph_name, 'mindmap']} png_data = Lambda('osbot_browser.lambdas.lambda_browser').invoke(payload) show_png(png_data)
def callback_jira_dialog_action(self, data): return Lambda('gs.jira_dialog').invoke({ "type": "jira_dialog_action", "data": data })
def test_exec__via_lambda_version(self): payload = {'params': ['version']} self.result = Lambda('osbot_jupyter.lambdas.jupyter_web').invoke( payload)
def puml_to_slack(self, puml): payload = {"puml": puml, "channel": self.channel} return Lambda('utils.puml_to_slack').invoke(payload)
def setUp(self): self.lambda_name = 'osbot.lambdas.slack_callback' self.aws_lambda = Lambda(self.lambda_name) self.response = None
def setUp(self): super().setUp() self.png_data = None self.result = None self.aws_lambda = Lambda('osbot_browser.lambdas.jira_web')
def test__update_lambda(self): Lambda('gsbot.gsbot_slack').update()
def search(query, columns=None): params = {'params': ['search'] + query.split(' ')} results = Lambda("osbot_jira.lambdas.elk_to_slack").invoke( params) #{'params': ['search', 'people', 'd*']}) return data_frame(results, columns)
def screenshot(url): print('taking screenshot of: {0}'.format(url)) payload = {"params": ['screenshot', url]} png_data = Lambda('osbot_browser.lambdas.lambda_browser').invoke(payload) show_png(png_data)
def viva_graph(graph_name): print('creating viva graph for: {0}'.format(graph_name)) payload = {"params": ['viva_graph', graph_name, 'default']} png_data = Lambda('osbot_browser.lambdas.lambda_browser').invoke(payload) show_png(png_data)
def send_png_to_slack(png_data, channel, team_id): Lambda('gw_bot.lambdas.png_to_slack').invoke({ 'png_data': png_data, 'team_id': team_id, 'channel': channel })
def dot_to_slack(self, dot): payload = {"dot": dot, "channel": self.channel} return Lambda('utils.dot_to_slack').invoke(payload)
def graph_render(graph, height=200): puml = graph.render_puml().puml png_data = Lambda('gw_bot.lambdas.puml_to_png').invoke({ "puml": puml }).get('png_base64') show_png(png_data, height)
def setUp(self): self.simple_test = Lambda('api_gateway.trigger_sync_jira_sheets')
def setUp(self): super().setUp() self.jira_issues = Lambda('osbot_jira.lambdas.elk_to_slack')
def test_via_lambda_execution__version(self): self.test_update_lambda() aws_lambda = Lambda('osbot_browser.lambdas.lambda_browser') payload = {"params": ["maps", "version"], 'data': {}} self.result = aws_lambda.invoke(payload)
def callback_button_dialog_test(self, data): return Lambda('gs.jira_dialog').invoke({ "type": "button_dialog_test", "data": data })
def cmd_links(self, params, team_id=None, channel=None, user=None, only_create=False, save_graph=True): if len(params) < 2: text = ':point_right: Hi, here are the valid parameters for the `jira links` command: ' \ '\n\t\t - `jira key` ' \ '\n\t\t - `depth` (default to 1)' \ '\n\t\t - `view engine`: viva_graph (default), or plantuml' \ '\n\t\t - `width` (of graph)' \ '\n\t\t - `delay` (before screenshot)' return {"text": text, "attachments": []} target = array_get(params, 1) depth = to_int(array_get(params, 2), 1) # default to depth 1 view_engine = array_get(params, 3, 'viva_graph') width = to_int(array_get(params, 4), None) delay = to_int(array_get(params, 5), None) if depth > 5: text = f':red_circle: sorry depths bigger than 5 are not supported (since 5 will already give you the only graph)' return {"text": text, "attachments": []} #direction = 'all' # change behaviour to only show all graph = Lambda_Graph().graph_links(target, depth) if graph is None: text = f':red_circle: graph not created for target `{target}`' return {"text": text, "attachments": []} if len(graph.edges) == 0: text = f':red_circle: no graph created from `{target}` (please double check that the issue ID exists)' return {"text": text, "attachments": []} graph_type = f"{target}___depth_{depth}" if save_graph is False: return graph graph_name = graph.render_and_save_to_elk(None, graph_type, channel, user) if only_create: return graph, graph_name, depth, target if channel: message = f':point_right: Created graph with *name* `{graph_name}` *from* `{target}` *depth* `{depth}`' slack_message(message, [], channel) if view_engine == 'plantuml': params = ['show', graph_name, view_engine] Lambda('osbot_jira.lambdas.graph').invoke_async({ "params": params, 'data': { 'team_id': team_id, 'channel': channel } }) else: params = [view_engine, graph_name, 'default', width, delay] Lambda('osbot_browser.lambdas.lambda_browser').invoke_async({ "params": params, 'data': { 'team_id': team_id, 'channel': channel } }) else: return graph, graph_name, depth, target
def show(team_id, channel, params, data=None): if len(params) < 1: text = ':red_circle: Hi, for the `show` command, you need to provide an `graph_name`' slack_message(text, [], channel, team_id) return graph_name = Misc.array_pop(params, 0) graph = Lambda_Graph().get_gs_graph___by_name(graph_name) if graph is None: text = ':red_circle: Graph with name `{0}` not found'.format( graph_name) slack_message(text, [], channel, team_id) else: default_engine = 'viva_graph' engines = Misc.array_pop(params, 0) if engines is None: engines = default_engine if engines != default_engine: # only show in case there is more than one engine text = f":point_right: Showing graph with name `{graph_name}`, with `{len(graph.nodes)}` nodes and `{len(graph.edges)}` edges)" slack_message(text, [], channel, team_id) if 'plantuml' in engines: slack_message('...using `plantuml`', [], channel, team_id) Lambda('gw_bot.lambdas.puml_to_slack').invoke_async({ "puml": graph.get_puml(), "channel": channel, "team_id": team_id }) if 'vis_js' in engines: slack_message('...using `vis_js`', [], channel, team_id) params = ['graph', graph_name, 'default'] Lambda('osbot_browser.lambdas.lambda_browser').invoke_async({ "params": params, 'data': { 'team_id': team_id, 'channel': channel } }) if 'viva_graph' in engines: if engines != default_engine: # only show in case there is more than one engine slack_message('...using `viva_graph`', [], channel, team_id) params = ['viva_graph', graph_name, 'default'] Lambda('osbot_browser.lambdas.lambda_browser').invoke_async({ "params": params, 'data': { 'team_id': team_id, 'channel': channel } }) if 'go_js' in engines: slack_message('...using `go_js`', [], channel, team_id) params = ['go_js', graph_name, 'circular'] Lambda('osbot_browser.lambdas.lambda_browser').invoke_async({ "params": params, 'data': { 'team_id': team_id, 'channel': channel } })
def cmd_search(self, event): Lambda('osbot_jira.lambdas.elk_to_slack').invoke_async(event) return None
def setUp(self): self.lambda_name = 'osbot_browser.lambdas.lambda_browser' self.lambda_browser = Lambda(self.lambda_name) #lambdas.browser.lambda_browser')
def setUp(self): self.slack_dialog = Lambda('utils.slack_dialog', path_libs='../_lambda_dependencies/slack')