PSCumulus.Format.ps1xml

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
  <ViewDefinitions>

    <!-- PSCumulus.CloudRecord -->
    <View>
      <Name>PSCumulus.CloudRecord</Name>
      <ViewSelectedBy>
        <TypeName>PSCumulus.CloudRecord</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Name</Label>
            <Width>30</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Provider</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Region</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Status</Label>
            <Width>10</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Size</Label>
            <Width>20</Width>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>Name</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Provider</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Region</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Status</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Size</PropertyName></TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <!-- PSCumulus.CloudRecord.Detailed -->
    <View>
      <Name>PSCumulus.CloudRecord.Detailed</Name>
      <ViewSelectedBy>
        <TypeName>PSCumulus.CloudRecord.Detailed</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem><PropertyName>Name</PropertyName></ListItem>
              <ListItem><PropertyName>Provider</PropertyName></ListItem>
              <ListItem><PropertyName>Region</PropertyName></ListItem>
              <ListItem><Label>State</Label><PropertyName>Status</PropertyName></ListItem>
              <ListItem><PropertyName>Size</PropertyName></ListItem>
              <ListItem><PropertyName>PrivateIpAddress</PropertyName></ListItem>
              <ListItem><PropertyName>PublicIpAddress</PropertyName></ListItem>
              <ListItem>
                <Label>Tags</Label>
                <ScriptBlock>
                  if ($_.Tags) {
                    ($_.Tags.GetEnumerator() | ForEach-Object { "$($_.Key)=$($_.Value)" }) -join '; '
                  } else {
                    ''
                  }
                </ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Metadata</Label>
                <ScriptBlock>
                  if ($_.Metadata) {
                    ($_.Metadata.GetEnumerator() | ForEach-Object { "$($_.Key)=$($_.Value)" }) -join '; '
                  } else {
                    ''
                  }
                </ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>

    <!-- PSCumulus.CloudRecord.Instance.Detailed -->
    <View>
      <Name>PSCumulus.CloudRecord.Instance.Detailed</Name>
      <ViewSelectedBy>
        <TypeName>PSCumulus.AzureCloudRecord</TypeName>
        <TypeName>PSCumulus.AWSCloudRecord</TypeName>
        <TypeName>PSCumulus.GCPCloudRecord</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem><PropertyName>Name</PropertyName></ListItem>
              <ListItem><PropertyName>Provider</PropertyName></ListItem>
              <ListItem><PropertyName>Region</PropertyName></ListItem>
              <ListItem><Label>State</Label><PropertyName>Status</PropertyName></ListItem>
              <ListItem><PropertyName>Size</PropertyName></ListItem>
              <ListItem><PropertyName>PrivateIpAddress</PropertyName></ListItem>
              <ListItem><PropertyName>PublicIpAddress</PropertyName></ListItem>
              <ListItem><PropertyName>ResourceGroup</PropertyName></ListItem>
              <ListItem><PropertyName>InstanceId</PropertyName></ListItem>
              <ListItem><PropertyName>VmId</PropertyName></ListItem>
              <ListItem><PropertyName>VpcId</PropertyName></ListItem>
              <ListItem><PropertyName>SubnetId</PropertyName></ListItem>
              <ListItem><PropertyName>OsType</PropertyName></ListItem>
              <ListItem><PropertyName>Project</PropertyName></ListItem>
              <ListItem><PropertyName>Zone</PropertyName></ListItem>
              <ListItem><PropertyName>Id</PropertyName></ListItem>
              <ListItem>
                <Label>Tags</Label>
                <ScriptBlock>
                  if ($_.Tags) {
                    ($_.Tags.GetEnumerator() | ForEach-Object { "$($_.Key)=$($_.Value)" }) -join '; '
                  } else {
                    ''
                  }
                </ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>

    <!-- PSCumulus.CloudRecord.Disk.Detailed -->
    <View>
      <Name>PSCumulus.CloudRecord.Disk.Detailed</Name>
      <ViewSelectedBy>
        <TypeName>PSCumulus.AzureDiskRecord</TypeName>
        <TypeName>PSCumulus.AWSDiskRecord</TypeName>
        <TypeName>PSCumulus.GCPDiskRecord</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem><PropertyName>Name</PropertyName></ListItem>
              <ListItem><PropertyName>Provider</PropertyName></ListItem>
              <ListItem><PropertyName>Region</PropertyName></ListItem>
              <ListItem><Label>State</Label><PropertyName>Status</PropertyName></ListItem>
              <ListItem><PropertyName>Size</PropertyName></ListItem>
              <ListItem><PropertyName>DiskSizeGB</PropertyName></ListItem>
              <ListItem><PropertyName>Sku</PropertyName></ListItem>
              <ListItem><PropertyName>VolumeType</PropertyName></ListItem>
              <ListItem><PropertyName>VolumeId</PropertyName></ListItem>
              <ListItem><PropertyName>OsType</PropertyName></ListItem>
              <ListItem><PropertyName>Encrypted</PropertyName></ListItem>
              <ListItem><PropertyName>Zone</PropertyName></ListItem>
              <ListItem>
                <Label>Tags</Label>
                <ScriptBlock>
                  if ($_.Tags) {
                    ($_.Tags.GetEnumerator() | ForEach-Object { "$($_.Key)=$($_.Value)" }) -join '; '
                  } else {
                    ''
                  }
                </ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>

    <!-- PSCumulus.CloudRecord.Storage.Detailed -->
    <View>
      <Name>PSCumulus.CloudRecord.Storage.Detailed</Name>
      <ViewSelectedBy>
        <TypeName>PSCumulus.AzureStorageRecord</TypeName>
        <TypeName>PSCumulus.AWSStorageRecord</TypeName>
        <TypeName>PSCumulus.GCPStorageRecord</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem><PropertyName>Name</PropertyName></ListItem>
              <ListItem><PropertyName>Provider</PropertyName></ListItem>
              <ListItem><PropertyName>Region</PropertyName></ListItem>
              <ListItem><Label>State</Label><PropertyName>Status</PropertyName></ListItem>
              <ListItem><PropertyName>Size</PropertyName></ListItem>
              <ListItem><PropertyName>ResourceGroup</PropertyName></ListItem>
              <ListItem><PropertyName>AccountName</PropertyName></ListItem>
              <ListItem><PropertyName>BucketName</PropertyName></ListItem>
              <ListItem><PropertyName>StorageClass</PropertyName></ListItem>
              <ListItem><PropertyName>Location</PropertyName></ListItem>
              <ListItem><PropertyName>Project</PropertyName></ListItem>
              <ListItem>
                <Label>Tags</Label>
                <ScriptBlock>
                  if ($_.Tags) {
                    ($_.Tags.GetEnumerator() | ForEach-Object { "$($_.Key)=$($_.Value)" }) -join '; '
                  } else {
                    ''
                  }
                </ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>

    <!-- PSCumulus.CloudRecord.Network.Detailed -->
    <View>
      <Name>PSCumulus.CloudRecord.Network.Detailed</Name>
      <ViewSelectedBy>
        <TypeName>PSCumulus.AzureNetworkRecord</TypeName>
        <TypeName>PSCumulus.AWSNetworkRecord</TypeName>
        <TypeName>PSCumulus.GCPNetworkRecord</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem><PropertyName>Name</PropertyName></ListItem>
              <ListItem><PropertyName>Provider</PropertyName></ListItem>
              <ListItem><PropertyName>Region</PropertyName></ListItem>
              <ListItem><Label>State</Label><PropertyName>Status</PropertyName></ListItem>
              <ListItem><PropertyName>AddressSpace</PropertyName></ListItem>
              <ListItem><PropertyName>ResourceGroup</PropertyName></ListItem>
              <ListItem><PropertyName>VnetId</PropertyName></ListItem>
              <ListItem><PropertyName>CidrBlock</PropertyName></ListItem>
              <ListItem><PropertyName>VpcId</PropertyName></ListItem>
              <ListItem><PropertyName>IsDefault</PropertyName></ListItem>
              <ListItem><PropertyName>NetworkName</PropertyName></ListItem>
              <ListItem>
                <Label>Tags</Label>
                <ScriptBlock>
                  if ($_.Tags) {
                    ($_.Tags.GetEnumerator() | ForEach-Object { "$($_.Key)=$($_.Value)" }) -join '; '
                  } else {
                    ''
                  }
                </ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>

    <!-- PSCumulus.CloudRecord.Function.Detailed -->
    <View>
      <Name>PSCumulus.CloudRecord.Function.Detailed</Name>
      <ViewSelectedBy>
        <TypeName>PSCumulus.AzureFunctionRecord</TypeName>
        <TypeName>PSCumulus.AWSFunctionRecord</TypeName>
        <TypeName>PSCumulus.GCPFunctionRecord</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem><PropertyName>Name</PropertyName></ListItem>
              <ListItem><PropertyName>Provider</PropertyName></ListItem>
              <ListItem><PropertyName>Region</PropertyName></ListItem>
              <ListItem><Label>State</Label><PropertyName>Status</PropertyName></ListItem>
              <ListItem><PropertyName>Runtime</PropertyName></ListItem>
              <ListItem><PropertyName>ResourceGroup</PropertyName></ListItem>
              <ListItem><PropertyName>FunctionName</PropertyName></ListItem>
              <ListItem><PropertyName>Project</PropertyName></ListItem>
              <ListItem><PropertyName>EntryPoint</PropertyName></ListItem>
              <ListItem>
                <Label>Tags</Label>
                <ScriptBlock>
                  if ($_.Tags) {
                    ($_.Tags.GetEnumerator() | ForEach-Object { "$($_.Key)=$($_.Value)" }) -join '; '
                  } else {
                    ''
                  }
                </ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>

    <!-- PSCumulus.CloudRecord.Tag.Detailed -->
    <View>
      <Name>PSCumulus.CloudRecord.Tag.Detailed</Name>
      <ViewSelectedBy>
        <TypeName>PSCumulus.AzureTagRecord</TypeName>
        <TypeName>PSCumulus.AWSTagRecord</TypeName>
        <TypeName>PSCumulus.GCPTagRecord</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem><PropertyName>Name</PropertyName></ListItem>
              <ListItem><PropertyName>Provider</PropertyName></ListItem>
              <ListItem><Label>State</Label><PropertyName>Status</PropertyName></ListItem>
              <ListItem><PropertyName>ResourceId</PropertyName></ListItem>
              <ListItem><PropertyName>Project</PropertyName></ListItem>
              <ListItem><PropertyName>Resource</PropertyName></ListItem>
              <ListItem>
                <Label>Tags</Label>
                <ScriptBlock>
                  if ($_.Tags) {
                    ($_.Tags.GetEnumerator() | ForEach-Object { "$($_.Key)=$($_.Value)" }) -join '; '
                  } else {
                    ''
                  }
                </ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>

    <!-- PSCumulus.ConnectionResult -->
    <View>
      <Name>PSCumulus.ConnectionResult</Name>
      <ViewSelectedBy>
        <TypeName>PSCumulus.ConnectionResult</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Provider</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Connected</Label>
            <Width>10</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Context</Label>
            <Width>40</Width>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>Provider</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Connected</PropertyName></TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  switch ($_.Provider) {
                    'Azure' {
                      if ($_.ContextName) {
                        $_.ContextName
                      } elseif ($_.Subscription) {
                        $_.Subscription
                      } elseif ($_.Account) {
                        $_.Account
                      } else {
                        'Connected'
                      }
                    }
                    'AWS' {
                      if ($_.ProfileName -and $_.Region) {
                        "$($_.ProfileName) ($($_.Region))"
                      } elseif ($_.AccountId -and $_.Region) {
                        "$($_.AccountId) ($($_.Region))"
                      } elseif ($_.ProfileName) {
                        $_.ProfileName
                      } elseif ($_.AccountId) {
                        $_.AccountId
                      } elseif ($_.Region) {
                        $_.Region
                      } else {
                        'Connected'
                      }
                    }
                    'GCP' {
                      if ($_.Account -and $_.Project) {
                        "$($_.Account) / $($_.Project)"
                      } elseif ($_.Project) {
                        $_.Project
                      } elseif ($_.Account) {
                        $_.Account
                      } else {
                        'Connected'
                      }
                    }
                    default { 'Connected' }
                  }
                </ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <!-- PSCumulus.CloudContext -->
    <View>
      <Name>PSCumulus.CloudContext</Name>
      <ViewSelectedBy>
        <TypeName>PSCumulus.CloudContext</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Provider</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>State</Label>
            <Width>10</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Account</Label>
            <Width>30</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Scope</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Region</Label>
            <Width>15</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>ExpiresAt</Label>
            <Width>16</Width>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>Provider</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>ConnectionState</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Account</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Scope</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Region</PropertyName></TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.ExpiresAt) {
                    $_.ExpiresAt.ToString("HH:mm")
                  } else {
                    ''
                  }
                </ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <!-- PSCumulus.ConnectionTestResult -->
    <View>
      <Name>PSCumulus.ConnectionTestResult</Name>
      <ViewSelectedBy>
        <TypeName>PSCumulus.ConnectionTestResult</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Provider</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Connected</Label>
            <Width>10</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Message</Label>
            <Width>50</Width>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>Provider</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Connected</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Message</PropertyName></TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

  </ViewDefinitions>
</Configuration>