diff --git a/cmd/coreos-assembler.go b/cmd/coreos-assembler.go index d7f14a79769ba8ed16d881ae5ae62e8571b68e0e..02eb892b8ccfa762b9f3076ad26172a58fa427e9 100644 --- a/cmd/coreos-assembler.go +++ b/cmd/coreos-assembler.go @@ -13,12 +13,16 @@ import ( // commands we'd expect to use in the local dev path var buildCommands = []string{"init", "fetch", "build", "run", "prune", "clean", "list"} -var advancedBuildCommands = []string{"buildfetch", "buildupload", "oc-adm-release", "push-container", "upload-oscontainer", "buildextend-extensions"} -var buildextendCommands = []string{"aliyun", "applehv", "aws", "azure", "digitalocean", "exoscale", "extensions", "extensions-container", "gcp", "hashlist-experimental", "hyperv", "ibmcloud", "kubevirt", "legacy-oscontainer", "live", "metal", "metal4k", "nutanix", "openstack", "qemu", "secex", "virtualbox", "vmware", "vultr"} +var advancedBuildCommands = []string{"push-container", "upload-oscontainer", "buildextend-extensions"} +var buildextendCommands = []string{"extensions", "extensions-container", "legacy-oscontainer", "live", "metal", "metal4k", "openstack", "qemu", "secex"} -var utilityCommands = []string{"aws-replicate", "compress", "copy-container", "koji-upload", "kola", "push-container-manifest", "remote-build-container", "remote-prune", "remote-session", "sign", "tag", "update-variant"} +var utilityCommands = []string{"compress", "copy-container", "kola", "push-container-manifest", "remote-build-container", "remote-prune", "remote-session", "tag", "virt-install"} var otherCommands = []string{"shell", "meta"} +var nestos_unsupport_advanced_build_commands = []string{"buildfetch", "buildupload", "oc-adm-release"} +var nestos_unsupport_buildextend_commands = []string{"aliyun", "applehv", "aws", "azure", "digitalocean", "exoscale", "gcp", "hashlist-experimental", "hyperv", "ibmcloud", "kubevirt", "nutanix", "virtualbox", "vmware", "vultr"} +var nestos_unsupport_utility_commands = []string{"aws-replicate", "koji-upload", "sign", "update-variant"} + func init() { // Note buildCommands is intentionally listed in frequency order sort.Strings(advancedBuildCommands) @@ -57,6 +61,22 @@ func printUsage() { printCommands("Other commands", otherCommands) } +func contains(slice []string, str string) bool { + for _, item := range slice { + if item == str { + return true + } + } + return false +} + +func stripPrefix(str, prefix string) string { + if strings.HasPrefix(str, prefix) { + return str[len(prefix):] + } + return str // or panic, or return an error +} + func run(argv []string) error { if err := initializeGlobalState(argv); err != nil { return fmt.Errorf("failed to initialize global state: %w", err) @@ -73,6 +93,16 @@ func run(argv []string) error { os.Exit(1) } + // Determine if the function is currently not supported by NestOS + if contains(nestos_unsupport_advanced_build_commands, cmd) || + contains(nestos_unsupport_utility_commands, cmd) || + (strings.HasPrefix(cmd, "buildextend-") && + contains(nestos_unsupport_buildextend_commands, stripPrefix(cmd, "buildextend-"))) { + + fmt.Printf("Command %s is not applicable to NestOS\n", cmd) + os.Exit(1) + } + // if the COREOS_ASSEMBLER_REMOTE_SESSION environment variable is // set then we "intercept" the command here and redirect it to // `cosa remote-session exec`, which will execute the commands diff --git a/mantle/platform/platform.go b/mantle/platform/platform.go index 56e45f6da9a51ab9e00204eb3ac1da5bf12cf73a..9313337ad104a14b061a71bde7b16da534c9fc2d 100644 --- a/mantle/platform/platform.go +++ b/mantle/platform/platform.go @@ -469,14 +469,13 @@ func CheckMachine(ctx context.Context, m Machine) error { } // NestOS don't want to check '/etc/os-release' to check if it is supported - // check systemd version on host to see if we can use `busctl --json=short` var systemdVer int var systemdCmd, failedUnitsCmd, activatingUnitsCmd string var systemdFailures bool minSystemdVer := 240 - out, stderr, err = m.SSH("rpm -q --queryformat='%{VERSION}\n' systemd") + out, stderr, err := m.SSH("rpm -q --queryformat='%{VERSION}\n' systemd") if err != nil { return fmt.Errorf("failed to query systemd RPM for version: %s: %v: %s", out, err, stderr) }