mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-21 22:53:37 +00:00
generator: deprecate and remove --sm-* options
virt-customize and friends have the following options:
--sm-register
--sm-unregister
--sm-attach
--sm-remove
--sm-credentials
These run `subscription-manager` commands inside the VM, which
is often necessary to get working package install for RHEL VMs.
These were added in 2015ish. Conceptually I understand why we
might want native support in the tools: virt-customize and
virt-builder have package management knowledge, and
for some distros subscription-manager is necessary.
But this support doesn't add much convenience over calling the commands
directly with `--run-command`. And on RHEL10, subscription-manager was
reworked and complete drops the backing commands for `--sm-attach` and
`--sm-remove`.
We _could_ make this code smarter, try to detect that situation,
and not error when subscription-manager is new enough. But if
subscription-manager itself doesn't care about maintaining that kind
of compat, I'm not sure why we should care either.
Instead we decided to just rip it all out and document the
alternatives.
common module is updated to sync related changes:
Cole Robinson (1):
mlcustomize: deprecate and remove --sm-* options
Richard W.M. Jones (3):
mlstdutils: Export List.find_opt
daemon, generator: Use power of 2 for initial size of Hashtbl.create
mlcustomize/inject_virtio_win.ml: Use viostor.inf instead of guestor
https://issues.redhat.com/browse/RHEL-113397
https://issues.redhat.com/browse/RHEL-113398
Signed-off-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
2
common
2
common
Submodule common updated: 7ecf3992b9...90399dd18a
@@ -49,7 +49,6 @@ and op_type =
|
|||||||
| UserPasswordSelector of string (* user:selector *)
|
| UserPasswordSelector of string (* user:selector *)
|
||||||
| SSHKeySelector of string (* user:selector *)
|
| SSHKeySelector of string (* user:selector *)
|
||||||
| StringFn of (string * string) (* string, function name *)
|
| StringFn of (string * string) (* string, function name *)
|
||||||
| SMPoolSelector of string (* pool selector *)
|
|
||||||
|
|
||||||
let ops = [
|
let ops = [
|
||||||
{ op_name = "append-line";
|
{ op_name = "append-line";
|
||||||
@@ -474,48 +473,6 @@ It cannot delete directories, only regular files.
|
|||||||
=back|};
|
=back|};
|
||||||
};
|
};
|
||||||
|
|
||||||
{ op_name = "sm-attach";
|
|
||||||
op_type = SMPoolSelector "SELECTOR";
|
|
||||||
op_discrim = "`SMAttach";
|
|
||||||
op_exclude_v2v = false;
|
|
||||||
op_shortdesc = "Attach to a subscription-manager pool";
|
|
||||||
op_pod_longdesc = "\
|
|
||||||
Attach to a pool using C<subscription-manager>.
|
|
||||||
|
|
||||||
See L<virt-builder(1)/SUBSCRIPTION-MANAGER> for the format of
|
|
||||||
the C<SELECTOR> field.";
|
|
||||||
};
|
|
||||||
|
|
||||||
{ op_name = "sm-register";
|
|
||||||
op_type = Unit;
|
|
||||||
op_discrim = "`SMRegister";
|
|
||||||
op_exclude_v2v = false;
|
|
||||||
op_shortdesc = "Register using subscription-manager";
|
|
||||||
op_pod_longdesc = "\
|
|
||||||
Register the guest using C<subscription-manager>.
|
|
||||||
|
|
||||||
This requires credentials being set using I<--sm-credentials>.";
|
|
||||||
};
|
|
||||||
|
|
||||||
{ op_name = "sm-remove";
|
|
||||||
op_type = Unit;
|
|
||||||
op_discrim = "`SMRemove";
|
|
||||||
op_exclude_v2v = false;
|
|
||||||
op_shortdesc = "Remove all the subscriptions";
|
|
||||||
op_pod_longdesc = "\
|
|
||||||
Remove all the subscriptions from the guest using
|
|
||||||
C<subscription-manager>.";
|
|
||||||
};
|
|
||||||
|
|
||||||
{ op_name = "sm-unregister";
|
|
||||||
op_type = Unit;
|
|
||||||
op_discrim = "`SMUnregister";
|
|
||||||
op_exclude_v2v = false;
|
|
||||||
op_shortdesc = "Unregister using subscription-manager";
|
|
||||||
op_pod_longdesc = "\
|
|
||||||
Unregister the guest using C<subscription-manager>.";
|
|
||||||
};
|
|
||||||
|
|
||||||
{ op_name = "ssh-inject";
|
{ op_name = "ssh-inject";
|
||||||
op_type = SSHKeySelector "USER[:SELECTOR]";
|
op_type = SSHKeySelector "USER[:SELECTOR]";
|
||||||
op_discrim = "`SSHInject";
|
op_discrim = "`SSHInject";
|
||||||
@@ -647,7 +604,6 @@ type flag = {
|
|||||||
and flag_type =
|
and flag_type =
|
||||||
| FlagBool of bool (* boolean is the default value *)
|
| FlagBool of bool (* boolean is the default value *)
|
||||||
| FlagPasswordCrypto of string
|
| FlagPasswordCrypto of string
|
||||||
| FlagSMCredentials of string
|
|
||||||
|
|
||||||
let flags = [
|
let flags = [
|
||||||
{ flag_name = "no-logfile";
|
{ flag_name = "no-logfile";
|
||||||
@@ -709,17 +665,6 @@ The option is a no-op for guests that do not support SELinux.|};
|
|||||||
flag_pod_longdesc = "This is a compatibility option that does nothing.";
|
flag_pod_longdesc = "This is a compatibility option that does nothing.";
|
||||||
};
|
};
|
||||||
|
|
||||||
{ flag_name = "sm-credentials";
|
|
||||||
flag_type = FlagSMCredentials "SELECTOR";
|
|
||||||
flag_ml_var = "sm_credentials";
|
|
||||||
flag_shortdesc = "Credentials for subscription-manager";
|
|
||||||
flag_pod_longdesc = "\
|
|
||||||
Set the credentials for C<subscription-manager>.
|
|
||||||
|
|
||||||
See L<virt-builder(1)/SUBSCRIPTION-MANAGER> for the format of
|
|
||||||
the C<SELECTOR> field.";
|
|
||||||
};
|
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
let rec generate_customize_cmdline_mli () =
|
let rec generate_customize_cmdline_mli () =
|
||||||
@@ -775,8 +720,6 @@ let rec argspec ?(v2v = false) () =
|
|||||||
pr " let %s = ref %b in\n" var default
|
pr " let %s = ref %b in\n" var default
|
||||||
| { flag_type = FlagPasswordCrypto _; flag_ml_var = var } ->
|
| { flag_type = FlagPasswordCrypto _; flag_ml_var = var } ->
|
||||||
pr " let %s = ref None in\n" var
|
pr " let %s = ref None in\n" var
|
||||||
| { flag_type = FlagSMCredentials _; flag_ml_var = var } ->
|
|
||||||
pr " let %s = ref None in\n" var
|
|
||||||
) flags;
|
) flags;
|
||||||
pr {|
|
pr {|
|
||||||
let rec get_ops () = {
|
let rec get_ops () = {
|
||||||
@@ -951,20 +894,6 @@ let rec argspec ?(v2v = false) () =
|
|||||||
pr " s_\"%s\"\n" shortdesc;
|
pr " s_\"%s\"\n" shortdesc;
|
||||||
pr " ),\n";
|
pr " ),\n";
|
||||||
pr " Some %S, %S, %b;\n" v longdesc exclude_v2v
|
pr " Some %S, %S, %b;\n" v longdesc exclude_v2v
|
||||||
| { op_type = SMPoolSelector v; op_name = name; op_discrim = discrim;
|
|
||||||
op_exclude_v2v = exclude_v2v;
|
|
||||||
op_shortdesc = shortdesc; op_pod_longdesc = longdesc } ->
|
|
||||||
pr " (\n";
|
|
||||||
pr " [ L\"%s\" ],\n" name;
|
|
||||||
pr " Getopt.String (\n";
|
|
||||||
pr " s_\"%s\",\n" v;
|
|
||||||
pr " fun s ->\n";
|
|
||||||
pr " let sel = Subscription_manager.parse_pool_selector s in\n";
|
|
||||||
pr " List.push_front (%s sel) ops\n" discrim;
|
|
||||||
pr " ),\n";
|
|
||||||
pr " s_\"%s\"\n" shortdesc;
|
|
||||||
pr " ),\n";
|
|
||||||
pr " Some %S, %S, %b;\n" v longdesc exclude_v2v
|
|
||||||
) ops;
|
) ops;
|
||||||
|
|
||||||
List.iter (
|
List.iter (
|
||||||
@@ -993,20 +922,6 @@ let rec argspec ?(v2v = false) () =
|
|||||||
pr " s_\"%s\"\n" shortdesc;
|
pr " s_\"%s\"\n" shortdesc;
|
||||||
pr " ),\n";
|
pr " ),\n";
|
||||||
pr " Some %S, %S, false;\n" v longdesc
|
pr " Some %S, %S, false;\n" v longdesc
|
||||||
| { flag_type = FlagSMCredentials v; flag_ml_var = var;
|
|
||||||
flag_name = name; flag_shortdesc = shortdesc;
|
|
||||||
flag_pod_longdesc = longdesc } ->
|
|
||||||
pr " (\n";
|
|
||||||
pr " [ L\"%s\" ],\n" name;
|
|
||||||
pr " Getopt.String (\n";
|
|
||||||
pr " s_\"%s\",\n" v;
|
|
||||||
pr " fun s ->\n";
|
|
||||||
pr " %s := Some (Subscription_manager.parse_credentials_selector s)\n"
|
|
||||||
var;
|
|
||||||
pr " ),\n";
|
|
||||||
pr " s_\"%s\"\n" shortdesc;
|
|
||||||
pr " ),\n";
|
|
||||||
pr " Some %S, %S, false;\n" v longdesc
|
|
||||||
) flags;
|
) flags;
|
||||||
|
|
||||||
pr " ]
|
pr " ]
|
||||||
@@ -1026,8 +941,7 @@ let rec argspec ?(v2v = false) () =
|
|||||||
| { op_type = TargetLinks _; }
|
| { op_type = TargetLinks _; }
|
||||||
| { op_type = PasswordSelector _; }
|
| { op_type = PasswordSelector _; }
|
||||||
| { op_type = UserPasswordSelector _; }
|
| { op_type = UserPasswordSelector _; }
|
||||||
| { op_type = SSHKeySelector _; }
|
| { op_type = SSHKeySelector _; } -> ()
|
||||||
| { op_type = SMPoolSelector _; } -> ()
|
|
||||||
) ops;
|
) ops;
|
||||||
|
|
||||||
pr {| ] in
|
pr {| ] in
|
||||||
@@ -1118,10 +1032,6 @@ and generate_ops_struct_decl () =
|
|||||||
discrim name v
|
discrim name v
|
||||||
| { op_type = StringFn (v, _); op_discrim = discrim; op_name = name } ->
|
| { op_type = StringFn (v, _); op_discrim = discrim; op_name = name } ->
|
||||||
pr " | %s of string\n (* --%s %s *)\n" discrim name v
|
pr " | %s of string\n (* --%s %s *)\n" discrim name v
|
||||||
| { op_type = SMPoolSelector v; op_discrim = discrim;
|
|
||||||
op_name = name } ->
|
|
||||||
pr " | %s of Subscription_manager.sm_pool\n (* --%s %s *)\n"
|
|
||||||
discrim name v
|
|
||||||
) ops;
|
) ops;
|
||||||
pr "]\n";
|
pr "]\n";
|
||||||
|
|
||||||
@@ -1135,10 +1045,6 @@ and generate_ops_struct_decl () =
|
|||||||
flag_name = name } ->
|
flag_name = name } ->
|
||||||
pr " %s : Password.password_crypto option;\n (* --%s %s *)\n"
|
pr " %s : Password.password_crypto option;\n (* --%s %s *)\n"
|
||||||
var name v
|
var name v
|
||||||
| { flag_type = FlagSMCredentials v; flag_ml_var = var;
|
|
||||||
flag_name = name } ->
|
|
||||||
pr " %s : Subscription_manager.sm_credentials option;\n (* --%s %s *)\n"
|
|
||||||
var name v
|
|
||||||
) flags;
|
) flags;
|
||||||
pr "}\n"
|
pr "}\n"
|
||||||
|
|
||||||
@@ -1153,7 +1059,7 @@ let generate_customize_synopsis_pod ?(v2v = false) () =
|
|||||||
Some (n, sprintf "[--%s]" n)
|
Some (n, sprintf "[--%s]" n)
|
||||||
| { op_type = String v | StringPair v | StringTriplet v | StringList v
|
| { op_type = String v | StringPair v | StringTriplet v | StringList v
|
||||||
| TargetLinks v | PasswordSelector v | UserPasswordSelector v
|
| TargetLinks v | PasswordSelector v | UserPasswordSelector v
|
||||||
| SSHKeySelector v | StringFn (v, _) | SMPoolSelector v;
|
| SSHKeySelector v | StringFn (v, _);
|
||||||
op_name = n } ->
|
op_name = n } ->
|
||||||
Some (n, sprintf "[--%s %s]" n v)
|
Some (n, sprintf "[--%s %s]" n v)
|
||||||
) ops @
|
) ops @
|
||||||
@@ -1163,8 +1069,6 @@ let generate_customize_synopsis_pod ?(v2v = false) () =
|
|||||||
n, sprintf "[--%s]" n
|
n, sprintf "[--%s]" n
|
||||||
| { flag_type = FlagPasswordCrypto v; flag_name = n } ->
|
| { flag_type = FlagPasswordCrypto v; flag_name = n } ->
|
||||||
n, sprintf "[--%s %s]" n v
|
n, sprintf "[--%s %s]" n v
|
||||||
| { flag_type = FlagSMCredentials v; flag_name = n } ->
|
|
||||||
n, sprintf "[--%s %s]" n v
|
|
||||||
) flags in
|
) flags in
|
||||||
|
|
||||||
(* Print the option names in the synopsis, line-wrapped. *)
|
(* Print the option names in the synopsis, line-wrapped. *)
|
||||||
@@ -1198,7 +1102,7 @@ let generate_customize_options_pod ?(v2v = false) () =
|
|||||||
Some (n, sprintf "B<--%s>" n, ld)
|
Some (n, sprintf "B<--%s>" n, ld)
|
||||||
| { op_type = String v | StringPair v | StringTriplet v | StringList v
|
| { op_type = String v | StringPair v | StringTriplet v | StringList v
|
||||||
| TargetLinks v | PasswordSelector v | UserPasswordSelector v
|
| TargetLinks v | PasswordSelector v | UserPasswordSelector v
|
||||||
| SSHKeySelector v | StringFn (v, _) | SMPoolSelector v;
|
| SSHKeySelector v | StringFn (v, _);
|
||||||
op_name = n; op_pod_longdesc = ld } ->
|
op_name = n; op_pod_longdesc = ld } ->
|
||||||
Some (n, sprintf "B<--%s> %s" n v, ld)
|
Some (n, sprintf "B<--%s> %s" n v, ld)
|
||||||
) ops @
|
) ops @
|
||||||
@@ -1209,9 +1113,6 @@ let generate_customize_options_pod ?(v2v = false) () =
|
|||||||
| { flag_type = FlagPasswordCrypto v;
|
| { flag_type = FlagPasswordCrypto v;
|
||||||
flag_name = n; flag_pod_longdesc = ld } ->
|
flag_name = n; flag_pod_longdesc = ld } ->
|
||||||
n, sprintf "B<--%s> %s" n v, ld
|
n, sprintf "B<--%s> %s" n v, ld
|
||||||
| { flag_type = FlagSMCredentials v;
|
|
||||||
flag_name = n; flag_pod_longdesc = ld } ->
|
|
||||||
n, sprintf "B<--%s> %s" n v, ld
|
|
||||||
) flags in
|
) flags in
|
||||||
let cmp (arg1, _, _) (arg2, _, _) =
|
let cmp (arg1, _, _) (arg2, _, _) =
|
||||||
compare (String.lowercase_ascii arg1) (String.lowercase_ascii arg2)
|
compare (String.lowercase_ascii arg1) (String.lowercase_ascii arg2)
|
||||||
|
|||||||
Reference in New Issue
Block a user