StackStorm / st2

StackStorm (aka "IFTTT for Ops") is event-driven automation for auto-remediation, incident responses, troubleshooting, deployments, and more for DevOps and SREs. Includes rules engine, workflow, 160 integration packs with 6000+ actions (see https://exchange.stackstorm.org) and ChatOps. Installer at https://docs.stackstorm.com/install/index.html

Home Page:https://stackstorm.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Disable Rule show value of Secret Action Field

philipphomberger opened this issue · comments

SUMMARY

Provide a quick summary of your bug report.

STACKSTORM VERSION

Paste the output of st2 --version:
st2 3.8.1

OS, environment, install method

Post what OS you are running this on, along with any other relevant information/

Deploy with Ansible
RHEL8 VM

Description

If you create a rule and configure the webhook for the Teams channel (Secret field), the URL is masked and that's what it's supposed to be.
If you deactivate the rule and refresh the page, the webhook URL is displayed in plain text
And vice versa, i.e. if the rule is deactivated and you enter the page again, the url is masked, but is displayed in plain text again when activated (+refresh). And the URL is corrupted. You have to copy the webhook-url again, only then the rule works again.

Teams channel Action and YAML File:

YAML

---
name: "send_teams_message"
runner_type: "python-script"
description: "Send Message to Teams Channel."
enabled: true
entry_point: "send_teams_message.py"
parameters:
    webhook_url:
        type: "string"
        description: "Webhook Teamschannel Integration."
        required: true
        secret: true
        position: 0
    sectionTitle:
        type: "string"
        description: "Webhook Teamschannel Integration."
        required: true
        default: "Groot Agent: Groot have fix Test"
        position: 1
    activityTitle:
        type: "string"
        description: "Webhook Teamschannel Integration."
        default: "activityTitle"
        required: true
        position: 2
    activitySubtitle:
        type: "string"
        description: "Webhook Teamschannel Integration."
        required: true
        default: "activitySubtitle"
        position: 3
    activityText:
        type: "string"
        description: "Webhook Teamschannel Integration."
        required: true
        default: "activityText"
        position: 4
    text:
        type: "string"
        description: "Webhook Teamschannel Integration."
        required: true
        default: "Text"
        position: 5

Action:

import pymsteams
from lib.base import BaseActionMsTeams


class send_teams_message(BaseActionMsTeams):
    def getTeamsMessage(
        self, sectionTitle, activityTitle, activitySubtitle, activityText, text
    ):
        myMessageSection = pymsteams.cardsection()
        myMessageSection.title(sectionTitle)
        myMessageSection.activityTitle(activityTitle)
        myMessageSection.activitySubtitle(activitySubtitle)
        myMessageSection.activityImage(
            "https://avatars.githubusercontent.com/u/4969009?s=200&v=4"
        )
        myMessageSection.activityText(activityText)
        myMessageSection.text(text)
        myMessageSection.addImage(
            "https://avatars.githubusercontent.com/u/4969009?s=200&v=4",
            ititle="Stackstorm Logo",
        )
        return myMessageSection

    def sendTeamsMessage(self, webhook_url, myMessageSection):
        myTeamsMessage = pymsteams.connectorcard(webhook_url)

        myTeamsMessage.addSection(myMessageSection)
        myTeamsMessage.summary("I am GROOT!")
        myTeamsMessage.send()
        last_status_code = myTeamsMessage.last_http_response.status_code
        return last_status_code

    def run(
        self,
        webhook_url,
        sectionTitle,
        activityTitle,
        activitySubtitle,
        activityText,
        text,
    ):
        if webhook_url == "none":
            webhook_url = self.web_hook_global
        teams_section = self.getTeamsMessage(
            sectionTitle, activityTitle, activitySubtitle, activityText, text
        )
        teams_message = self.sendTeamsMessage(webhook_url, teams_section)

        if teams_message == 200:
            return (True, teams_message)
        else:
            print(teams_message)
            raise ValueError(f"Sending failes.")
```

Thanks!