Common Workflows¶
Everyday OpenStack operations with Substation.
Command-Based Workflows¶
Substation emphasizes command-based navigation as the primary method for all operations. Commands are discoverable (tab completion), forgiving (fuzzy matching), and context-aware.
Learning Path¶
- Beginners: Use command input (
:then Tab to discover commands) - Intermediate: Learn command aliases (
:servers=:srv=:s) - Advanced: Master short aliases and command combinations for efficiency
Server Management¶
List Servers¶
- Launch Substation:
substation --cloud mycloud - Press
:to enter command input - Type
servers(or press Tab to see all commands) - Press
Enterto navigate to servers view - Use
^/vto navigate - Press
Spaceto view details
Command Discovery:
: Enter command input
: <Tab> Show all available commands
: serv<Tab> Auto-complete to :servers
: servers<Enter> Navigate to servers view
Advanced Filtering:
- Navigate to servers:
:servers<Enter> - Press
/for local search - Type filter (e.g., "prod" for production servers)
- Navigate filtered results
Create a Server¶
- Navigate to servers view:
:servers<Enter> - Create server:
:create<Enter> - Fill in the form:
- Name: Server name (e.g., web-server-01)
- Flavor: Tab to select size (or use recommendation mode)
- Image: Select OS image
- Network: Select network(s)
- Security Groups (optional)
- Key Pair (optional)
- Tab through fields, Enter to edit
- Press
Enterto create - Watch real-time status as server builds
Pro Tip: Press Tab in flavor selector to enter recommendation mode for workload-aware suggestions.
Command Aliases:
:create=:new=:add- All work the same way, choose what feels natural
Server Actions¶
Start Server:
- Navigate to server list:
:servers<Enter> - Select stopped server with
^/v - Start server:
:start<Enter>(or:boot<Enter>) - Confirm if prompted
Stop Server:
- Navigate to server list:
:servers<Enter> - Select running server with
^/v - Stop server:
:stop<Enter>(or:shutdown<Enter>) - Confirm if prompted
Restart Server:
- Navigate to server list:
:servers<Enter> - Select running server
- Restart:
:restart<Enter>(or:reboot<Enter>) - Choose soft or hard reboot
- Confirm
Delete Server:
- Navigate to server list:
:servers<Enter> - Select server to delete
- Delete:
:delete<Enter>(or:remove<Enter>or:rm<Enter>) - Confirm deletion
- Server removed
View Console Logs:
- Navigate to server list:
:servers<Enter> - Select server
- Press
SpaceorEnterto view server details - Use keyboard shortcuts to access console (see module-specific shortcuts)
- Press
Escto close
Command Discovery Tips:
:start=:boot=:power-on(all aliases work):stop=:shutdown=:power-off:restart=:reboot:delete=:remove=:rm- Press
:then Tab to see all available action commands
Create Server Snapshot¶
- Navigate to servers:
:servers<Enter> - Select server to snapshot
- Use keyboard shortcut or action menu to create snapshot
- Enter snapshot name
- Snapshot creates in background
- Check images:
:images<Enter>to see snapshot
Resize Server¶
- Select server to resize
- Use keyboard shortcut or action menu to resize
- Select new flavor
- Confirm resize
- Verify resize (or revert if issues)
Network Management¶
List Networks¶
- Navigate to networks:
:networks<Enter> - View all networks in project
- Press
Spacefor network details - See subnets, ports, DHCP status
Command Aliases:
:networks=:net=:n=:neutron
Create Network¶
- Navigate to networks:
:networks<Enter> - Create network:
:create<Enter> - Fill in network form:
- Name: Network name
- MTU: Default 1500 (or custom)
- Port Security: Enable/disable
- External: Mark as external (if applicable)
- Press
Enterto create
Create Subnet¶
- Navigate to subnets:
:subnets<Enter> - Create subnet:
:create<Enter> - Fill in subnet form:
- Name: Subnet name
- Network: Select parent network
- CIDR: IP range (e.g., 192.168.1.0/24)
- Gateway IP: Gateway address (or auto)
- DHCP: Enable/disable
- Allocation Pools (optional)
- DNS Nameservers (optional)
- Press
Enterto create
Command Aliases:
:subnets=:sub=:u
Create Router¶
- Navigate to routers:
:routers<Enter> - Create router:
:create<Enter> - Configure router:
- Name: Router name
- External Network: Select for gateway (optional)
- Press
Enterto create
Command Aliases:
:routers=:rtr=:r
Attach Subnet to Router¶
- Navigate to subnets:
:subnets<Enter> - Select subnet to attach
- Use keyboard shortcut or action menu to attach
- Select target router
- Confirm attachment
Manage Security Groups¶
Create Security Group:
- Navigate to security groups:
:securitygroups<Enter> - Create group:
:create<Enter> - Enter security group name and description
- Press
Enterto create
Command Aliases:
:securitygroups=:secgroups=:sg=:e
Add Security Group Rule:
- Navigate to security groups:
:securitygroups<Enter> - Select security group
- Manage rules:
:manage<Enter> - Create rule:
:create<Enter> - Configure rule:
- Direction: Ingress or Egress
- Protocol: TCP, UDP, ICMP, or Any
- Port Range: Single port or range
- Remote: CIDR or security group
- Press
Enterto add rule
Manage Floating IPs¶
Allocate Floating IP:
- Navigate to floating IPs:
:floatingips<Enter> - Create/allocate:
:create<Enter> - Select floating IP pool (external network)
- IP allocated and shown in list
Command Aliases:
:floatingips=:fips=:l
Associate Floating IP:
- Navigate to floating IPs:
:floatingips<Enter> - Select unassociated IP
- Use keyboard shortcut or action menu to associate
- Select target server
- Select server port
- Confirm association
Disassociate Floating IP:
- Select associated floating IP
- Use keyboard shortcut or action menu to disassociate
- Confirm disassociation
- IP returned to pool
Storage Management¶
List Volumes¶
- Navigate to volumes:
:volumes<Enter> - View all volumes
- Press
Spacefor volume details - See size, type, attachments, status
Command Aliases:
:volumes=:vol=:v=:cinder
Create Volume¶
- Navigate to volumes:
:volumes<Enter> - Create volume:
:create<Enter> - Fill in volume form:
- Name: Volume name
- Size: Size in GB
- Volume Type (optional)
- Source: Empty, image, snapshot, or volume
- Press
Enterto create
Attach Volume to Server¶
- Navigate to volumes:
:volumes<Enter> - Select available volume
- Use keyboard shortcut or action menu to attach
- Select target server
- Optionally specify device path
- Confirm attachment
Detach Volume from Server¶
- Select attached volume
- Use keyboard shortcut or action menu to detach
- Confirm detachment
- Volume returns to available state
Create Volume Snapshot¶
- Select volume to snapshot
- Use keyboard shortcut or action menu to create snapshot
- Enter snapshot name
- Snapshot created
- View in volume snapshots list
Extend Volume Size¶
- Select volume to extend
- Use keyboard shortcut or action menu to extend
- Enter new size (must be larger)
- Confirm extension
- Volume size updated
Image Management¶
List Images¶
- Navigate to images:
:images<Enter> - View all images in project
- Use
/to filter by name - Press
Spacefor image details
Command Aliases:
:images=:img=:i=:glance
Upload Image¶
- Navigate to images:
:images<Enter> - Create/upload:
:create<Enter> - Configure image:
- Name: Image name
- File: Path to image file (or URL)
- Disk Format: qcow2, raw, vmdk, etc.
- Container Format: bare, ovf, etc.
- Visibility: public, private, shared
- Press
Enterto upload - Monitor upload progress
Create Image from Server¶
(See "Create Server Snapshot" above)
Search Operations¶
Local Search (Fast)¶
Search within current view:
- Navigate to any resource list (e.g.,
:servers<Enter>) - Press
/to activate search - Type query (filters as you type)
- Results update instantly
- Press
Escto clear search
Example:
:servers<Enter> Navigate to servers view
/ Start local search
type "web" Shows only servers with "web" in name
Esc Clear search filter
Cross-Service Search (Comprehensive)¶
- Open search:
:search<Enter>(or:find<Enter>) - Type query (e.g., "production")
- Press
Enter - Results from all services:
- Servers (Nova)
- Networks (Neutron)
- Volumes (Cinder)
- Images (Glance)
- Users (Keystone)
- Containers (Swift)
- Navigate results with
^/v - Press
Spacefor details
Command Aliases:
:search=:find=:z
Example Queries:
prod- Find all production resources192.168.1- Find resources with this IPubuntu- Find all Ubuntu-related resourceserror- Find resources in error state
Troubleshooting Workflows¶
Debug Server Issues¶
- Check Server Status:
- Navigate:
:servers<Enter> - Find problem server
- Press
Spacefor details -
Note status and error message
-
View Console Logs:
- Select server
- Use keyboard shortcut to view console logs
- Review boot sequence
-
Look for errors
-
Check Network Connectivity:
- Navigate:
:ports<Enter> - Find server ports
- Verify network attachment
-
Check security groups
-
Check Volume Attachments:
- Navigate:
:volumes<Enter> - Verify volume status
- Check attachment to server
Investigate Network Issues¶
- Verify Router Configuration:
- Navigate:
:routers<Enter> - Check router status
- Verify gateway configuration
-
Check subnet attachments
-
Check Security Rules:
- Navigate:
:securitygroups<Enter> - Review applied groups
- Check rule configurations
-
Verify protocol and port settings
-
Check Floating IP Associations:
- Navigate:
:floatingips<Enter> - Verify IP associations
- Check router external gateway
Cache and Performance Issues¶
Stale Data:
- Cache purge:
:cache-purge<Enter>(or:clear-cache<Enter>) - Refresh view:
:refresh<Enter>(or:reload<Enter>) - Fresh data loaded from API
Slow Performance:
- Navigate to health:
:health<Enter> - Check API response times
- Check cache hit rates (target: 80%+)
- Enable wiretap if needed:
substation --wiretap
Batch Operations¶
Multi-Select Mode¶
Substation supports multi-select for bulk operations:
- Navigate to resource list (e.g.,
:servers<Enter>) - Enter multi-select mode: Press
Ctrl-X - Use
^/vto navigate - Press
Spaceto select/deselect items - Delete selected:
:delete<Enter>(or pressDel) - Exit multi-select: Press
Ctrl-XorEsc
Supported Views:
- Servers, Volumes, Networks, Subnets, Routers, Ports
- Floating IPs, Security Groups, Server Groups, Key Pairs, Images
Monitor Build Progress¶
- Create resources (
:create<Enter>in any view) - Resources show "BUILD" status
- Auto-refresh updates status (toggle with
a) - Wait for "ACTIVE" status
Tips and Tricks¶
Command Discovery Workflow¶
For Beginners:
- Press
:to enter command input - Press
Tabto see all available commands - Type first few letters and
Tabto auto-complete - Use
Up/Downarrows to recall command history - Commands persist in
~/.config/substation/command_history
Progressive Learning:
- Week 1: Use full command names (
:servers,:networks,:volumes) - Week 2: Learn common aliases (
:srv,:net,:vol) - Week 3: Try short aliases (
:s,:n,:v) - Week 4+: Master command-based workflows for efficiency
Efficient Resource Creation¶
- Navigate to resource view (
:servers<Enter>) - Create resource (
:create<Enter>) - Use Tab to navigate form fields quickly
- Use flavor recommendation mode for servers
- Submit with
Enter
Tips:
- Tab completion works in command input
- Fuzzy matching handles typos (
:servrssuggests:servers) - Command history saves frequently used commands
Quick Status Checks¶
- Health dashboard:
:health<Enter>(or:h<Enter>) - See all services at a glance
- Check performance metrics
- Monitor cache effectiveness
Navigation Efficiency¶
Recommended Learning Path:
- Start with commands:
:servers,:networks,:volumes(discoverable) - Learn tab completion:
:serv<Tab>completes to:servers - Use fuzzy matching:
:netwrksuggests:networks - Memorize aliases:
:servers=:srv=:s=:nova
Command Discovery:
- Press
:thenTabto see all commands - Press
?for context-aware help - Use
/for local search within views - Use
:search<Enter>for cross-service search
Data Freshness¶
- Refresh:
:refresh<Enter>(uses cache if valid) - Cache purge:
:cache-purge<Enter>(force fresh data from API) - Auto-refresh: Press
ato toggle intervals (5s, 10s, 30s, 60s, off) - Health check:
:health<Enter>to see cache hit rate
Remember: Start with command input for discoverability. Commands teach you the interface as you learn. As you become more proficient, use shorter command aliases for speed. Before long, you'll be managing OpenStack faster than Horizon could ever dream.
Commands are your guide. Efficiency is your reward. Mastery is your goal.