def get_services_from_string()

in scripts/create_master_checklist.py [0:0]


def get_services_from_string(input_string):
    service_dict = {
        "AppSvc": ["App Service", "webapp"],
        "ExpressRoute": ["ExpressRoute", "Gateway Subnet"],
        "VPN": ["VPN", "Point-to-Site", "Site-to-Site", "Gateway Subnet"],
        "FrontDoor": ["Front Door", "FrontDoor"],
        "AppGW": ["Application Gateway", "AppGW", "AGIC"],
        "SQL": ["SQL"],
        "AVD": ["AVD", "Virtual Desktop", "WVD", "MSIX"],
        "AKS": ["AKS", "Kubernetes"],
        "AVS": ["AVS", "Azure VMware Solution", "VMware"],
        "Firewall": ["Azure Firewall", "Firewall Manager"],
        "NVA": ["NVA", "Network Virtual Appliance"],
        "Bastion": ["Bastion"],
        "SAP": ["SAP"],
        "VM": ["VM ", "VM.", "VM'", "VMs", "Virtual Machine"],  # Characters in 'VMx' is to avoid matching 'VMware'
        "Storage": ["Storage", "Blob", "File", "Queue", "Table", "CORS"],
        "ACR": ["ACR", "Registry"],
        "AKV": ["AKV", "Key Vault", "Secrets", "Keys", "Certificates"],
        "ServiceBus": ["Service Bus", "ASB", "Queue", "Topic", "Relay"],
        "EventHubs": ["Event Hubs", "EventHubs", "Event Hub", "EH"],
        "CosmosDB": ["Cosmos DB", "CosmosDB"],
        "SAP": ["SAP"],
        "Sentinel": ["Sentinel"],
        "Entra": ["Entra", "AAD", "Azure AD", "Azure Active Directory", "PIM", "JIT", "Privileged Identity Management", "Just in Time", "Conditional Access", "MFA", "2FA", "Identity", "Identities", "B2B", "B2C"],
        "DDoS": ["DDoS", "Denial of Service"],
        "LoadBalancer": ["Load Balancer", "LB", "ILB", "SLB"],
        "DNS": ["DNS", "Domain Name System"],
        "TrafficManager": ["Traffic Manager", "TM"],
        "VNet": ["VNet", "Virtual Network", "NSG", "Network Security Group", "UDR", "User Defined Route", "IP Plan", "hub-and-spoke", "subnet"],
        "Defender": ["Defender", "Security Center"],
        "Subscriptions": ["Subscriptions", "Subscription", "Management Group"],
        "VWAN": ["VWAN", "Virtual WAN"],
        "ARS": ["ARS", "Route Server"],
        "Monitor": ["Monitor", "Log Analytics", "LogAnalytics", "Metrics", "Alerts"],
        "NetworkWatcher": ["Network Watcher", "NetworkWatcher", "Connection Monitor", "Flow logs"],
        "Arc": ["Arc ", "Arc-"],        # Otherwise it matches 'Architecture'
        "RBAC": ["RBAC", "role"],
        "Backup": ["Backup"],
        "ASR": ["ASR", "Site Recovery", "Disaster Recovery"],
        "AzurePolicy": ["Azure Policy", "Policy", "Policies"],
        "APIM": ["APIM", "API Management"],
        "AppProxy": ["App Proxy", "AppProxy"],
        "WAF": ["WAF", "Web Application Firewall"],
        "PrivateLink": ["Private Link", "PrivateLink", "Private Endpoint"],
        "Cost": ["Cost", "Budget"],
    }
    services = []
    for service in service_dict:
        for keyword in service_dict[service]:
            if keyword.lower() in input_string.lower():
                services.append(service)
    return list(set(services))