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.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>25</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Region</Label>
            <Width>20</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>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

  </ViewDefinitions>
</Configuration>