-
Notifications
You must be signed in to change notification settings - Fork 170
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Roman Mohr <[email protected]>
- Loading branch information
Showing
10 changed files
with
175 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,3 +9,4 @@ maipo/ | |
*.shellchecked | ||
.coverage | ||
tools/bin | ||
.idea |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
#!/usr/bin/python3 -u | ||
import logging as log | ||
import os.path | ||
import sys | ||
|
||
cosa_dir = os.path.dirname(os.path.abspath(__file__)) | ||
sys.path.insert(0, f"{cosa_dir}/cosalib") | ||
sys.path.insert(0, cosa_dir) | ||
|
||
from cosalib.build import BuildExistsError | ||
from cosalib.cli import BuildCli | ||
import cosalib.qemuvariants as QVariants | ||
import cosalib.ova as OVA | ||
|
||
|
||
def get_builder(imgtype, build_root, build="latest", force=False, compress=False, schema=None): | ||
kargs = { | ||
"build": build, | ||
"buildroot": build_root, | ||
"force": force, | ||
"compress": compress, | ||
"schema": schema, | ||
"variant": imgtype | ||
} | ||
|
||
if imgtype in QVariants.VARIANTS: | ||
log.info(f"Target '{imgtype.upper()}' is a Qemu Variant image") | ||
return QVariants.QemuVariantImage(**kargs) | ||
|
||
if imgtype in OVA.VARIANTS: | ||
return OVA.OVA(**kargs) | ||
|
||
raise Exception(f"{imgtype} is not supported by this command") | ||
|
||
|
||
def artifact_cli(): | ||
""" cli implements command-line innovation """ | ||
log.basicConfig( | ||
format='[%(levelname)s]: %(message)s', | ||
level=log.INFO) | ||
|
||
targets = list(QVariants.VARIANTS.keys()) | ||
targets.extend(OVA.VARIANTS.keys()) | ||
targets.append("manual") | ||
|
||
parser = BuildCli() | ||
subparsers = parser.add_subparsers(dest="command") | ||
|
||
# Options for finding the build. | ||
parser.add_argument("--force", action='store_true', | ||
help="Force rebuild of existing disk") | ||
parser.add_argument("--compress", action='store_true', | ||
help="Compress generated image") | ||
|
||
# Support for legacy cmd-buildextend-* targets | ||
symlink = None | ||
for k in targets: | ||
if sys.argv[0].endswith(f"cmd-buildextend-{k}"): | ||
symlink = k | ||
log.info(f"CLI is a symlink for cmd-buildextend-{k}") | ||
break | ||
|
||
# Predefined mode | ||
target = subparsers.add_parser(name="target", | ||
description="manually define build") | ||
target.add_argument("target", default=None, | ||
help="name of predefined target", | ||
choices=targets) | ||
|
||
# Manual mode for developers | ||
manual = subparsers.add_parser(name="manual", | ||
description="build new disk from cli args") | ||
manual.add_argument("--image_format", required=True, | ||
help="qemu-img supported image format, i.e vpc") | ||
manual.add_argument("--image_suffix", required=True, | ||
help="file name suffix") | ||
manual.add_argument("--platform", required=True, | ||
help="Ignition platform to set image to") | ||
manual.add_argument("--convert_options", | ||
help="qemu-img options") | ||
manual.add_argument("--virtual-size", help="Virtual Size to use") | ||
|
||
args = parser.parse_args() | ||
|
||
builder = None | ||
|
||
# Figure out if the build target has been set | ||
build_target = None | ||
if "target" in args: | ||
build_target = args.target | ||
elif symlink: | ||
build_target = symlink | ||
|
||
if build_target: | ||
builder = get_builder(build_target, args.buildroot, args.build, | ||
force=args.force, compress=args.compress, schema=args.schema) | ||
elif args.command == "manual": | ||
kwargs = { | ||
'force': args.force, | ||
'image_format': args.image_format, | ||
'image_suffix': args.image_suffix, | ||
'platform': args.platform, | ||
'schema': args.schema, | ||
'virtual_size': args.virtual_size, | ||
} | ||
if args.convert_options: | ||
kwargs["convert_options"] = {'-o': f'{args.convert_options}'} | ||
|
||
builder = QVariants.QemuVariantImage(buildroot=args.buildroot, | ||
build=args.build, | ||
**kwargs) | ||
else: | ||
raise Exception("please see --help for correct invocation") | ||
|
||
return builder | ||
|
||
|
||
if __name__ == '__main__': | ||
try: | ||
artifact_cli().build_artifacts() | ||
except BuildExistsError as e: | ||
log.warning(e) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
def kubevirt_run_ore(build, args): | ||
print(""" | ||
Images are not published to KubeVirt. This command is a placeholder. | ||
""") | ||
|
||
|
||
def kubevirt_run_ore_replicate(*args, **kwargs): | ||
print(""" | ||
KubeVirt does not require regional replication. This command is a | ||
placeholder. | ||
""") | ||
|
||
|
||
def kubevirt_cli(parser): | ||
""" | ||
Extend a parser with the KubeVirt options | ||
""" | ||
return parser |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters