This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Dynamic SWQL filter based on URL link?

Hi,

Is there a way to build a template view with a filter based on a URL variable?

Today we have 70 sites in Europe. I would like to have a view per site. This view should show me the resources

- Global Application by Status

- Global Last XX Events

- Global Node Status by Site

Based on the custom property "City" I use the filter "Node.CustomProperty.City Like 'XXXX%'" to limit the view to the necessary nodes. As result I have to create 70 views now. New site, new view.

I ask me if it will not possible to get a more dynamic filter which receives the filter value from the URL. Than I have only to adjust the link to the view instead of to set the filter to every resource per view.

Something like this:

URL solarwindseoc/Default.aspx

Filter: Node.CustomProperty.City Like %FilterVar1% 

 

Or is there any other option already in eoc_custom_filter in place to get a more dynamic view?

BR NetJoerg  

Parents
  • Hi

    Did you get any further on this one? Have the same issue but with like a few thousand sites....

  • You won't get anywhere just by tweaking the url, as the filters are a property of the view object itself not a component of the url.  It is very possible to script up view creation though with the API.  I have a script I use for building app dashboards in regular orion where I build a template view an then clone it as many times as necessary and apply filters to each of those clones.  It's somewhat specific to my use case so I can't post the whole thing here, but have a look at the API documentation here:

    GitHub - solarwinds/OrionSDK: SDK for the SolarWinds Orion platform, including tools, documentation, and samples in Powe…

    and the main verbs you would be interested would be used like so (in powershell)

    invoke-swisverb $swis "Orion.Views" "CloneView" @(

               #View to clone

               "$viewtemplateid",

               #name to give

               "Application - $($view.Applications)"

               )

    invoke-swisverb $swis "Orion.Views" "CloneViewContents" @(

        #source view

        "$viewtemplateid",

        #destination view

        "$newviewid"  

        )

    invoke-swisverb $swis "Orion.Limitations" "CreateLimitation" @( "$limittype",$null,@("$($limit.containerid)"),$null,$null )

    Set-SwisObject $swis -Uri "swis://$uriroot/Orion/Orion.Views/ViewID=$($view.viewid)" -Properties @{"limitationid"="$($view.limitationid)"}

  • Hmmm, thanks mesverrum​!!

    That might be a possibility. Even though I would rather have one dynamic view instead of thousands of copies I guess this is a possibility.

    It's worth trying out anyway.

    Guess I would need a custom query with search also to find the right view also.... :-)

  • Yeah, you can use a custom query resource with some swql in it to search out the links to any particular view

  • Finally got time to test this and thought I'd give back by sharing my solution. Thanks mesverrum​ for all input!

    So, we wanted to clone a view and create one view with limitation per siteID, where siteid is a custom property where we have enabled limitation on it. (I'm no PS programmer so I hope the code don't look to bad...) The customer has move than 1000 sites...

    #region Connect to SWIS 

    # Import the SolarWinds PowerShell Module if needed 

    # install with "Install-Module -Name SwisPowerShell" 

     

    If (!(Get-Module SwisPowerShell)) { 

        Import-Module SwisPowerShell 

     

     

    # Connect to SWIS 

     

     

    $hostname = "localhost"

    $username = 'admin'

    $password = '' 

    $swis = Connect-Swis -UserName $username -Password $password -Hostname $hostname

     

     

    #endregion

    #region Variables and Get site to create view for

    $siteid="0004"

    $ViewName="SiteView - $siteid"

    # LimitationTypeID, different for each custom built limitation, look in SELECT * FROM Orion.Limitations

    $limittype=57

    # ViewID to clone

    $viewtemplateid="144"

    #endregion

    #region Clone View

    # Clone View

    $newviewid=invoke-swisverb $swis "Orion.Views" "CloneView" @(

        #View to clone

        "$viewtemplateid",

        #name to give

        "$ViewName"

        )

    $newviewid2=$newviewid.'#text'

    # Clone view content

    invoke-swisverb $swis "Orion.Views" "CloneViewContents" @(

        #source view

        "$viewtemplateid",

        #destination view

        "$newviewid2" 

        )

    #endregion

    #region Create Limitation on view

    # Create the limitation

    $NewLImitationID=invoke-swisverb $swis "Orion.Limitations" "CreateLimitation" @( '57',$null,@("$($Siteid)"),$null,$null )

    $newLimitationID2=$NewLImitationID.'#text'

    # Bind the new limitation to the new view

    Set-SwisObject $swis -Uri "swis://$hostname/Orion/Orion.Views/ViewID=$newviewid2" -Properties @{"limitationid"="$newLimitationID2"}

    #endregion

    After that I created one summaryview to list all these subviews, incl a search.

    Just a normal "Custom Query" where:

    Custom SWQL query=

    SELECT

        ViewTitle,

        CONCAT('http://orionserver:8787/Orion/SummaryView.aspx?netobject=&ViewID=', ViewID) as [_LinkFor_ViewTitle]

    FROM Orion.Views

    WHERE ViewTitle LIKE 'SiteView - %'

    and Search SWQL Query=

    SELECT

        ViewTitle,

        CONCAT('http://orionserver:8787/Orion/SummaryView.aspx?netobject=&ViewID=', ViewID) as [_LinkFor_ViewTitle]

    FROM Orion.Views

    WHERE

       ViewTitle LIKE '%${SEARCH_STRING}%'

      AND ViewTitle LIKE 'SiteView%'

    Hope it helps and/or inspires someone out there!

Reply
  • Finally got time to test this and thought I'd give back by sharing my solution. Thanks mesverrum​ for all input!

    So, we wanted to clone a view and create one view with limitation per siteID, where siteid is a custom property where we have enabled limitation on it. (I'm no PS programmer so I hope the code don't look to bad...) The customer has move than 1000 sites...

    #region Connect to SWIS 

    # Import the SolarWinds PowerShell Module if needed 

    # install with "Install-Module -Name SwisPowerShell" 

     

    If (!(Get-Module SwisPowerShell)) { 

        Import-Module SwisPowerShell 

     

     

    # Connect to SWIS 

     

     

    $hostname = "localhost"

    $username = 'admin'

    $password = '' 

    $swis = Connect-Swis -UserName $username -Password $password -Hostname $hostname

     

     

    #endregion

    #region Variables and Get site to create view for

    $siteid="0004"

    $ViewName="SiteView - $siteid"

    # LimitationTypeID, different for each custom built limitation, look in SELECT * FROM Orion.Limitations

    $limittype=57

    # ViewID to clone

    $viewtemplateid="144"

    #endregion

    #region Clone View

    # Clone View

    $newviewid=invoke-swisverb $swis "Orion.Views" "CloneView" @(

        #View to clone

        "$viewtemplateid",

        #name to give

        "$ViewName"

        )

    $newviewid2=$newviewid.'#text'

    # Clone view content

    invoke-swisverb $swis "Orion.Views" "CloneViewContents" @(

        #source view

        "$viewtemplateid",

        #destination view

        "$newviewid2" 

        )

    #endregion

    #region Create Limitation on view

    # Create the limitation

    $NewLImitationID=invoke-swisverb $swis "Orion.Limitations" "CreateLimitation" @( '57',$null,@("$($Siteid)"),$null,$null )

    $newLimitationID2=$NewLImitationID.'#text'

    # Bind the new limitation to the new view

    Set-SwisObject $swis -Uri "swis://$hostname/Orion/Orion.Views/ViewID=$newviewid2" -Properties @{"limitationid"="$newLimitationID2"}

    #endregion

    After that I created one summaryview to list all these subviews, incl a search.

    Just a normal "Custom Query" where:

    Custom SWQL query=

    SELECT

        ViewTitle,

        CONCAT('http://orionserver:8787/Orion/SummaryView.aspx?netobject=&ViewID=', ViewID) as [_LinkFor_ViewTitle]

    FROM Orion.Views

    WHERE ViewTitle LIKE 'SiteView - %'

    and Search SWQL Query=

    SELECT

        ViewTitle,

        CONCAT('http://orionserver:8787/Orion/SummaryView.aspx?netobject=&ViewID=', ViewID) as [_LinkFor_ViewTitle]

    FROM Orion.Views

    WHERE

       ViewTitle LIKE '%${SEARCH_STRING}%'

      AND ViewTitle LIKE 'SiteView%'

    Hope it helps and/or inspires someone out there!

Children
No Data