21 complete_changer_path
,
26 complete_changer_name
,
31 pub fn changer_commands() -> CommandLineInterface
{
33 let cmd_def
= CliCommandMap
::new()
34 .insert("scan", CliCommand
::new(&API_METHOD_SCAN_FOR_CHANGERS
))
35 .insert("list", CliCommand
::new(&API_METHOD_LIST_CHANGERS
))
37 CliCommand
::new(&API_METHOD_GET_CONFIG
)
39 .completion_cb("name", complete_changer_name
)
43 CliCommand
::new(&api2
::config
::changer
::API_METHOD_DELETE_CHANGER
)
45 .completion_cb("name", complete_changer_name
)
49 CliCommand
::new(&api2
::config
::changer
::API_METHOD_CREATE_CHANGER
)
51 .completion_cb("name", complete_drive_name
)
52 .completion_cb("path", complete_changer_path
)
56 CliCommand
::new(&api2
::config
::changer
::API_METHOD_UPDATE_CHANGER
)
58 .completion_cb("name", complete_changer_name
)
59 .completion_cb("path", complete_changer_path
)
62 CliCommand
::new(&API_METHOD_GET_STATUS
)
64 .completion_cb("name", complete_changer_name
)
67 CliCommand
::new(&api2
::tape
::changer
::API_METHOD_TRANSFER
)
69 .completion_cb("name", complete_changer_name
)
80 schema
: OUTPUT_FORMAT
,
89 rpcenv
: &mut dyn RpcEnvironment
,
90 ) -> Result
<(), Error
> {
92 let output_format
= get_output_format(¶m
);
93 let info
= &api2
::config
::changer
::API_METHOD_LIST_CHANGERS
;
94 let mut data
= match info
.handler
{
95 ApiHandler
::Sync(handler
) => (handler
)(param
, info
, rpcenv
)?
,
99 let options
= default_table_format_options()
100 .column(ColumnConfig
::new("name"))
101 .column(ColumnConfig
::new("path"))
102 .column(ColumnConfig
::new("vendor"))
103 .column(ColumnConfig
::new("model"))
104 .column(ColumnConfig
::new("serial"))
107 format_and_print_result_full(&mut data
, &info
.returns
, &output_format
, &options
);
116 schema
: OUTPUT_FORMAT
,
122 /// Scan for SCSI tape changers
123 fn scan_for_changers(
125 rpcenv
: &mut dyn RpcEnvironment
,
126 ) -> Result
<(), Error
> {
128 let output_format
= get_output_format(¶m
);
129 let info
= &api2
::tape
::changer
::API_METHOD_SCAN_CHANGERS
;
130 let mut data
= match info
.handler
{
131 ApiHandler
::Sync(handler
) => (handler
)(param
, info
, rpcenv
)?
,
135 let options
= default_table_format_options()
136 .column(ColumnConfig
::new("path"))
137 .column(ColumnConfig
::new("vendor"))
138 .column(ColumnConfig
::new("model"))
139 .column(ColumnConfig
::new("serial"))
142 format_and_print_result_full(&mut data
, &info
.returns
, &output_format
, &options
);
151 schema
: OUTPUT_FORMAT
,
155 schema
: CHANGER_NAME_SCHEMA
,
160 /// Get tape changer configuration
163 rpcenv
: &mut dyn RpcEnvironment
,
164 ) -> Result
<(), Error
> {
166 let output_format
= get_output_format(¶m
);
167 let info
= &api2
::config
::changer
::API_METHOD_GET_CONFIG
;
168 let mut data
= match info
.handler
{
169 ApiHandler
::Sync(handler
) => (handler
)(param
, info
, rpcenv
)?
,
173 let options
= default_table_format_options()
174 .column(ColumnConfig
::new("name"))
175 .column(ColumnConfig
::new("path"))
178 format_and_print_result_full(&mut data
, &info
.returns
, &output_format
, &options
);
187 schema
: OUTPUT_FORMAT
,
191 schema
: CHANGER_NAME_SCHEMA
,
196 /// Get tape changer status
199 rpcenv
: &mut dyn RpcEnvironment
,
200 ) -> Result
<(), Error
> {
202 let output_format
= get_output_format(¶m
);
203 let info
= &api2
::tape
::changer
::API_METHOD_GET_STATUS
;
204 let mut data
= match info
.handler
{
205 ApiHandler
::Async(handler
) => (handler
)(param
, info
, rpcenv
).await?
,
209 let options
= default_table_format_options()
210 .column(ColumnConfig
::new("entry-kind"))
211 .column(ColumnConfig
::new("entry-id"))
212 .column(ColumnConfig
::new("changer-id"))
213 .column(ColumnConfig
::new("loaded-slot"))
216 format_and_print_result_full(&mut data
, &info
.returns
, &output_format
, &options
);