@@ -25,6 +25,60 @@ Current focus of the project is at introducing Rust as a programming language
2525into the ecosystem of OpenStack user facing tooling and provides SDK as well as
2626CLI and TUI.
2727
28+ ## Components
29+
30+ - ` openstack_sdk ` - SDK
31+ - ` openstack_cli ` - The new and shiny CLI for OpenStack
32+ - ` openstack_tui ` - Text (Terminal) User Interface
33+ - ` openstack_types ` - Type definitions for the API responses.
34+ - ` doc ` - Project documentation
35+
36+ ## OpenStackClient (NG)
37+
38+ New approach for having a CLI for OpenStack using complied language offering
39+ blazing fast UX (it is the cloud to blame for being slow from now on, not the
40+ client).
41+
42+ - Advanced authentication caching built-in and enabled by default
43+
44+ - Status based resource coloring (resource list table rows are colored by the
45+ resource state)
46+
47+ - Output configuration (using ` $XDG_CONFIG_DIR/osc/config.yaml ` it is possible
48+ to configure which fields should be returned when listing resources to enable
49+ customization).
50+
51+ - Strict microversion binding for resource modification requests (instead of
52+ ` openstack server create ... ` which will not work with all microversions you
53+ use ` osc compute server create290 ` which will only work if server supports it.
54+ It is similar to ` openstack --os-compute-api-version X.Y ` ). It behaves the same
55+ on every cloud independent of which microversion this cloud supports (as long
56+ as it supports required microversion).
57+
58+ - Can be wonderfully combined with jq for ultimate control of the necessary
59+ data (` osc server list -o json | jq -r ".[].flavor.original_name" ` )
60+
61+ - Output everything what cloud sent (` osc compute server list -o json ` to
62+ return fields that we never even knew about, but the cloud sent us).
63+
64+ - ` osc api ` command as an API wrapper allowing user to perform any direct API
65+ call specifying service type, url, method and payload. This can be used for
66+ example when certain resource is not currently implemented natively.
67+
68+
69+ ## Terminal User Interface (TUI)
70+
71+ Exploring the cloud resources using CLI is not something very comfortable. A
72+ terminal user interface imroves user experience when a quick look at currently
73+ present resources is required.
74+
75+ openstack_tui (` ostui ` as a binary name) is such TUI built upon
76+ [ Ratatui] ( https://ratatui.rs ) and inspired in functionality by
77+ [ k9s] ( https://k9scli.io ) that provides TUI for Kubernetes.
78+
79+ ![ ] ( doc/src/images/tui/ostui.gif )
80+
81+
2882## Design principles
2983
3084After long time maintaining OpenStack client facing tools it became clear that
@@ -74,16 +128,6 @@ normalization.
74128- User is in full control of input and output. Microversion X.Y has a concrete
75129body schema and with no faulty merges between different versions.
76130
77- ## Components
78-
79- - ` openstack_sdk ` - SDK
80- - ` openstack_cli ` - The new and shiny CLI for OpenStack
81- - ` openstack_tui ` - Text (Terminal) User Interface
82- - ` structable_derive ` - Helper crate for having Output in some way similar to
83- old OpenStackClient
84- - ` xtask ` - Workflow helper
85- - ` doc ` - Project documentation
86-
87131## Trying out
88132
89133Any software is created to be used.
@@ -104,7 +148,6 @@ TUI can be installed similarly:
104148curl --proto '=https' --tlsv1.2 -LsSf https://github.com/gtema/openstack/releases/latest/download/openstack_tui-installer.sh | sh
105149```
106150
107-
108151### Build locally
109152Alternatively it is possible to compile project from sources. Since the project
110153is a pure ` Rust ` it requires having a Rust compile suite.
@@ -160,18 +203,6 @@ and token caching enabled. Benchmarking is performed using
160203API response. High amount of long API requests causes smaller performance
161204difference.
162205
163- ## Terminal User Interface (TUI)
164-
165- Exploring the cloud resources using CLI is not something very comfortable. A
166- terminal user interface imroves user experience when a quick look at currently
167- present resources is required.
168-
169- openstack_tui (` ostui ` as a binary name) is such TUI built upon
170- [ Ratatui] ( https://ratatui.rs ) and inspired in functionality by
171- [ k9s] ( https://k9scli.io ) that provides TUI for Kubernetes.
172-
173- ![ ] ( doc/src/images/tui/ostui.gif )
174-
175206## Software security
176207
177208Security is being taken seriously. Every step of the development and release
0 commit comments