xml/psRadiantOne.Format.Administration.ps1xml

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
  <ViewDefinitions>
    <!--
      Administration: control panel users and roles, scheduled tasks, access control, feature flags,
      the file manager and the dashboard.
    -->
    <View>
      <Name>psRadiantOne.FIDUser</Name>
      <ViewSelectedBy>
        <TypeName>psRadiantOne.FIDUser</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>username</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>firstName</Label>
            <Width>16</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>lastName</Label>
            <Width>16</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>active</Label>
            <Width>7</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>roles</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>username</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>firstName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>lastName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>active</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>$_.roles -join ', '</ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>psRadiantOne.FIDUser.List</Name>
      <ViewSelectedBy>
        <TypeName>psRadiantOne.FIDUser</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <PropertyName>username</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>firstName</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>lastName</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>email</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>entryDn</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>active</PropertyName>
              </ListItem>
              <ListItem>
                <Label>roles</Label>
                <ScriptBlock>$_.roles -join ', '</ScriptBlock>
              </ListItem>
              <ListItem>
                <PropertyName>assumeRole</PropertyName>
              </ListItem>
              <ListItem>
                <!--
                  Unlike every other date the API returns, this one is LDAP generalized time as a
                  string, so it is parsed rather than cast.
                -->
                <Label>createdOn</Label>
                <ScriptBlock>if (-not ([string]::IsNullOrEmpty($_.createdOn))) { [datetime]::ParseExact($_.createdOn, 'yyyyMMddHHmmss.fff\Z', [cultureinfo]::InvariantCulture, [System.Globalization.DateTimeStyles]::AssumeUniversal -bor [System.Globalization.DateTimeStyles]::AdjustToUniversal).ToLocalTime().ToString('g') }</ScriptBlock>
              </ListItem>
              <ListItem>
                <PropertyName>organization</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>server</PropertyName>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
    <View>
      <Name>psRadiantOne.FIDRole</Name>
      <ViewSelectedBy>
        <TypeName>psRadiantOne.FIDRole</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>name</Label>
            <Width>32</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>default</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>browser</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>dashboard</Label>
            <Width>10</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>tasks</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>files</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>identityManager</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>name</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>defaultRole</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>directoryBrowserPermission</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>dashboardPermission</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>tasksPermission</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>fileManagerPermission</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>identityManagerPermission</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>psRadiantOne.FIDRole.List</Name>
      <ViewSelectedBy>
        <TypeName>psRadiantOne.FIDRole</TypeName>
      </ViewSelectedBy>
      <!--
        Seven of the twenty properties are objects holding a permission per control panel feature.
        Each is flattened to its set values, so the role reads as what it grants.
      -->
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <PropertyName>name</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>entryDn</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>defaultRole</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>directoryBrowserPermission</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>identityManagerPermission</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>tasksPermission</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>globalSyncPermission</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>observabilityPermission</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>dashboardPermission</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>fileManagerPermission</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>revokeTokenPermission</PropertyName>
              </ListItem>
              <ListItem>
                <Label>dataCatalogPermissions</Label>
                <ScriptBlock>($_.dataCatalogPermissions.PSObject.Properties | ForEach-Object { "$($_.Name) = $($_.Value -join ', ')" }) -join [System.Environment]::NewLine</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>directoryNamespacePermissions</Label>
                <ScriptBlock>($_.directoryNamespacePermissions.PSObject.Properties | ForEach-Object { "$($_.Name) = $($_.Value)" }) -join [System.Environment]::NewLine</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>securityPermissions</Label>
                <ScriptBlock>($_.securityPermissions.PSObject.Properties | ForEach-Object { "$($_.Name) = $($_.Value)" }) -join [System.Environment]::NewLine</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>administrationPermissions</Label>
                <ScriptBlock>($_.administrationPermissions.PSObject.Properties | ForEach-Object { "$($_.Name) = $($_.Value)" }) -join [System.Environment]::NewLine</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>settingsPermissions</Label>
                <ScriptBlock>($_.settingsPermissions.PSObject.Properties | ForEach-Object { "$($_.Name) = $($_.Value)" }) -join [System.Environment]::NewLine</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>tuningPermissions</Label>
                <ScriptBlock>($_.tuningPermissions.PSObject.Properties | ForEach-Object { "$($_.Name) = $($_.Value)" }) -join [System.Environment]::NewLine</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>exportImportPermissions</Label>
                <ScriptBlock>($_.exportImportPermissions.PSObject.Properties | ForEach-Object { "$($_.Name) = $($_.Value)" }) -join [System.Environment]::NewLine</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>classicControlPanelPermission</Label>
                <ScriptBlock>($_.classicControlPanelPermission.PSObject.Properties | ForEach-Object { "$($_.Name) = $($_.Value)" }) -join [System.Environment]::NewLine</ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
    <View>
      <Name>psRadiantOne.Task</Name>
      <ViewSelectedBy>
        <TypeName>psRadiantOne.Task</TypeName>
      </ViewSelectedBy>
      <!--
        A task carries its log inline, fifteen lines of it, which is what makes the default output
        of a task list unreadable. The log is in the list view below.
      -->
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>name</Label>
            <Width>44</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>status</Label>
            <Width>11</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>recurrent</Label>
            <Width>10</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>interval</Label>
            <Width>12</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>lastExecution</Label>
            <Width>17</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>nextExecution</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>name</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>status</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>recurrent</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>executionInterval</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ($null -ne $_.lastExecution) { ([datetime]$_.lastExecution).ToLocalTime().ToString('g') }</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ($null -ne $_.nextExecution) { ([datetime]$_.nextExecution).ToLocalTime().ToString('g') }</ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>psRadiantOne.Task.List</Name>
      <ViewSelectedBy>
        <TypeName>psRadiantOne.Task</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <PropertyName>name</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>id</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>description</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>status</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>recurrent</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>executionInterval</PropertyName>
              </ListItem>
              <ListItem>
                <Label>lastExecution</Label>
                <ScriptBlock>if ($null -ne $_.lastExecution) { ([datetime]$_.lastExecution).ToLocalTime().ToString('g') }</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>lastTermination</Label>
                <ScriptBlock>if ($null -ne $_.lastTermination) { ([datetime]$_.lastTermination).ToLocalTime().ToString('g') }</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>nextExecution</Label>
                <ScriptBlock>if ($null -ne $_.nextExecution) { ([datetime]$_.nextExecution).ToLocalTime().ToString('g') }</ScriptBlock>
              </ListItem>
              <ListItem>
                <PropertyName>dedicatedJvm</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>jvmParameters</PropertyName>
              </ListItem>
              <ListItem>
                <Label>logs</Label>
                <ScriptBlock>$_.logs -join [System.Environment]::NewLine</ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
    <View>
      <Name>psRadiantOne.Aci</Name>
      <ViewSelectedBy>
        <TypeName>psRadiantOne.Aci</TypeName>
      </ViewSelectedBy>
      <!--
        aciId leads because it is what Get-R1Aci, Set-R1Aci and Remove-R1Aci take.
      -->
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>aciId</Label>
            <Width>12</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>name</Label>
            <Width>28</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>permsType</Label>
            <Width>10</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>targetScope</Label>
            <Width>12</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>parsable</Label>
            <Width>9</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>targetDn</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>aciId</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>name</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>permsType</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>targetScope</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>parsable</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>targetDn</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>psRadiantOne.Aci.List</Name>
      <ViewSelectedBy>
        <TypeName>psRadiantOne.Aci</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <PropertyName>aciId</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>name</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>parsable</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>permsType</PropertyName>
              </ListItem>
              <ListItem>
                <Label>selectedOperations</Label>
                <ScriptBlock>$_.selectedOperations -join ', '</ScriptBlock>
              </ListItem>
              <ListItem>
                <PropertyName>targetDn</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>targetScope</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>targetFilter</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>includeTargetAttributes</PropertyName>
              </ListItem>
              <ListItem>
                <Label>targetAttributes</Label>
                <ScriptBlock>$_.targetAttributes -join ', '</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>applyUserDns</Label>
                <ScriptBlock>$_.applyUserDns -join [System.Environment]::NewLine</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>applyGroupDns</Label>
                <ScriptBlock>$_.applyGroupDns -join [System.Environment]::NewLine</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>applyIps</Label>
                <ScriptBlock>$_.applyIps -join ', '</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>daysOfWeek</Label>
                <ScriptBlock>$_.daysOfWeek -join ', '</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>timeRanges</Label>
                <ScriptBlock>($_.timeRanges | ForEach-Object { "$($_.start) to $($_.end)" }) -join ', '</ScriptBlock>
              </ListItem>
              <ListItem>
                <PropertyName>loaOperator</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>loaLevel</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>aciString</PropertyName>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
    <View>
      <Name>psRadiantOne.FeatureFlag</Name>
      <ViewSelectedBy>
        <TypeName>psRadiantOne.FeatureFlag</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>flagId</Label>
            <Width>38</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>value</Label>
            <Width>7</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>whoDidIt</Label>
            <Width>16</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>description</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>flagId</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>value</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>whoDidIt</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>description</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>psRadiantOne.Directory</Name>
      <ViewSelectedBy>
        <TypeName>psRadiantOne.Directory</TypeName>
      </ViewSelectedBy>
      <!--
        id is the path, and the path is what -path takes, so it leads.
      -->
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>id</Label>
            <Width>40</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>directory</Label>
            <Width>10</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>size</Label>
            <Width>10</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>lastModified</Label>
            <Width>17</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>editable</Label>
            <Width>9</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>uploadAllowed</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>id</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>directory</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>size</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ($null -ne $_.lastModified) { ([datetime]$_.lastModified).ToLocalTime().ToString('g') }</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>editable</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>uploadAllowed</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>psRadiantOne.DashboardLink</Name>
      <ViewSelectedBy>
        <TypeName>psRadiantOne.DashboardLink</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>id</Label>
            <Width>4</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>textOverlay</Label>
            <Width>14</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>title</Label>
            <Width>26</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>linkPath</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>id</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>textOverlay</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>title</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>linkPath</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>psRadiantOne.DashboardItem</Name>
      <ViewSelectedBy>
        <TypeName>psRadiantOne.DashboardItem</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>type</Label>
            <Width>18</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>layout</Label>
            <Width>16</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>widgetUrl</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>type</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ($null -ne $_.layout) { "$($_.layout.x),$($_.layout.y) $($_.layout.w)x$($_.layout.h)" }</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>widgetUrl</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
  </ViewDefinitions>
</Configuration>