feat: Lightsail + svg animation

This commit is contained in:
Zakaria
2026-10-11 14:19:00 -04:00
parent 0036ef7e51
commit ca1e845cb6
40 changed files with 1887 additions and 34 deletions
@@ -0,0 +1,54 @@
import type {CapabilitySchema, FieldSchema, ResourceActionName, ServiceSchema} from './types'
const resourceActions: CapabilitySchema<ResourceActionName>[] = [
{name: 'list', label: 'List instances', enabled: true, status: 'available', runtimeRequired: true},
{name: 'create', label: 'Create instance', enabled: true, status: 'available', runtimeRequired: true},
{name: 'delete', label: 'Delete instance', enabled: true, status: 'available', runtimeRequired: true},
{name: 'inspect', label: 'Inspect instance', enabled: true, status: 'available', runtimeRequired: true},
{name: 'start', label: 'Start instance', enabled: true, status: 'available', runtimeRequired: true},
{name: 'stop', label: 'Stop instance', enabled: true, status: 'available', runtimeRequired: true},
{name: 'reboot', label: 'Reboot instance', enabled: true, status: 'available', runtimeRequired: true},
{name: 'update', label: 'Manage public ports', enabled: true, status: 'available', runtimeRequired: true},
]
const fields: FieldSchema[] = [
{name: 'name', label: 'Instance name', type: 'text', required: true, validation: {minLength: 1, maxLength: 255, message: 'Provide an instance name.'}},
{
name: 'blueprintId', label: 'Blueprint', type: 'select', required: true, defaultValue: 'ubuntu_22_04', options: [
{label: 'Ubuntu 22.04 LTS', value: 'ubuntu_22_04'},
{label: 'Ubuntu 24.04 LTS', value: 'ubuntu_24_04'},
{label: 'Amazon Linux 2023', value: 'amazon_linux_2023'},
{label: 'Nginx', value: 'nginx'},
{label: 'WordPress', value: 'wordpress'},
],
},
{
name: 'bundleId', label: 'Instance plan', type: 'select', required: true, defaultValue: 'nano_3_0', options: [
{label: 'Nano', value: 'nano_3_0'},
{label: 'Micro', value: 'micro_3_0'},
{label: 'Small', value: 'small_3_0'},
{label: 'Medium', value: 'medium_3_0'},
],
},
{name: 'availabilityZone', label: 'Availability Zone', type: 'text', required: true, defaultValue: 'us-east-1a'},
]
export function awsLightsailSchema(): ServiceSchema {
return {
cloud: 'aws',
service: 'lightsail',
displayName: 'Amazon Lightsail',
fields,
actions: ['list', 'create', 'inspect', 'update', 'delete'],
capabilities: {resourceActions},
filters: [{name: 'search', label: 'Search', type: 'text', required: false}],
columns: [
{name: 'name', label: 'Name'},
{name: 'status', label: 'State', format: 'badge'},
{name: 'blueprint', label: 'Blueprint', path: 'metadata.blueprintName'},
{name: 'bundle', label: 'Plan', path: 'metadata.bundleId'},
{name: 'publicIp', label: 'Public IP', path: 'metadata.publicIpAddress'},
{name: 'createdAt', label: 'Created', format: 'datetime'},
],
}
}
@@ -93,6 +93,12 @@ export const SERVICE_CATALOG = {
group: 'Compute',
order: 51,
},
lightsail: {
displayName: 'Lightsail',
iconKey: 'lightsail',
group: 'Compute',
order: 60,
},
codebuild: {
displayName: 'CodeBuild',
iconKey: 'codebuild',