first commit
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
import type {ServiceSchema} from './types'
|
||||
|
||||
export function awsLogsSchema(): ServiceSchema {
|
||||
return {
|
||||
cloud: 'aws',
|
||||
service: 'logs',
|
||||
displayName: 'CloudWatch Logs',
|
||||
fields: [
|
||||
{
|
||||
name: 'name',
|
||||
label: 'Log group name',
|
||||
type: 'text',
|
||||
required: true,
|
||||
validation: {
|
||||
minLength: 1,
|
||||
maxLength: 512,
|
||||
pattern: '^[A-Za-z0-9_./#-]+$',
|
||||
message: 'Use letters, numbers, underscore, dot, slash, hash, or dash.',
|
||||
},
|
||||
},
|
||||
],
|
||||
actions: ['list', 'create', 'delete', 'inspect'],
|
||||
capabilities: {
|
||||
resourceActions: [
|
||||
{name: 'list', label: 'List log groups', enabled: true, status: 'available', runtimeRequired: true},
|
||||
{name: 'create', label: 'Create log group', enabled: true, status: 'available', runtimeRequired: true},
|
||||
{name: 'delete', label: 'Delete log group', enabled: true, status: 'available', runtimeRequired: true},
|
||||
{name: 'inspect', label: 'Inspect metadata', enabled: true, status: 'available', runtimeRequired: true},
|
||||
],
|
||||
collectionActions: [
|
||||
{name: 'list', label: 'List log streams', enabled: true, status: 'available', runtimeRequired: true},
|
||||
{name: 'create', label: 'Create log stream', enabled: true, status: 'available', runtimeRequired: true},
|
||||
{name: 'delete', label: 'Delete log stream', enabled: true, status: 'available', runtimeRequired: true},
|
||||
],
|
||||
// Read-only leaf, and that is the provider's shape rather than a gap:
|
||||
// AWS has no DeleteLogEvent, and writing events from a resource
|
||||
// browser is not something a console should offer.
|
||||
itemActions: [
|
||||
{name: 'list', label: 'Read log events', enabled: true, status: 'available', runtimeRequired: true},
|
||||
],
|
||||
},
|
||||
filters: [
|
||||
{
|
||||
name: 'search',
|
||||
label: 'Name starts with',
|
||||
type: 'text',
|
||||
required: false,
|
||||
description: 'CloudWatch filters log groups by prefix, not by substring.',
|
||||
},
|
||||
],
|
||||
columns: [
|
||||
{name: 'name', label: 'Log group'},
|
||||
// No 'Stored' column here, deliberately: the runtime's DescribeLogGroups
|
||||
// always reports storedBytes as 0 at the group level (only the stream
|
||||
// level is accurate), so a table cell showing "0 B" would tell the user
|
||||
// a populated group is empty. The field still travels in
|
||||
// metadata.storedBytes for anyone reading the resource directly.
|
||||
{name: 'retentionInDays', label: 'Retention', path: 'metadata.retentionInDays', emptyText: 'Never expires'},
|
||||
{name: 'createdAt', label: 'Created', format: 'datetime'},
|
||||
],
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user