Compare commits
	
		
			1 Commits
		
	
	
		
			3.2
			...
			sriov_upda
		
	
	| Author | SHA256 | Date | |
|---|---|---|---|
| 6910ab6577 | 
| @@ -1,23 +0,0 @@ | |||||||
| name: Check Release Manifest Local Charts Versions |  | ||||||
| on: |  | ||||||
|   pull_request: |  | ||||||
|       branches-ignore: |  | ||||||
|       - "devel" |  | ||||||
|  |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   sync-pr-project: |  | ||||||
|     name: "Check Release Manifest Local Charts Versions" |  | ||||||
|     runs-on: tumbleweed |  | ||||||
|     steps: |  | ||||||
|         # Waiting on PR to get merged for support in upstream action/checkout action |  | ||||||
|       - uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256' |  | ||||||
|         name: Checkout repository |  | ||||||
|         with: |  | ||||||
|           object-format: 'sha256' |  | ||||||
|       - name: Setup dependencies |  | ||||||
|         run: | |  | ||||||
|           zypper in -y python3-ruamel.yaml |  | ||||||
|       - name: Check release manifest |  | ||||||
|         run: | |  | ||||||
|           python3 .obs/manifest-check.py --check |  | ||||||
| @@ -1,62 +0,0 @@ | |||||||
| name: Build PR in OBS |  | ||||||
| on: |  | ||||||
|   pull_request_target: |  | ||||||
|     types: |  | ||||||
|       - opened |  | ||||||
|       - reopened |  | ||||||
|       - synchronize |  | ||||||
|       - closed |  | ||||||
|     branches-ignore: |  | ||||||
|       - "devel" |  | ||||||
|  |  | ||||||
| concurrency: |  | ||||||
|   group: ${{ gitea.workflow }}-${{ gitea.ref }} |  | ||||||
|   cancel-in-progress: true |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   sync-pr-project: |  | ||||||
|     name: "Build PR in OBS" |  | ||||||
|     runs-on: tumbleweed |  | ||||||
|     steps: |  | ||||||
|       - name: Setup OSC |  | ||||||
|         run: | |  | ||||||
|           zypper in -y python3-jinja2 |  | ||||||
|           mkdir -p ~/.config/osc |  | ||||||
|           cat >~/.config/osc/oscrc <<'EOF' |  | ||||||
|           [general] |  | ||||||
|           apiurl = https://api.opensuse.org |  | ||||||
|  |  | ||||||
|           [https://api.opensuse.org] |  | ||||||
|           user=${{ vars.OBS_USERNAME }} |  | ||||||
|           pass=${{ secrets.OBS_PASSWORD }} |  | ||||||
|           EOF |  | ||||||
|     # Waiting on PR to get merged for support in upstream action/checkout action |  | ||||||
|       - uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256' |  | ||||||
|         name: Checkout repository |  | ||||||
|         with: |  | ||||||
|           object-format: 'sha256' |  | ||||||
|       - name: "[if PR is closed] Delete project in OBS" |  | ||||||
|         run: | |  | ||||||
|           if [ "${{ gitea.event.action }}" = "closed" ]; then |  | ||||||
|           PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')" |  | ||||||
|           osc rdelete -f -r -m "PR closed" "${PROJECT}:Staging:PR-${{ gitea.event.number }}" |  | ||||||
|           fi |  | ||||||
|       - name: "Setup PR project in OBS" |  | ||||||
|         env: |  | ||||||
|           SCM_URL: ${{ gitea.event.pull_request.head.repo.clone_url }}#${{ gitea.head_ref }} |  | ||||||
|         run: | |  | ||||||
|           if [ "${{ gitea.event.action }}" != "closed" ]; then |  | ||||||
|           PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')" |  | ||||||
|           python3 .obs/render_meta.py --pr ${{ gitea.event.number }} --scm-url "${SCM_URL}" | osc meta prj "${PROJECT}:Staging:PR-${{ gitea.event.number }}" -F - |  | ||||||
|           echo "Project created ${PROJECT}:Staging:PR-${{ gitea.event.number }}" |  | ||||||
|           echo "Follow build at: https://build.opensuse.org/project/monitor/${PROJECT}:Staging:PR-${{ gitea.event.number }}" |  | ||||||
|           fi |  | ||||||
|       - env: |  | ||||||
|           GIT_SHA: ${{ gitea.event.pull_request.head.sha }} |  | ||||||
|         name: "Wait for OBS to build the project" |  | ||||||
|         run: | |  | ||||||
|           if [ "${{ gitea.event.action }}" != "closed" ]; then |  | ||||||
|           PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')" |  | ||||||
|           export OBS_PROJECT="${PROJECT}:Staging:PR-${{ gitea.event.number }}" |  | ||||||
|           python3 .obs/wait_obs.py |  | ||||||
|           fi |  | ||||||
| @@ -1,35 +0,0 @@ | |||||||
| name: Synchronize Project Config |  | ||||||
| on: |  | ||||||
|   push: |  | ||||||
|     branches-ignore: |  | ||||||
|       - "devel" |  | ||||||
|     paths: |  | ||||||
|       - "_config" |  | ||||||
|       - ".gitea/workflows/sync_config.yaml" |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   sync-prjconf: |  | ||||||
|     name: "Update prjconf in OBS" |  | ||||||
|     runs-on: tumbleweed |  | ||||||
|     steps: |  | ||||||
|       - name: Setup OSC |  | ||||||
|         run: | |  | ||||||
|           mkdir -p ~/.config/osc |  | ||||||
|           cat >~/.config/osc/oscrc <<'EOF' |  | ||||||
|           [general] |  | ||||||
|           apiurl = https://api.opensuse.org |  | ||||||
|  |  | ||||||
|           [https://api.opensuse.org] |  | ||||||
|           user=${{ vars.OBS_USERNAME }} |  | ||||||
|           pass=${{ secrets.OBS_PASSWORD }} |  | ||||||
|           EOF |  | ||||||
|     # Waiting on PR to get merged for support in upstream action/checkout action |  | ||||||
|       - uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256' |  | ||||||
|         name: Checkout repository |  | ||||||
|         with: |  | ||||||
|           object-format: 'sha256' |  | ||||||
|       - run: | |  | ||||||
|           PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')" |  | ||||||
|           if [ "$(osc meta prjconf "${PROJECT}" | sha256sum)" != "$(cat _config | sha256sum)" ] ; then |  | ||||||
|             osc meta prjconf "${PROJECT}" -F _config |  | ||||||
|           fi |  | ||||||
| @@ -1,45 +0,0 @@ | |||||||
| name: Synchronize Project Metadata |  | ||||||
| on: |  | ||||||
|   push: |  | ||||||
|     branches-ignore: |  | ||||||
|       - "devel" |  | ||||||
|     paths: |  | ||||||
|       - "*" # Will trigger on new directories and changes to files in root of repository |  | ||||||
|       - ".gitea/workflows/sync_meta.yaml" |  | ||||||
|       - ".obs/common.py" |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   sync-prj-meta: |  | ||||||
|     runs-on: tumbleweed |  | ||||||
|     steps: |  | ||||||
|       - name: Setup OSC |  | ||||||
|         run: | |  | ||||||
|           zypper in -y python3-jinja2 |  | ||||||
|           mkdir -p ~/.config/osc |  | ||||||
|           cat >~/.config/osc/oscrc <<'EOF' |  | ||||||
|           [general] |  | ||||||
|           apiurl = https://api.opensuse.org |  | ||||||
|  |  | ||||||
|           [https://api.opensuse.org] |  | ||||||
|           user=${{ vars.OBS_USERNAME }} |  | ||||||
|           pass=${{ secrets.OBS_PASSWORD }} |  | ||||||
|           EOF |  | ||||||
|     # Waiting on PR to get merged for support in upstream action/checkout action |  | ||||||
|       - uses: 'https://github.com/yangskyboxlabs/action-checkout@sha256' |  | ||||||
|         name: Checkout repository |  | ||||||
|         with: |  | ||||||
|           object-format: 'sha256' |  | ||||||
|       - name: "Update or create OBS Project" |  | ||||||
|         run: | |  | ||||||
|           PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')" |  | ||||||
|           set -o pipefail |  | ||||||
|           if meta="$(osc meta prj "${PROJECT}" 2>/dev/null | sha256sum)"; then |  | ||||||
|             new_meta="$(python3 .obs/render_meta.py)" |  | ||||||
|             if [ "${meta}" != "$(echo "${new_meta}" | sha256sum)" ]; then |  | ||||||
|               echo "${new_meta}" | osc meta prj "${PROJECT}" -F - |  | ||||||
|             fi |  | ||||||
|             python3 .obs/sync_packages.py |  | ||||||
|           else |  | ||||||
|             # Create the projects |  | ||||||
|             bash .obs/create_projects.sh |  | ||||||
|           fi |  | ||||||
| @@ -1,4 +1,5 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
|  | import yaml | ||||||
| import subprocess | import subprocess | ||||||
| import argparse | import argparse | ||||||
| import os | import os | ||||||
| @@ -6,6 +7,30 @@ import os.path | |||||||
|  |  | ||||||
| from common import PROJECT, REPOSITORY, BRANCH | from common import PROJECT, REPOSITORY, BRANCH | ||||||
|  |  | ||||||
|  | def add_package_to_workflow(name: str): | ||||||
|  |     modified = False | ||||||
|  |     with open(".obs/workflows.yml", "r") as wf_file: | ||||||
|  |         workflows = yaml.safe_load(wf_file) | ||||||
|  |     if not any( | ||||||
|  |         x | ||||||
|  |         for x in workflows["staging_build"]["steps"] | ||||||
|  |         if x["branch_package"]["source_package"] == name | ||||||
|  |     ): | ||||||
|  |         workflows["staging_build"]["steps"].append( | ||||||
|  |             { | ||||||
|  |                 "branch_package": { | ||||||
|  |                     "source_project": PROJECT, | ||||||
|  |                     "target_project": f"{PROJECT}:Staging", | ||||||
|  |                     "source_package": name, | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         ) | ||||||
|  |         modified = True | ||||||
|  |     if modified: | ||||||
|  |         with open(".obs/workflows.yml", "w") as wf_file: | ||||||
|  |             yaml.dump(workflows, wf_file) | ||||||
|  |  | ||||||
|  |  | ||||||
| def add_package_to_project(name: str): | def add_package_to_project(name: str): | ||||||
|     package_meta = f"""<package name="{name}" project="{PROJECT}"> |     package_meta = f"""<package name="{name}" project="{PROJECT}"> | ||||||
|   <title/> |   <title/> | ||||||
| @@ -28,6 +53,7 @@ def add_package(package_name: str): | |||||||
|         os.exit(1) |         os.exit(1) | ||||||
|  |  | ||||||
|     add_package_to_project(package_name) |     add_package_to_project(package_name) | ||||||
|  |     add_package_to_workflow(package_name) | ||||||
|  |  | ||||||
|  |  | ||||||
| def main(): | def main(): | ||||||
| @@ -39,7 +65,7 @@ def main(): | |||||||
|     add_package(args.package) |     add_package(args.package) | ||||||
|      |      | ||||||
|  |  | ||||||
|     print("Package created in OBS !") |     print("Package created in OBS, you can now push the modified workflow file") | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|   | |||||||
| @@ -1,3 +1,3 @@ | |||||||
| PROJECT = "isv:SUSE:Edge:3.2" | PROJECT = "isv:SUSE:Edge:Factory" | ||||||
| REPOSITORY = "https://src.opensuse.org/suse-edge/Factory" | REPOSITORY = "https://src.opensuse.org/suse-edge/Factory" | ||||||
| BRANCH = "3.2" | BRANCH = "main" | ||||||
|   | |||||||
| @@ -1,37 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| show_help() { |  | ||||||
|     echo "Usage: $(basename $0) [--internal]" |  | ||||||
|     echo "options:" |  | ||||||
|     echo "-h, --help       display this help and exit" |  | ||||||
|     echo "-i, --internal   create project as internal" |  | ||||||
|     exit 0 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| while [[ "$#" -gt 0 ]]; do |  | ||||||
|     case $1 in |  | ||||||
|         -h|--help) show_help;; |  | ||||||
|         -i|--internal) internal="--internal" ;; |  | ||||||
|         *) echo "Unknown parameter passed: $1";show_help ;; |  | ||||||
|     esac |  | ||||||
|     shift |  | ||||||
| done |  | ||||||
|  |  | ||||||
| PROJECT="$(grep PROJECT .obs/common.py | sed 's/PROJECT = "\(.*\)"/\1/')" |  | ||||||
| EXTRA_OSC_ARGS="" |  | ||||||
| if [ -n "$internal" ]; then |  | ||||||
|     PROJECT="ISV${PROJECT:3}" |  | ||||||
|     EXTRA_OSC_ARGS="-A https://api.suse.de" |  | ||||||
|  |  | ||||||
|     python3 .obs/render_meta.py ${internal} Snapshot | osc ${EXTRA_OSC_ARGS} meta prj "${PROJECT}:Snapshot" -F - |  | ||||||
|     osc ${EXTRA_OSC_ARGS} meta prjconf "${PROJECT}:Snapshot" -F _config |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| python3 .obs/render_meta.py ${internal} ToTest | osc ${EXTRA_OSC_ARGS} meta prj "${PROJECT}:ToTest" -F - |  | ||||||
| python3 .obs/render_meta.py ${internal} | osc ${EXTRA_OSC_ARGS} meta prj "${PROJECT}" -F - |  | ||||||
| osc ${EXTRA_OSC_ARGS} meta prjconf "${PROJECT}:ToTest" -F _config |  | ||||||
| osc ${EXTRA_OSC_ARGS} meta prjconf "${PROJECT}" -F _config |  | ||||||
|  |  | ||||||
| if [ -z "$internal" ]; then |  | ||||||
|     python3 .obs/sync_packages.py |  | ||||||
| fi |  | ||||||
| @@ -1,4 +1,5 @@ | |||||||
| #!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||||
|  | import yaml | ||||||
| import subprocess | import subprocess | ||||||
| import argparse | import argparse | ||||||
| import os | import os | ||||||
| @@ -7,6 +8,18 @@ import os.path | |||||||
| from common import PROJECT | from common import PROJECT | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def delete_package_from_workflow(name: str): | ||||||
|  |     with open(".obs/workflows.yml", "r") as wf_file: | ||||||
|  |         workflows = yaml.safe_load(wf_file) | ||||||
|  |     workflows["staging_build"]["steps"] = [ | ||||||
|  |         x | ||||||
|  |         for x in workflows["staging_build"]["steps"] | ||||||
|  |         if x["branch_package"]["source_package"] != name | ||||||
|  |     ] | ||||||
|  |     with open(".obs/workflows.yml", "w") as wf_file: | ||||||
|  |         yaml.dump(workflows, wf_file) | ||||||
|  |  | ||||||
|  |  | ||||||
| def delete_package_from_project(name: str): | def delete_package_from_project(name: str): | ||||||
|     p = subprocess.run(["osc", "rdelete", PROJECT, name, "-m \"Deleted via delete_package.py\"" ], stdout=subprocess.PIPE) |     p = subprocess.run(["osc", "rdelete", PROJECT, name, "-m \"Deleted via delete_package.py\"" ], stdout=subprocess.PIPE) | ||||||
|     print(p.stdout) |     print(p.stdout) | ||||||
| @@ -20,6 +33,7 @@ def delete_package(package_name: str): | |||||||
|         os.exit(1) |         os.exit(1) | ||||||
|  |  | ||||||
|     delete_package_from_project(package_name) |     delete_package_from_project(package_name) | ||||||
|  |     delete_package_from_workflow(package_name) | ||||||
|  |  | ||||||
|  |  | ||||||
| def main(): | def main(): | ||||||
|   | |||||||
| @@ -1,84 +0,0 @@ | |||||||
| #!/usr/bin/python3 |  | ||||||
|  |  | ||||||
| import ruamel.yaml |  | ||||||
| import pathlib |  | ||||||
| import argparse |  | ||||||
| import sys |  | ||||||
|  |  | ||||||
| yaml = ruamel.yaml.YAML() |  | ||||||
|  |  | ||||||
| def get_chart_version(chart_name: str) -> str: |  | ||||||
|     with open(f"./{chart_name}/Chart.yaml") as f: |  | ||||||
|         chart = yaml.load(f) |  | ||||||
|         return chart["version"] |  | ||||||
|  |  | ||||||
| def get_charts(chart): |  | ||||||
|     if not chart["chart"].startswith("%%CHART_REPO%%"): |  | ||||||
|         # Not a locally managed chart |  | ||||||
|         return {} |  | ||||||
|  |  | ||||||
|     chart_name = chart["chart"][len("%%CHART_REPO%%/%%IMG_PREFIX%%"):] |  | ||||||
|     charts = { chart_name: chart["version"] } |  | ||||||
|     for child_chart in chart.get("dependencyCharts", []) + chart.get("addonCharts", []): |  | ||||||
|         charts.update(get_charts(child_chart)) |  | ||||||
|     return charts |  | ||||||
|  |  | ||||||
| def get_charts_list(): |  | ||||||
|     with open("./release-manifest-image/release_manifest.yaml") as f: |  | ||||||
|         manifest = yaml.load(f) |  | ||||||
|     charts = {} |  | ||||||
|     for chart in manifest["spec"]["components"]["workloads"]["helm"]: |  | ||||||
|         charts.update(get_charts(chart)) |  | ||||||
|     return charts |  | ||||||
|  |  | ||||||
| def check_charts(fix: bool) -> bool: |  | ||||||
|     success = True |  | ||||||
|     charts = get_charts_list() |  | ||||||
|     to_fix = {} |  | ||||||
|     for chart in charts: |  | ||||||
|         expected_version = get_chart_version(chart) |  | ||||||
|         if expected_version != charts[chart]: |  | ||||||
|             success = False |  | ||||||
|             to_fix[f'%%CHART_REPO%%/%%IMG_PREFIX%%{chart}'] = expected_version |  | ||||||
|             print(f"{chart}: Expected: {expected_version}, Got: {charts[chart]}") |  | ||||||
|     if fix and not success: |  | ||||||
|         fix_charts(to_fix) |  | ||||||
|         return True |  | ||||||
|     return success |  | ||||||
|  |  | ||||||
| def fix_charts(to_fix): |  | ||||||
|     manifest_path = pathlib.Path("./release-manifest-image/release_manifest.yaml") |  | ||||||
|     manifest = yaml.load(manifest_path) |  | ||||||
|     yaml.indent(mapping=2, sequence=4, offset=2) |  | ||||||
|     yaml.width = 4096 |  | ||||||
|     for chart_index, chart in enumerate(manifest["spec"]["components"]["workloads"]["helm"]): |  | ||||||
|         changed = False |  | ||||||
|         if chart["chart"] in to_fix.keys(): |  | ||||||
|             changed = True |  | ||||||
|             chart["version"] = to_fix[chart["chart"]] |  | ||||||
|         for subchart_index, subchart in enumerate(chart.get("addonCharts", [])): |  | ||||||
|             if subchart["chart"] in to_fix.keys(): |  | ||||||
|                 changed = True |  | ||||||
|                 subchart["version"] = to_fix[subchart["chart"]] |  | ||||||
|                 chart["addonCharts"][subchart_index] = subchart |  | ||||||
|         for subchart_index, subchart in enumerate(chart.get("dependencyCharts", [])): |  | ||||||
|             if subchart["chart"] in to_fix.keys(): |  | ||||||
|                 changed = True |  | ||||||
|                 subchart["version"] = to_fix[subchart["chart"]] |  | ||||||
|                 chart["dependencyCharts"][subchart_index] = subchart |  | ||||||
|         if changed: |  | ||||||
|             manifest["spec"]["components"]["workloads"]["helm"][chart_index] = chart |  | ||||||
|     yaml.dump(manifest, manifest_path) |  | ||||||
|  |  | ||||||
| def main(): |  | ||||||
|     print("Checking charts versions in release manifest") |  | ||||||
|     parser = argparse.ArgumentParser() |  | ||||||
|     parser.add_argument('-c', '--check', action='store_true') |  | ||||||
|     args = parser.parse_args() |  | ||||||
|     if not check_charts(not args.check): |  | ||||||
|         sys.exit(1) |  | ||||||
|     else: |  | ||||||
|         print("All local charts in release manifest are using the right version") |  | ||||||
|  |  | ||||||
| if __name__ == "__main__": |  | ||||||
|     main() |  | ||||||
| @@ -1,62 +0,0 @@ | |||||||
| import argparse |  | ||||||
|  |  | ||||||
| from jinja2 import Template |  | ||||||
| from common import PROJECT |  | ||||||
|  |  | ||||||
| def render(base_project, subproject, internal, scm_url=None): |  | ||||||
|     version = base_project.rsplit(':', 1)[-1] |  | ||||||
|     context = { |  | ||||||
|         "base_project": subproject == "", |  | ||||||
|         "title": f"SUSE Edge {version} {subproject}".rstrip(), |  | ||||||
|     } |  | ||||||
|     if subproject == "ToTest": |  | ||||||
|         context["project"] = f"{base_project}:ToTest" |  | ||||||
|         context["description"] = ( |  | ||||||
|             f"This project doesn't build, it stores a snapshot of SUSE Edge {version} " |  | ||||||
|             "project currently going through the automated test layer" |  | ||||||
|         ) |  | ||||||
|         if "Factory" in base_project or internal: |  | ||||||
|             context["release_project"] = f"{base_project}:Snapshot" |  | ||||||
|     elif subproject == "Snapshot": |  | ||||||
|         context["project"] = f"{base_project}:Snapshot" |  | ||||||
|         context["release_project"] = f"{base_project.rsplit(':', 1)[0]}:Containers" |  | ||||||
|         context["for_release"] = True |  | ||||||
|         context["description"] = ( |  | ||||||
|             f"This project doesn't build, it stores a snapshot of SUSE Edge {version} " |  | ||||||
|             "project that passed automated test layer" |  | ||||||
|         ) |  | ||||||
|     elif subproject == "": |  | ||||||
|         context["project"] = base_project |  | ||||||
|         context["release_project"] = f"{base_project}:ToTest" |  | ||||||
|     else: # PR case direct python call |  | ||||||
|         context["base_project"] = True |  | ||||||
|         context["project"] = f"{base_project}:{subproject}" |  | ||||||
|         if scm_url is not None: |  | ||||||
|             context["scm_url"] = scm_url |  | ||||||
|  |  | ||||||
|     with open("_meta") as meta: |  | ||||||
|         template = Template(meta.read()) |  | ||||||
|     return template.render(context) |  | ||||||
|  |  | ||||||
| def main(): |  | ||||||
|     parser = argparse.ArgumentParser( |  | ||||||
|                     prog='ProgramName', |  | ||||||
|                     description='What the program does', |  | ||||||
|                     epilog='Text at the bottom of help') |  | ||||||
|     parser.add_argument("subproject", default="", choices=["", "ToTest", "Snapshot"], nargs="?") |  | ||||||
|     parser.add_argument("--internal", action="store_true") |  | ||||||
|     parser.add_argument("--pr") |  | ||||||
|     parser.add_argument("--scm-url") |  | ||||||
|     args = parser.parse_args() |  | ||||||
|     base_project = PROJECT.replace("isv", "ISV", 1) if args.internal else PROJECT |  | ||||||
|  |  | ||||||
|     print(render( |  | ||||||
|         base_project=base_project, |  | ||||||
|         subproject=args.subproject if args.pr is None else f"Staging:PR-{args.pr}", |  | ||||||
|         internal=args.internal, |  | ||||||
|         scm_url=args.scm_url, |  | ||||||
|     )) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == "__main__": |  | ||||||
|     main() |  | ||||||
| @@ -9,7 +9,7 @@ from common import PROJECT | |||||||
|  |  | ||||||
| def get_obs_packages() -> Set[str]: | def get_obs_packages() -> Set[str]: | ||||||
|     packages = subprocess.run(["osc", "ls", PROJECT], encoding='utf-8' , capture_output=True) |     packages = subprocess.run(["osc", "ls", PROJECT], encoding='utf-8' , capture_output=True) | ||||||
|     return { p for p in packages.stdout.splitlines() if ":" not in p } |     return set(packages.stdout.splitlines()) | ||||||
|  |  | ||||||
| def get_local_packages() -> Set[str]: | def get_local_packages() -> Set[str]: | ||||||
|     p = pathlib.Path('.') |     p = pathlib.Path('.') | ||||||
|   | |||||||
| @@ -1,83 +0,0 @@ | |||||||
| import xml.etree.ElementTree as ET |  | ||||||
| import subprocess |  | ||||||
| import time |  | ||||||
| import os |  | ||||||
| import sys |  | ||||||
|  |  | ||||||
| from collections import Counter |  | ||||||
|  |  | ||||||
| def get_buildstatus(project: str) -> ET.Element: |  | ||||||
|     for _ in range(5): |  | ||||||
|         try: |  | ||||||
|             output = subprocess.check_output(["osc", "pr", "--xml", project]) |  | ||||||
|             return ET.fromstring(output) |  | ||||||
|         except subprocess.CalledProcessError: |  | ||||||
|             continue |  | ||||||
|     print("Failed to get buildstatus from OBS") |  | ||||||
|  |  | ||||||
| def do_wait(project:str, commit:str) -> ET.Element: |  | ||||||
|     last_state = None |  | ||||||
|     while True: |  | ||||||
|         time.sleep(5) |  | ||||||
|         status = get_buildstatus(project) |  | ||||||
|         if last_state == status.get("state"): |  | ||||||
|             continue |  | ||||||
|         else: |  | ||||||
|             last_state = status.get("state") |  | ||||||
|  |  | ||||||
|         scminfo = { e.text for e in status.findall(".//scminfo") } |  | ||||||
|         if len(scminfo) != 1 or scminfo.pop() != commit: |  | ||||||
|             print("Waiting for OBS to sync with SCM") |  | ||||||
|             continue |  | ||||||
|  |  | ||||||
|         if not all([ e.get('state') == "published" and e.get('dirty') is None for e in status.findall("./result")]): |  | ||||||
|             print("Waiting for OBS to finish building") |  | ||||||
|             continue |  | ||||||
|  |  | ||||||
|         return status |  | ||||||
|          |  | ||||||
| def print_results(status: ET.Element) -> bool: |  | ||||||
|     results = {} |  | ||||||
|     failed = [] |  | ||||||
|     for e in status.findall("./result"): |  | ||||||
|         repo = results.get(e.get("repository"), {}) |  | ||||||
|         repo[e.get("arch")] = e |  | ||||||
|         results[e.get("repository")] = repo |  | ||||||
|      |  | ||||||
|     for repo in results.keys(): |  | ||||||
|         print(f"{repo}:") |  | ||||||
|         depth=1 |  | ||||||
|         for arch in results[repo].keys(): |  | ||||||
|             counts = Counter() |  | ||||||
|             if repo != "charts": |  | ||||||
|                 print(f"\t{arch}:") |  | ||||||
|                 depth=2 |  | ||||||
|             for package in results[repo][arch].findall("./status"): |  | ||||||
|                 if package.get("code") in ["excluded", "disabled"]: |  | ||||||
|                     continue |  | ||||||
|                 if package.get("code") in ["failed", "unresolvable", "broken"]: |  | ||||||
|                     details = package.findtext("details") |  | ||||||
|                     if details: |  | ||||||
|                         failed.append(f"{package.get('package')} ({arch}): {details}") |  | ||||||
|                     else: |  | ||||||
|                         failed.append(f"{package.get('package')} ({arch})") |  | ||||||
|                 counts[package.get("code")] += 1 |  | ||||||
|             for (code, count) in counts.items(): |  | ||||||
|                 print("\t"*depth, f"{code}: {count}") |  | ||||||
|      |  | ||||||
|     failed.sort() |  | ||||||
|     if failed: |  | ||||||
|         print("\nPackages failing: ") |  | ||||||
|     for fail in failed: |  | ||||||
|         print("\t", fail) |  | ||||||
|     return len(failed) |  | ||||||
|  |  | ||||||
| def main(): |  | ||||||
|     project = os.environ.get("OBS_PROJECT") |  | ||||||
|     sha = os.environ.get("GIT_SHA") |  | ||||||
|     print(f"Waiting for OBS to build {project} for commit {sha}") |  | ||||||
|     status = do_wait(project, sha) |  | ||||||
|     sys.exit(print_results(status)) |  | ||||||
|  |  | ||||||
| if __name__ == "__main__": |  | ||||||
|     main() |  | ||||||
							
								
								
									
										212
									
								
								.obs/workflows.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										212
									
								
								.obs/workflows.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,212 @@ | |||||||
|  | staging_build: | ||||||
|  |   filters: | ||||||
|  |     event: pull_request | ||||||
|  |   steps: | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: endpoint-copier-operator | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: endpoint-copier-operator-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: endpoint-copier-operator-chart | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: akri | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: akri-agent-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: akri-chart | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: akri-controller-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: akri-dashboard-extension-chart | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: akri-debug-echo-discovery-handler-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: akri-onvif-discovery-handler-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: akri-opcua-discovery-handler-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: akri-udev-discovery-handler-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: akri-webhook-configuration-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: obs-service-set_version | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: cosign | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: frr-k8s | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: kubectl | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: upgrade-controller | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: nm-configurator | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: kube-rbac-proxy | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: edge-image-builder | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: metallb | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: hauler | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: ip-address-manager | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: baremetal-operator | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: cluster-api-provider-metal3 | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: cdi-chart | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: cluster-api-provider-metal3-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: metallb-chart | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: sriov-crd-chart | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: upgrade-controller-chart | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: edge-image-builder-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: ironic-ipa-downloader-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: upgrade-controller-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: metal3-chart | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: baremetal-operator-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: sriov-network-operator-chart | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: metallb-controller-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: ip-address-manager-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: metallb-speaker-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: ironic-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: cri-tools | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: crudini | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: fakeroot | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: ipcalc | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: autoconf | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: rancher-turtles-airgap-resources-chart | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: rancher-turtles-chart | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: kube-rbac-proxy-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: ironic-ipa-ramdisk | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: kubevirt-dashboard-extension-chart | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
|  |   - branch_package: | ||||||
|  |       source_package: kiwi-builder-image | ||||||
|  |       source_project: isv:SUSE:Edge:Factory | ||||||
|  |       target_project: isv:SUSE:Edge:Factory:Staging | ||||||
| @@ -1,10 +0,0 @@ | |||||||
| repos: |  | ||||||
|   - repo: local |  | ||||||
|     hooks: |  | ||||||
|       - id: check-manifest |  | ||||||
|         name: "Check release-manifest" |  | ||||||
|         entry: python3 .obs/manifest-check.py |  | ||||||
|         language: python |  | ||||||
|         additional_dependencies: ['ruamel.yaml'] |  | ||||||
|         pass_filenames: false |  | ||||||
|         always_run: true |  | ||||||
							
								
								
									
										15
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								README.md
									
									
									
									
									
								
							| @@ -5,6 +5,15 @@ Contains the definition of the packages built on OBS for the SUSE Edge Solution | |||||||
| This repository is linked to an OBS project: <https://build.opensuse.org/project/show/isv:SUSE:Edge:Factory> | This repository is linked to an OBS project: <https://build.opensuse.org/project/show/isv:SUSE:Edge:Factory> | ||||||
| Every directory in this repository represents a package in that OBS project, those should be synced automatically from this repository. | Every directory in this repository represents a package in that OBS project, those should be synced automatically from this repository. | ||||||
|  |  | ||||||
|  | ## Adding a package | ||||||
|  |  | ||||||
|  | To add a package, first create a directory with your package as you intend it in OBS. | ||||||
|  |  | ||||||
|  | Then run the `.obs/add_package.py` script to create the package in the OBS project and add the required elements to the synchronization workflow. | ||||||
|  | This script is using the `osc` command behind the scenes, so ensure you have it installed and correctly configured, as well as you have the correct permissions to create a new package in the project. | ||||||
|  |  | ||||||
|  | You will then get asked to push your changes. | ||||||
|  |  | ||||||
| ## Testing a fork or a development branch | ## Testing a fork or a development branch | ||||||
|  |  | ||||||
| You can create a project in your home space in OBS, use the same prjconf as the one of "isv:SUSE:Edge:Factory", and copy the repositories part of the metadata (adjust self references). | You can create a project in your home space in OBS, use the same prjconf as the one of "isv:SUSE:Edge:Factory", and copy the repositories part of the metadata (adjust self references). | ||||||
| @@ -14,14 +23,16 @@ Then add a scmsync stanza to your metadata like this (adjust repository path and | |||||||
| <scmsync>https://src.opensuse.org/suse-edge/Factory#main</scmsync> | <scmsync>https://src.opensuse.org/suse-edge/Factory#main</scmsync> | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| This is done automatically for any PR filed against this repository. |  | ||||||
|  |  | ||||||
| ## Cutting a release version branch | ## Cutting a release version branch | ||||||
|  |  | ||||||
| 1. Do the appropriate git branch command | 1. Do the appropriate git branch command | ||||||
| 2. Change the project path in `.obs/common.py` file (e.g. from `isv:SUSE:Edge:Factory` to `isv:SUSE:Edge:3.2`) | 2. Change the project path in `.obs/common.py` file (e.g. from `isv:SUSE:Edge:Factory` to `isv:SUSE:Edge:3.2`) | ||||||
| 3. Change the branch reference in `.obs/common.py` file (e.g. from `main` to `3.2`) | 3. Change the branch reference in `.obs/common.py` file (e.g. from `main` to `3.2`) | ||||||
|  | 4. Edit the `.obs/workflows.yml` file to change the references to the correct projects | ||||||
| 5. Commit those changes to the new branch and push the new branch | 5. Commit those changes to the new branch and push the new branch | ||||||
|  | 6. Create the base and to-test projects (e.g. `isv:SUSE:Edge:3.2` and `isv:SUSE:Edge:3.2:ToTest`), use the `isv:SUSE:Edge:Factory` projects as example for metadata part | ||||||
|  | 7. Use the prjconf of Factory in all those projects | ||||||
|  | 8. Run the `.obs/sync_packages.py` script to create all the packages in the base project | ||||||
| 9. Go take a few cups of coffee/tea/mate/... while waiting for OBS to build everything | 9. Go take a few cups of coffee/tea/mate/... while waiting for OBS to build everything | ||||||
| 10. Once built do an `osc release` of the project for it to be copied over in the `ToTest` section | 10. Once built do an `osc release` of the project for it to be copied over in the `ToTest` section | ||||||
| 11. Hand over to QA to test whatever is in `ToTest`. (You can continue to work on the base branch if needed meanwhile) | 11. Hand over to QA to test whatever is in `ToTest`. (You can continue to work on the base branch if needed meanwhile) | ||||||
|   | |||||||
							
								
								
									
										155
									
								
								_config
									
									
									
									
									
								
							
							
						
						
									
										155
									
								
								_config
									
									
									
									
									
								
							| @@ -1,155 +0,0 @@ | |||||||
| Prefer: -libqpid-proton10 -python311-urllib3_1 |  | ||||||
|  |  | ||||||
| Macros: |  | ||||||
| %__python3 /usr/bin/python3.11 |  | ||||||
| %registry_url %(echo %{vendor} | cut -d '/' -f 3 | sed 's/build/registry/') |  | ||||||
| :Macros |  | ||||||
|  |  | ||||||
| %if "%{sub %{lower %_project} 1 14}" != "isv:suse:edge:" || "%{sub %_project 15 21}" == "Factory" |  | ||||||
|     # Here we are in Factory like project so set chart major version to 999 |  | ||||||
| Macros: |  | ||||||
| %chart_major 999 |  | ||||||
| :Macros |  | ||||||
| %else |  | ||||||
|     # Here we are in version branch, so set the image prefix and chart major accordingly |  | ||||||
| Macros: |  | ||||||
| %project_branch %(echo %{_project} | cut -d ':' -f 4) |  | ||||||
| %img_prefix %{project_branch}/ |  | ||||||
| %chart_major %(echo %{project_branch} | awk '{split($1,a,"."); print a[1]*100 + a[2]}') |  | ||||||
| :Macros |  | ||||||
| %endif |  | ||||||
|  |  | ||||||
| %if %{sub %_project 1 3} == ISV |  | ||||||
| Macros: |  | ||||||
| %img_repo registry.suse.com/edge |  | ||||||
| %chart_repo oci://registry.suse.com/edge |  | ||||||
| %manifest_repo registry.suse.com/edge |  | ||||||
| %support_level l3 |  | ||||||
| :Macros |  | ||||||
| %else |  | ||||||
| Macros: |  | ||||||
| %img_repo registry.opensuse.org/isv/suse/edge/containers/images |  | ||||||
| %manifest_repo registry.opensuse.org/isv/suse/edge/containers/images |  | ||||||
| %chart_repo oci://registry.opensuse.org/isv/suse/edge/containers/charts |  | ||||||
| %support_level techpreview |  | ||||||
| :Macros |  | ||||||
| %endif |  | ||||||
|  |  | ||||||
| %if "%_repository" == "charts" || "%_repository" == "test_manifest_images" |  | ||||||
| Macros: |  | ||||||
| %img_repo %(echo %{registry_url}:%{_project}:images | tr ":" "/" | tr '[:upper:]' '[:lower:]') |  | ||||||
| %manifest_repo %(echo %{registry_url}:%{_project}:test_manifest_images | tr ":" "/" | tr '[:upper:]' '[:lower:]') |  | ||||||
| %chart_repo oci://%(echo %{registry_url}:%{_project}:charts | tr ":" "/" | tr '[:upper:]' '[:lower:]') |  | ||||||
| :Macros |  | ||||||
| %endif |  | ||||||
|  |  | ||||||
| # Missing deps for testsuite |  | ||||||
| BuildFlags: excludebuild:autoconf:el |  | ||||||
| BuildFlags: excludebuild:autoconf:testsuite |  | ||||||
|  |  | ||||||
| # Only build manifest embedding images here |  | ||||||
| %if "%_repository" == "test_manifest_images" |  | ||||||
| BuildFlags: onlybuild:edge-image-builder-image |  | ||||||
| BuildFlags: onlybuild:release-manifest-image |  | ||||||
|   # Exclude the images selected by the following section |  | ||||||
|   # as the standard repository is a dependency |  | ||||||
|   %ifarch aarch64 |  | ||||||
|     BuildFlags: excludebuild:baremetal-operator-image |  | ||||||
|     BuildFlags: excludebuild:endpoint-copier-operator-image |  | ||||||
|     BuildFlags: excludebuild:ironic-image |  | ||||||
|     BuildFlags: excludebuild:ironic-ipa-downloader-image |  | ||||||
|     BuildFlags: excludebuild:kube-rbac-proxy-image |  | ||||||
|     BuildFlags: excludebuild:metallb-controller-image |  | ||||||
|     BuildFlags: excludebuild:metallb-speaker-image |  | ||||||
|   %endif |  | ||||||
| %else |  | ||||||
| # Only a subset of stack is arm64 ready |  | ||||||
|   %ifarch aarch64 |  | ||||||
|     BuildFlags: onlybuild:autoconf |  | ||||||
|     BuildFlags: onlybuild:baremetal-operator |  | ||||||
|     BuildFlags: onlybuild:baremetal-operator-image |  | ||||||
|     BuildFlags: onlybuild:ca-certificates-suse |  | ||||||
|     BuildFlags: onlybuild:cosign |  | ||||||
|     BuildFlags: onlybuild:crudini |  | ||||||
|     BuildFlags: onlybuild:edge-image-builder |  | ||||||
|     BuildFlags: onlybuild:edge-image-builder-image |  | ||||||
|     BuildFlags: onlybuild:endpoint-copier-operator |  | ||||||
|     BuildFlags: onlybuild:endpoint-copier-operator-image |  | ||||||
|     BuildFlags: onlybuild:fakeroot |  | ||||||
|     BuildFlags: onlybuild:hauler |  | ||||||
|     BuildFlags: onlybuild:ipcalc |  | ||||||
|     BuildFlags: onlybuild:ironic-image |  | ||||||
|     BuildFlags: onlybuild:ironic-ipa-downloader-image |  | ||||||
|     BuildFlags: onlybuild:ironic-ipa-ramdisk |  | ||||||
|     BuildFlags: onlybuild:kube-rbac-proxy |  | ||||||
|     BuildFlags: onlybuild:kube-rbac-proxy-image |  | ||||||
|     BuildFlags: onlybuild:metallb |  | ||||||
|     BuildFlags: onlybuild:metallb-controller-image |  | ||||||
|     BuildFlags: onlybuild:metallb-speaker-image |  | ||||||
|     BuildFlags: onlybuild:nm-configurator |  | ||||||
|   %endif |  | ||||||
| %endif |  | ||||||
|  |  | ||||||
| %if "%_repository" == "images" || "%_repository" == "test_manifest_images" |  | ||||||
|     Prefer: container:sles15-image |  | ||||||
|     Type: docker |  | ||||||
|     Repotype: none |  | ||||||
|     Patterntype: none |  | ||||||
|     BuildEngine: podman |  | ||||||
|     Prefer: sles-release |  | ||||||
|     BuildFlags: dockerarg:SLE_VERSION=15.6 |  | ||||||
|  |  | ||||||
|     # Publish multi-arch container images only once all archs have been built |  | ||||||
|     PublishFlags: archsync |  | ||||||
| %endif |  | ||||||
|  |  | ||||||
| %if "%_repository" == "images_6.0" |  | ||||||
|     Prefer: container:sles15-image |  | ||||||
|     Type: docker |  | ||||||
|     BuildEngine: podman |  | ||||||
|     Repotype: none |  | ||||||
|     Patterntype: none |  | ||||||
|     BuildFlags: dockerarg:SLE_VERSION=16.0 |  | ||||||
|     BuildFlags: onlybuild:kiwi-builder-image |  | ||||||
|  |  | ||||||
|     # Publish multi-arch container images only once all archs have been built |  | ||||||
|     PublishFlags: archsync |  | ||||||
|  |  | ||||||
|     # Exclude the images selected by the aarch64 section |  | ||||||
|     %ifarch aarch64 |  | ||||||
|       BuildFlags: excludebuild:baremetal-operator-image |  | ||||||
|       BuildFlags: excludebuild:edge-image-builder-image |  | ||||||
|       BuildFlags: excludebuild:endpoint-copier-operator-image |  | ||||||
|       BuildFlags: excludebuild:ironic-image |  | ||||||
|       BuildFlags: excludebuild:ironic-ipa-downloader-image |  | ||||||
|       BuildFlags: excludebuild:kube-rbac-proxy-image |  | ||||||
|       BuildFlags: excludebuild:metallb-controller-image |  | ||||||
|       BuildFlags: excludebuild:metallb-speaker-image |  | ||||||
|     %endif |  | ||||||
|  |  | ||||||
| %else |  | ||||||
|     BuildFlags: excludebuild:kiwi-builder-image |  | ||||||
| %endif |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| %if "%_repository" == "charts" || "%_repository" == "phantomcharts" || "%_repository" == "releasecharts" |  | ||||||
|     Type: helm |  | ||||||
|     Repotype: helm |  | ||||||
|     Patterntype: none |  | ||||||
|     Required: perl-YAML-LibYAML |  | ||||||
| %endif |  | ||||||
|  |  | ||||||
| %if "%_repository" == "standard" |  | ||||||
|     # for build openstack-ironic-image |  | ||||||
|     BuildFlags: allowrootforbuild |  | ||||||
| %endif |  | ||||||
|  |  | ||||||
| # Enable reproducible builds |  | ||||||
| # https://en.opensuse.org/openSUSE:Reproducible_Builds\#With_OBS |  | ||||||
| Macros: |  | ||||||
| %source_date_epoch_from_changelog Y |  | ||||||
| %clamp_mtime_to_source_date_epoch Y |  | ||||||
| %use_source_date_epoch_as_buildtime Y |  | ||||||
| %_buildhost reproducible |  | ||||||
| :Macros |  | ||||||
							
								
								
									
										74
									
								
								_meta
									
									
									
									
									
								
							
							
						
						
									
										74
									
								
								_meta
									
									
									
									
									
								
							| @@ -1,74 +0,0 @@ | |||||||
| {#-  |  | ||||||
|   This template is rendered by the render_meta.py script |  | ||||||
|   it is not automatically enforced by OBS |  | ||||||
| -#} |  | ||||||
| {%- set maintainers = [ |  | ||||||
|     "edge-engineering", |  | ||||||
| ] -%} |  | ||||||
| <project name="{{ project }}"> |  | ||||||
|   <title>{{ title }}</title> |  | ||||||
|   {%- if description is defined %} |  | ||||||
|   <description>{{ description }}</description> |  | ||||||
|   {%- else %} |  | ||||||
|   <description/> |  | ||||||
|   {%- endif %} |  | ||||||
|   {%- if scm_url is defined %} |  | ||||||
|   <scmsync>{{ scm_url }}</scmsync> |  | ||||||
|   {%- endif %} |  | ||||||
| {%- for maintainer in maintainers %} |  | ||||||
|   <person userid="{{ maintainer }}" role="maintainer"/> |  | ||||||
| {%- endfor %} |  | ||||||
| {%- if not base_project %} |  | ||||||
|   <build> |  | ||||||
|     <disable/> |  | ||||||
|     <enable repository="charts"/> |  | ||||||
|     <enable repository="test_manifest_images"/> |  | ||||||
|   </build> |  | ||||||
|   <publish> |  | ||||||
|     <disable repository="phantomcharts"/> |  | ||||||
|   </publish> |  | ||||||
|   <repository name="phantomcharts"> |  | ||||||
|     <arch>x86_64</arch> |  | ||||||
|   </repository> |  | ||||||
| {%- endif %} |  | ||||||
| {%- for repository in ["images", "images_6.0", "test_manifest_images"] %} |  | ||||||
|   <repository name="{{ repository }}"> |  | ||||||
|     {%- if release_project is defined and repository != "test_manifest_images" %} |  | ||||||
|     <releasetarget project="{{ release_project }}" repository="images" trigger="manual"/> |  | ||||||
|     {%- endif %} |  | ||||||
|     <path project="SUSE:Registry" repository="standard"/> |  | ||||||
|     {%- if repository == "images_6.0" %} |  | ||||||
|       <path project="SUSE:CA" repository="16.0"/> |  | ||||||
|       <path project="SUSE:ALP:Products:Marble:6.0" repository="standard"/> |  | ||||||
|     {%- else %} |  | ||||||
|       <path project="SUSE:CA" repository="SLE_15_SP6"/> |  | ||||||
|       <path project="{{ project }}" repository="standard"/> |  | ||||||
|     {%- endif %} |  | ||||||
|     <arch>x86_64</arch> |  | ||||||
|     <arch>aarch64</arch> |  | ||||||
|   </repository> |  | ||||||
| {%- endfor %} |  | ||||||
|   <repository name="standard" block="local"> |  | ||||||
|     {%- if release_project is defined and not for_release %} |  | ||||||
|     <releasetarget project="{{ release_project }}" repository="standard" trigger="manual"/> |  | ||||||
|     {%- endif %} |  | ||||||
|     <path project="Cloud:OpenStack:2024.2" repository="15.6"/> |  | ||||||
|     <path project="SUSE:SLE-15-SP6:Update" repository="standard"/> |  | ||||||
|     <arch>x86_64</arch> |  | ||||||
|     <arch>aarch64</arch> |  | ||||||
|   </repository> |  | ||||||
|   <repository name="charts"{{ ' rebuild="local"' if not base_project }}> |  | ||||||
|     {%- if release_project is defined and not for_release %} |  | ||||||
|     <releasetarget project="{{ release_project }}" repository="phantomcharts" trigger="manual"/> |  | ||||||
|     {%- endif %} |  | ||||||
|     <path project="{{ project }}" repository="standard"/> |  | ||||||
|     <arch>x86_64</arch> |  | ||||||
|   </repository> |  | ||||||
|   {%- if for_release %} |  | ||||||
|   <repository name="releasecharts" rebuild="local"> |  | ||||||
|     <releasetarget project="{{ release_project }}" repository="charts" trigger="manual"/> |  | ||||||
|     <path project="{{ project }}" repository="standard"/> |  | ||||||
|     <arch>x86_64</arch> |  | ||||||
|   </repository> |  | ||||||
|   {%- endif %} |  | ||||||
| </project> |  | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| #!BuildTag: %%IMG_PREFIX%%akri-chart:%%CHART_MAJOR%%.0.0_up0.12.20 | #!BuildTag: %%IMG_PREFIX%%akri-chart:0.12.20 | ||||||
| #!BuildTag: %%IMG_PREFIX%%akri-chart:%%CHART_MAJOR%%.0.0_up0.12.20-%RELEASE% | #!BuildTag: %%IMG_PREFIX%%akri-chart:0.12.20-%RELEASE% | ||||||
| annotations: | annotations: | ||||||
|   catalog.cattle.io/display-name: Akri |   catalog.cattle.io/display-name: Akri | ||||||
| apiVersion: v2 | apiVersion: v2 | ||||||
| @@ -8,4 +8,4 @@ description: A Helm chart for Akri | |||||||
| icon: https://raw.githubusercontent.com/project-akri/akri-docs/main/art/icon/akri-icon-light.svg | icon: https://raw.githubusercontent.com/project-akri/akri-docs/main/art/icon/akri-icon-light.svg | ||||||
| name: akri | name: akri | ||||||
| type: application | type: application | ||||||
| version: "%%CHART_MAJOR%%.0.0+up0.12.20" | version: 0.12.20 | ||||||
|   | |||||||
| @@ -11,7 +11,5 @@ | |||||||
|     <param name="file">Chart.yaml</param> |     <param name="file">Chart.yaml</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> | ||||||
|     <param name="var">IMG_PREFIX</param> |     <param name="var">IMG_PREFIX</param> | ||||||
|     <param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param> |  | ||||||
|     <param name="var">CHART_MAJOR</param> |  | ||||||
|   </service> |   </service> | ||||||
| </services> | </services> | ||||||
|   | |||||||
| @@ -1,21 +1,20 @@ | |||||||
| #!BuildTag: %%IMG_PREFIX%%akri-dashboard-extension-chart:%%CHART_MAJOR%%.0.0 | #!BuildTag: %%IMG_PREFIX%%akri-dashboard-extension-chart:1.2.0 | ||||||
| #!BuildTag: %%IMG_PREFIX%%akri-dashboard-extension-chart:%%CHART_MAJOR%%.0.0_up1.2.1 | #!BuildTag: %%IMG_PREFIX%%akri-dashboard-extension-chart:1.2.0-%RELEASE% | ||||||
| #!BuildTag: %%IMG_PREFIX%%akri-dashboard-extension-chart:%%CHART_MAJOR%%.0.0_up1.2.1-%RELEASE% |  | ||||||
| annotations: | annotations: | ||||||
|   catalog.cattle.io/certified: rancher |   catalog.cattle.io/certified: rancher | ||||||
|   catalog.cattle.io/display-name: Akri |   catalog.cattle.io/display-name: Akri | ||||||
|   catalog.cattle.io/kube-version: ">= v1.26.0-0" |   catalog.cattle.io/kube-version: '>= v1.26.0-0' | ||||||
|   catalog.cattle.io/namespace: cattle-ui-plugin-system |   catalog.cattle.io/namespace: cattle-ui-plugin-system | ||||||
|   catalog.cattle.io/os: linux |   catalog.cattle.io/os: linux | ||||||
|   catalog.cattle.io/permits-os: linux, windows |   catalog.cattle.io/permits-os: linux, windows | ||||||
|   catalog.cattle.io/rancher-version: ">= 2.10.0-0" |   catalog.cattle.io/rancher-version: '>= 2.10.0-0' | ||||||
|   catalog.cattle.io/scope: management |   catalog.cattle.io/scope: management | ||||||
|   catalog.cattle.io/ui-component: plugins |   catalog.cattle.io/ui-component: plugins | ||||||
|   catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0" |   catalog.cattle.io/ui-extensions-version: '>= 3.0.0' | ||||||
| apiVersion: v2 | apiVersion: v2 | ||||||
| appVersion: 302.0.0+up1.2.1 | appVersion: 1.2.0 | ||||||
| description: 'SUSE Edge: Akri extension for Rancher Dashboard' | description: 'SUSE Edge: Akri extension for Rancher Dashboard' | ||||||
|  | icon: https://raw.githubusercontent.com/cncf/artwork/main/projects/akri/icon/color/akri-icon-color.svg | ||||||
| name: akri-dashboard-extension | name: akri-dashboard-extension | ||||||
| type: application | type: application | ||||||
| version: "%%CHART_MAJOR%%.0.0+up1.2.1" | version: 1.2.0 | ||||||
| icon: https://raw.githubusercontent.com/cncf/artwork/main/projects/akri/icon/color/akri-icon-color.svg |  | ||||||
|   | |||||||
| @@ -11,7 +11,5 @@ | |||||||
|     <param name="file">Chart.yaml</param> |     <param name="file">Chart.yaml</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> | ||||||
|     <param name="var">IMG_PREFIX</param> |     <param name="var">IMG_PREFIX</param> | ||||||
|     <param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param> |  | ||||||
|     <param name="var">CHART_MAJOR</param> |  | ||||||
|   </service> |   </service> | ||||||
| </services> | </services> | ||||||
|   | |||||||
| @@ -38,7 +38,7 @@ Common labels | |||||||
| helm.sh/chart: {{ include "extension-server.chart" . }} | helm.sh/chart: {{ include "extension-server.chart" . }} | ||||||
| {{ include "extension-server.selectorLabels" . }} | {{ include "extension-server.selectorLabels" . }} | ||||||
| {{- if .Chart.AppVersion }} | {{- if .Chart.AppVersion }} | ||||||
| app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | quote }} | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} | ||||||
| {{- end }} | {{- end }} | ||||||
| app.kubernetes.io/managed-by: {{ .Release.Service }} | app.kubernetes.io/managed-by: {{ .Release.Service }} | ||||||
| {{- end }} | {{- end }} | ||||||
| @@ -60,4 +60,4 @@ Pkg annotations | |||||||
| {{ $key }}: {{ $value | quote }} | {{ $key }}: {{ $value | quote }} | ||||||
| {{- end }} | {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
| @@ -8,7 +8,7 @@ spec: | |||||||
|   plugin: |   plugin: | ||||||
|     name: {{ include "extension-server.fullname" . }} |     name: {{ include "extension-server.fullname" . }} | ||||||
|     version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }} |     version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }} | ||||||
|     endpoint: https://raw.githubusercontent.com/suse-edge/dashboard-extensions/gh-pages/extensions/akri-dashboard-extension/302.0.0+up1.2.1 |     endpoint: https://raw.githubusercontent.com/suse-edge/dashboard-extensions/gh-pages/extensions/akri-dashboard-extension/1.2.0 | ||||||
|     noCache: {{ .Values.plugin.noCache }} |     noCache: {{ .Values.plugin.noCache }} | ||||||
|     noAuth: {{ .Values.plugin.noAuth }} |     noAuth: {{ .Values.plugin.noAuth }} | ||||||
|     metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }} |     metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }} | ||||||
| @@ -8,5 +8,5 @@ plugin: | |||||||
|   metadata: |   metadata: | ||||||
|     catalog.cattle.io/display-name: Akri |     catalog.cattle.io/display-name: Akri | ||||||
|     catalog.cattle.io/rancher-version: ">= 2.10.0-0" |     catalog.cattle.io/rancher-version: ">= 2.10.0-0" | ||||||
|     catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0" |     catalog.cattle.io/ui-extensions-version: ">= 3.0.0" | ||||||
|     catalog.cattle.io/kube-version: ">= v1.26.0-0" |     catalog.cattle.io/kube-version: ">= v1.26.0-0" | ||||||
|   | |||||||
| @@ -10,9 +10,7 @@ | |||||||
| 	<service name="cargo_vendor" mode="manual"> | 	<service name="cargo_vendor" mode="manual"> | ||||||
| 		<param name="srcdir">akri</param> | 		<param name="srcdir">akri</param> | ||||||
| 	</service> | 	</service> | ||||||
| 	<service name="tar" mode="buildtime"> | 	<service name="tar" mode="buildtime" /> | ||||||
| 		<param name="obsinfo">akri.obsinfo</param> |  | ||||||
| 	</service> |  | ||||||
| 	<service name="set_version" mode="buildtime" > | 	<service name="set_version" mode="buildtime" > | ||||||
| 		<param name="fromfile">version.txt</param> | 		<param name="fromfile">version.txt</param> | ||||||
| 		<param name="regex">^(.*)$</param> | 		<param name="regex">^(.*)$</param> | ||||||
|   | |||||||
| @@ -12,8 +12,10 @@ | |||||||
|     <param name="without-version">yes</param> |     <param name="without-version">yes</param> | ||||||
|     <param name="versionrewrite-replacement">\1</param> |     <param name="versionrewrite-replacement">\1</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="tar"> |   <service mode="buildtime" name="tar" /> | ||||||
|     <param name="obsinfo">baremetal-operator.obsinfo</param> |   <service mode="buildtime" name="recompress"> | ||||||
|  |     <param name="file">*.tar</param> | ||||||
|  |     <param name="compression">gz</param> | ||||||
|   </service> |   </service> | ||||||
|    <service name="go_modules"> |    <service name="go_modules"> | ||||||
|   </service> |   </service> | ||||||
| @@ -21,7 +23,7 @@ | |||||||
|     <param name="file">baremetal-operator.spec</param> |     <param name="file">baremetal-operator.spec</param> | ||||||
|     <param name="var">SOURCE_COMMIT</param> |     <param name="var">SOURCE_COMMIT</param> | ||||||
|     <param name="eval"> |     <param name="eval"> | ||||||
|       SOURCE_COMMIT=$(grep commit baremetal-operator.obsinfo | cut -d" " -f2) |       SOURCE_COMMIT=$(grep commit *.obsinfo | cut -d" " -f2) | ||||||
|     </param> |     </param> | ||||||
|     <param name="verbose">1</param> |     <param name="verbose">1</param> | ||||||
|   </service> |   </service> | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ Release:        0.8.0 | |||||||
| Summary:        Implements a Kubernetes API for managing bare metal hosts | Summary:        Implements a Kubernetes API for managing bare metal hosts | ||||||
| License:        Apache-2.0 | License:        Apache-2.0 | ||||||
| URL:            https://github.com/metal3-io/baremetal-operator | URL:            https://github.com/metal3-io/baremetal-operator | ||||||
| Source:         baremetal-operator-%{version}.tar | Source:         baremetal-operator-%{version}.tar.gz | ||||||
| Source1:        vendor.tar.gz | Source1:        vendor.tar.gz | ||||||
| BuildRequires:  golang(API) = 1.22 | BuildRequires:  golang(API) = 1.22 | ||||||
| ExcludeArch:    s390 | ExcludeArch:    s390 | ||||||
|   | |||||||
| @@ -1,9 +1,9 @@ | |||||||
| #!BuildTag: %%IMG_PREFIX%%cdi-chart:%%CHART_MAJOR%%.0.0_up0.4.0 | #!BuildTag: %%IMG_PREFIX%%cdi-chart:0.4.0 | ||||||
| #!BuildTag: %%IMG_PREFIX%%cdi-chart:%%CHART_MAJOR%%.0.0_up0.4.0-%RELEASE% | #!BuildTag: %%IMG_PREFIX%%cdi-chart:0.4.0-%RELEASE% | ||||||
| apiVersion: v2 | apiVersion: v2 | ||||||
| appVersion: 1.60.1 | appVersion: 1.60.1 | ||||||
| description: A Helm chart for Containerized Data Importer (CDI) | description: A Helm chart for Containerized Data Importer (CDI) | ||||||
| icon: https://raw.githubusercontent.com/cncf/artwork/main/projects/kubevirt/icon/color/kubevirt-icon-color.svg | icon: https://raw.githubusercontent.com/cncf/artwork/main/projects/kubevirt/icon/color/kubevirt-icon-color.svg | ||||||
| name: cdi | name: cdi | ||||||
| type: application | type: application | ||||||
| version: "%%CHART_MAJOR%%.0.0+up0.4.0" | version: 0.4.0 | ||||||
|   | |||||||
| @@ -4,7 +4,5 @@ | |||||||
|     <param name="file">Chart.yaml</param> |     <param name="file">Chart.yaml</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> | ||||||
|     <param name="var">IMG_PREFIX</param> |     <param name="var">IMG_PREFIX</param> | ||||||
|     <param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param> |  | ||||||
|     <param name="var">CHART_MAJOR</param> |  | ||||||
|   </service> |   </service> | ||||||
| </services> | </services> | ||||||
|   | |||||||
							
								
								
									
										36
									
								
								cluster-api-provider-metal3-image/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								cluster-api-provider-metal3-image/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | # SPDX-License-Identifier: Apache-2.0 | ||||||
|  | #!BuildTag: %%IMG_PREFIX%%cluster-api-provider-metal3:v%%cluster-api-provider-metal3_version%% | ||||||
|  | #!BuildTag: %%IMG_PREFIX%%cluster-api-provider-metal3:%%cluster-api-provider-metal3_version%% | ||||||
|  | #!BuildTag: %%IMG_PREFIX%%cluster-api-provider-metal3:%%cluster-api-provider-metal3_version%%-%RELEASE% | ||||||
|  | #!BuildVersion: 15.6 | ||||||
|  | ARG SLE_VERSION | ||||||
|  | FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro | ||||||
|  |  | ||||||
|  | FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base | ||||||
|  | COPY --from=micro / /installroot/ | ||||||
|  | RUN zypper --installroot /installroot --non-interactive install --no-recommends cluster-api-provider-metal3 shadow; zypper -n clean; rm -rf /var/log/* | ||||||
|  |  | ||||||
|  | FROM micro AS final | ||||||
|  | # Define labels according to https://en.opensuse.org/Building_derived_containers | ||||||
|  | # labelprefix=com.suse.application.cluster-api-provider-metal3 | ||||||
|  | LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | ||||||
|  | LABEL org.opencontainers.image.title="SLE cluster-api-provider-metal3 Container Image" | ||||||
|  | LABEL org.opencontainers.image.description="cluster-api-provider-metal3 based on the SLE Base Container Image." | ||||||
|  | LABEL org.opencontainers.image.version="%%cluster-api-provider-metal3_version%%" | ||||||
|  | LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" | ||||||
|  | LABEL org.opencontainers.image.created="%BUILDTIME%" | ||||||
|  | LABEL org.opencontainers.image.vendor="SUSE LLC" | ||||||
|  | LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%cluster-api-provider-metal3:%%cluster-api-provider-metal3_version%%-%RELEASE%" | ||||||
|  | LABEL org.openbuildservice.disturl="%DISTURL%" | ||||||
|  | LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | ||||||
|  | LABEL com.suse.eula="SUSE Combined EULA February 2024" | ||||||
|  | LABEL com.suse.lifecycle-url="https://www.suse.com/lifecycle" | ||||||
|  | LABEL com.suse.image-type="application" | ||||||
|  | LABEL com.suse.release-stage="released" | ||||||
|  | # endlabelprefix | ||||||
|  |  | ||||||
|  | COPY --from=base /installroot / | ||||||
|  | RUN mv /usr/bin/cluster-api-provider-metal3 /manager | ||||||
|  | # Use uid of nonroot user (65532) because kubernetes expects numeric user when applying pod security policies | ||||||
|  | USER 65532 | ||||||
|  | ENTRYPOINT [ "/manager" ] | ||||||
| @@ -1,6 +1,12 @@ | |||||||
| <services> | <services> | ||||||
|   <service mode="buildtime" name="kiwi_metainfo_helper"/> |   <service mode="buildtime" name="kiwi_metainfo_helper"/> | ||||||
|   <service mode="buildtime" name="docker_label_helper"/> |   <service mode="buildtime" name="docker_label_helper"/> | ||||||
|  |   <service name="replace_using_package_version" mode="buildtime"> | ||||||
|  |     <param name="file">Dockerfile</param> | ||||||
|  |     <param name="regex">%%cluster-api-provider-metal3_version%%</param> | ||||||
|  |     <param name="package">cluster-api-provider-metal3</param> | ||||||
|  |     <param name="parse-version">patch</param> | ||||||
|  |   </service> | ||||||
|   <service name="replace_using_env" mode="buildtime"> |   <service name="replace_using_env" mode="buildtime"> | ||||||
|     <param name="file">Dockerfile</param> |     <param name="file">Dockerfile</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> | ||||||
							
								
								
									
										23
									
								
								cluster-api-provider-metal3/_service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								cluster-api-provider-metal3/_service
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | |||||||
|  | <services> | ||||||
|  |  <service name="obs_scm"> | ||||||
|  |     <param name="url">https://github.com/metal3-io/cluster-api-provider-metal3</param> | ||||||
|  |     <param name="scm">git</param> | ||||||
|  |     <param name="revision">v1.7.2</param> | ||||||
|  |     <param name="version">_auto_</param> | ||||||
|  |     <param name="versionformat">@PARENT_TAG@</param> | ||||||
|  |     <param name="changesgenerate">enable</param> | ||||||
|  |     <param name="changesauthor">steven.hardy@suse.com</param> | ||||||
|  |     <param name="match-tag">v*</param> | ||||||
|  |     <param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param> | ||||||
|  |     <param name="without-version">yes</param> | ||||||
|  |     <param name="versionrewrite-replacement">\1</param> | ||||||
|  |   </service> | ||||||
|  |   <service mode="buildtime" name="tar" /> | ||||||
|  |   <service mode="buildtime" name="recompress"> | ||||||
|  |     <param name="file">*.tar</param> | ||||||
|  |     <param name="compression">gz</param> | ||||||
|  |   </service> | ||||||
|  |    <service name="go_modules"> | ||||||
|  |   </service> | ||||||
|  |   <service mode="buildtime" name="set_version" /> | ||||||
|  | </services> | ||||||
							
								
								
									
										54
									
								
								cluster-api-provider-metal3/cluster-api-provider-metal3.spec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								cluster-api-provider-metal3/cluster-api-provider-metal3.spec
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | |||||||
|  | # | ||||||
|  | # spec file for package cluster-api-provider-metal3 | ||||||
|  | # | ||||||
|  | # Copyright (c) 2023 SUSE LLC | ||||||
|  | # | ||||||
|  | # All modifications and additions to the file contributed by third parties | ||||||
|  | # remain the property of their copyright owners, unless otherwise agreed | ||||||
|  | # upon. The license for this file, and modifications and additions to the | ||||||
|  | # file, is the same license as for the pristine package itself (unless the | ||||||
|  | # license for the pristine package is not an Open Source License, in which | ||||||
|  | # case the license is the MIT License). An "Open Source License" is a | ||||||
|  | # license that conforms to the Open Source Definition (Version 1.9) | ||||||
|  | # published by the Open Source Initiative. | ||||||
|  |  | ||||||
|  | # Please submit bugfixes or comments via https://bugs.opensuse.org/ | ||||||
|  | # | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Name:           cluster-api-provider-metal3 | ||||||
|  | Version:        1.7.2 | ||||||
|  | Release:        0 | ||||||
|  | Summary:        Cluster API Infrastructure Provider for Metal3 | ||||||
|  | License:        Apache-2.0 | ||||||
|  | URL:            https://github.com/metal3-io/cluster-api-provider-metal3 | ||||||
|  | Source:         cluster-api-provider-metal3-%{version}.tar.gz | ||||||
|  | Source1:        vendor.tar.gz | ||||||
|  | BuildRequires:  golang(API) = 1.22 | ||||||
|  | ExcludeArch:    s390 | ||||||
|  | ExcludeArch:    %{ix86} | ||||||
|  |  | ||||||
|  | %description | ||||||
|  |  | ||||||
|  | Cluster API Provider Metal3 is one of the providers for Cluster API and enables | ||||||
|  | users to deploy a Cluster API based cluster on top of bare metal infrastructure | ||||||
|  | using Metal3. | ||||||
|  |  | ||||||
|  | %prep | ||||||
|  | %autosetup -a1 -n cluster-api-provider-metal3-%{version} | ||||||
|  |  | ||||||
|  | %build | ||||||
|  | go build \ | ||||||
|  |    -mod=vendor \ | ||||||
|  |    -buildmode=pie \ | ||||||
|  |    -a -ldflags '-extldflags "-static"' | ||||||
|  |  | ||||||
|  | %install | ||||||
|  | install -D -m0755 cluster-api-provider-metal3 %{buildroot}%{_bindir}/cluster-api-provider-metal3 | ||||||
|  |  | ||||||
|  | %files | ||||||
|  | %license LICENSE | ||||||
|  | %doc README.md | ||||||
|  | %{_bindir}/cluster-api-provider-metal3 | ||||||
|  |  | ||||||
|  | %changelog | ||||||
| @@ -8,8 +8,10 @@ | |||||||
|     <param name="versionrewrite-pattern">v(.*)</param> |     <param name="versionrewrite-pattern">v(.*)</param> | ||||||
|     <param name="changesgenerate">enable</param> |     <param name="changesgenerate">enable</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="tar"> |   <service mode="buildtime" name="tar" /> | ||||||
|     <param name="obsinfo">cosign.obsinfo</param> |   <service mode="buildtime" name="recompress"> | ||||||
|  |     <param name="file">*.tar</param> | ||||||
|  |     <param name="compression">gz</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="set_version" /> |   <service mode="buildtime" name="set_version" /> | ||||||
|   <service name="go_modules"> |   <service name="go_modules"> | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ Release:        0 | |||||||
| Summary:        Container Signing, Verification and Storage in an OCI registry | Summary:        Container Signing, Verification and Storage in an OCI registry | ||||||
| License:        Apache-2.0 | License:        Apache-2.0 | ||||||
| URL:            https://github.com/rancher-government-carbide/cosign | URL:            https://github.com/rancher-government-carbide/cosign | ||||||
| Source:         cosign-%{version}.tar | Source:         cosign-%{version}.tar.gz | ||||||
| Source1:        vendor.tar.gz          | Source1:        vendor.tar.gz          | ||||||
| BuildRequires:  golang-packaging | BuildRequires:  golang-packaging | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| #!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.1.2-rc1 | #!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.1.0 | ||||||
| #!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.1.2-rc1-%RELEASE% | #!BuildTag: %%IMG_PREFIX%%edge-image-builder:1.1.0-%RELEASE% | ||||||
| #!BuildVersion: 15.6 | #!BuildVersion: 15.6 | ||||||
| ARG SLE_VERSION | ARG SLE_VERSION | ||||||
| FROM registry.suse.com/bci/bci-base:$SLE_VERSION | FROM registry.suse.com/bci/bci-base:$SLE_VERSION | ||||||
| @@ -15,11 +15,11 @@ RUN zypper --non-interactive install --no-recommends edge-image-builder qemu-x86 | |||||||
| LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | ||||||
| LABEL org.opencontainers.image.title="SLE edge-image-builder Container Image" | LABEL org.opencontainers.image.title="SLE edge-image-builder Container Image" | ||||||
| LABEL org.opencontainers.image.description="edge-image-builder based on the SLE Base Container Image." | LABEL org.opencontainers.image.description="edge-image-builder based on the SLE Base Container Image." | ||||||
| LABEL org.opencontainers.image.version="1.1.2-rc1" | LABEL org.opencontainers.image.version="1.1.0" | ||||||
| LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" | LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" | ||||||
| LABEL org.opencontainers.image.created="%BUILDTIME%" | LABEL org.opencontainers.image.created="%BUILDTIME%" | ||||||
| LABEL org.opencontainers.image.vendor="SUSE LLC" | LABEL org.opencontainers.image.vendor="SUSE LLC" | ||||||
| LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%edge-image-builder:1.1.2-rc1-%RELEASE%" | LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%edge-image-builder:1.1.0-%RELEASE%" | ||||||
| LABEL org.openbuildservice.disturl="%DISTURL%" | LABEL org.openbuildservice.disturl="%DISTURL%" | ||||||
| LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | ||||||
| LABEL com.suse.eula="SUSE Combined EULA February 2024" | LABEL com.suse.eula="SUSE Combined EULA February 2024" | ||||||
|   | |||||||
| @@ -7,14 +7,10 @@ | |||||||
|     <param name="eval">IMG_REPO=$(rpm --macros=/root/.rpmmacros -E %img_repo)</param> |     <param name="eval">IMG_REPO=$(rpm --macros=/root/.rpmmacros -E %img_repo)</param> | ||||||
|     <param name="var">IMG_REPO</param> |     <param name="var">IMG_REPO</param> | ||||||
|     <param name="file">artifacts.yaml</param> |     <param name="file">artifacts.yaml</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |  | ||||||
|     <param name="var">IMG_PREFIX</param> |  | ||||||
|     <param name="eval">CHART_REPO=$(rpm --macros=/root/.rpmmacros -E %chart_repo)</param> |     <param name="eval">CHART_REPO=$(rpm --macros=/root/.rpmmacros -E %chart_repo)</param> | ||||||
|     <param name="var">CHART_REPO</param> |     <param name="var">CHART_REPO</param> | ||||||
|     <param name="eval">SUPPORT_LEVEL=$(rpm --macros=/root/.rpmmacros -E %support_level)</param> |     <param name="eval">SUPPORT_LEVEL=$(rpm --macros=/root/.rpmmacros -E %support_level)</param> | ||||||
|     <param name="var">SUPPORT_LEVEL</param> |     <param name="var">SUPPORT_LEVEL</param> | ||||||
|     <param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param> |  | ||||||
|     <param name="var">CHART_MAJOR</param> |  | ||||||
|   </service> |   </service> | ||||||
| </services> | </services> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| metallb: | metallb: | ||||||
|   chart: metallb-chart |   chart: metallb-chart | ||||||
|   repository: "%%CHART_REPO%%/%%IMG_PREFIX%%" |   repository: %%CHART_REPO%%/3.1 | ||||||
|   version: "%%CHART_MAJOR%%.0.1+up0.14.9" |   version: 0.14.9 | ||||||
| endpoint-copier-operator: | endpoint-copier-operator: | ||||||
|   chart: endpoint-copier-operator-chart |   chart: endpoint-copier-operator-chart | ||||||
|   repository: "%%CHART_REPO%%/%%IMG_PREFIX%%" |   repository: %%CHART_REPO%%/3.1 | ||||||
|   version: "%%CHART_MAJOR%%.0.0+up0.2.1" |   version: 0.2.1 | ||||||
| kubernetes: | kubernetes: | ||||||
|   k3s: |   k3s: | ||||||
|     selinuxPackage: k3s-selinux-1.6-1.slemicro.noarch |     selinuxPackage: k3s-selinux-1.6-1.slemicro.noarch | ||||||
| @@ -13,3 +13,4 @@ kubernetes: | |||||||
|   rke2: |   rke2: | ||||||
|     selinuxPackage: rke2-selinux |     selinuxPackage: rke2-selinux | ||||||
|     selinuxRepository: https://rpm.rancher.io/rke2/stable/common/slemicro/noarch |     selinuxRepository: https://rpm.rancher.io/rke2/stable/common/slemicro/noarch | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,19 +1,18 @@ | |||||||
| <services> | <services> | ||||||
|   <service name="obs_scm"> |   <service name="obs_scm"> | ||||||
|     <param name="url">https://github.com/suse-edge/edge-image-builder.git</param> |     <param name="url">https://github.com/suse-edge/edge-image-builder.git</param> | ||||||
|  |     <param name="versionformat">@PARENT_TAG@</param> | ||||||
|     <param name="scm">git</param> |     <param name="scm">git</param> | ||||||
|     <param name="exclude">.git</param> |     <param name="exclude">.git</param> | ||||||
|     <param name="revision">v1.1.2-rc1</param> |     <param name="revision">v1.1.0</param> | ||||||
|     <!-- Uncomment and set this For Pre-Release Version --> |  | ||||||
|     <param name="version">1.1.2~rc0</param> |  | ||||||
|     <!-- Uncomment and this for regular version --> |  | ||||||
|     <!-- <param name="versionformat">@PARENT_TAG@</param> --> |  | ||||||
|     <param name="versionrewrite-pattern">v(\d+).(\d+).(\d+)</param> |     <param name="versionrewrite-pattern">v(\d+).(\d+).(\d+)</param> | ||||||
|     <param name="versionrewrite-replacement">\1.\2.\3</param> |     <param name="versionrewrite-replacement">\1.\2.\3</param> | ||||||
|     <param name="changesgenerate">enable</param> |     <param name="changesgenerate">enable</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="tar"> |   <service mode="buildtime" name="tar" /> | ||||||
|     <param name="obsinfo">edge-image-builder.obsinfo</param> |   <service mode="buildtime" name="recompress"> | ||||||
|  |     <param name="file">*.tar</param> | ||||||
|  |     <param name="compression">gz</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="set_version" /> |   <service mode="buildtime" name="set_version" /> | ||||||
|   <service name="go_modules"> |   <service name="go_modules"> | ||||||
|   | |||||||
| @@ -17,12 +17,12 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| Name:           edge-image-builder | Name:           edge-image-builder | ||||||
| Version:        1.1.2~rc1 | Version:        1.1.0 | ||||||
| Release:        0 | Release:        0 | ||||||
| Summary:        Edge Image Builder | Summary:        Edge Image Builder | ||||||
| License:        Apache-2.0 | License:        Apache-2.0 | ||||||
| URL:            https://github.com/suse-edge/edge-image-builder | URL:            https://github.com/suse-edge/edge-image-builder | ||||||
| Source:         edge-image-builder-%{version}.tar | Source:         edge-image-builder-%{version}.tar.gz | ||||||
| Source1:        vendor.tar.gz | Source1:        vendor.tar.gz | ||||||
| BuildRequires:  golang(API) go1.22 | BuildRequires:  golang(API) go1.22 | ||||||
| BuildRequires:  golang-packaging | BuildRequires:  golang-packaging | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| #!BuildTag: %%IMG_PREFIX%%endpoint-copier-operator-chart:%%CHART_MAJOR%%.0.0_up0.2.1 | #!BuildTag: %%IMG_PREFIX%%endpoint-copier-operator-chart:0.2.1 | ||||||
| #!BuildTag: %%IMG_PREFIX%%endpoint-copier-operator-chart:%%CHART_MAJOR%%.0.0_up0.2.1-%RELEASE% | #!BuildTag: %%IMG_PREFIX%%endpoint-copier-operator-chart:0.2.1-%RELEASE% | ||||||
| apiVersion: v2 | apiVersion: v2 | ||||||
| appVersion: v0.2.0 | appVersion: v0.2.0 | ||||||
| description: A Helm chart for Kubernetes | description: A Helm chart for Kubernetes | ||||||
| name: endpoint-copier-operator | name: endpoint-copier-operator | ||||||
| type: application | type: application | ||||||
| version: "%%CHART_MAJOR%%.0.0+up0.2.1" | version: 0.2.1 | ||||||
|   | |||||||
| @@ -11,7 +11,5 @@ | |||||||
|     <param name="file">Chart.yaml</param> |     <param name="file">Chart.yaml</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> | ||||||
|     <param name="var">IMG_PREFIX</param> |     <param name="var">IMG_PREFIX</param> | ||||||
|     <param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param> |  | ||||||
|     <param name="var">CHART_MAJOR</param> |  | ||||||
|   </service> |   </service> | ||||||
| </services> | </services> | ||||||
|   | |||||||
| @@ -12,8 +12,10 @@ | |||||||
|     <param name="without-version">yes</param> |     <param name="without-version">yes</param> | ||||||
|     <param name="versionrewrite-replacement">\1</param> |     <param name="versionrewrite-replacement">\1</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="tar"> |   <service mode="buildtime" name="tar" /> | ||||||
|     <param name="obsinfo">endpoint-copier-operator.obsinfo</param> |   <service mode="buildtime" name="recompress"> | ||||||
|  |     <param name="file">*.tar</param> | ||||||
|  |     <param name="compression">gz</param> | ||||||
|   </service> |   </service> | ||||||
|   <service name="go_modules"> |   <service name="go_modules"> | ||||||
|   </service> |   </service> | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ Release:        0.2.0 | |||||||
| Summary:        Implements a Kubernetes API for copying endpoint resources | Summary:        Implements a Kubernetes API for copying endpoint resources | ||||||
| License:        Apache-2.0 | License:        Apache-2.0 | ||||||
| URL:            https://github.com/suse-edge/endpoint-copier-operator | URL:            https://github.com/suse-edge/endpoint-copier-operator | ||||||
| Source:         endpoint-copier-operator-%{version}.tar | Source:         endpoint-copier-operator-%{version}.tar.gz | ||||||
| Source1:        vendor.tar.gz | Source1:        vendor.tar.gz | ||||||
| BuildRequires:  golang(API) = 1.20 | BuildRequires:  golang(API) = 1.20 | ||||||
| ExcludeArch:    s390 | ExcludeArch:    s390 | ||||||
|   | |||||||
| @@ -1,58 +0,0 @@ | |||||||
| # SPDX-License-Identifier: MIT |  | ||||||
| #!BuildTag: %%IMG_PREFIX%%frr:8.4 |  | ||||||
| #!BuildTag: %%IMG_PREFIX%%frr:8.4-%RELEASE% |  | ||||||
| #!BuildVersion: 15.5 |  | ||||||
| ARG SLE_VERSION |  | ||||||
| FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro |  | ||||||
|  |  | ||||||
| FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base |  | ||||||
| COPY --from=micro / /installroot/ |  | ||||||
| RUN zypper --installroot /installroot --non-interactive install --no-recommends tcpdump libpcap-devel iproute2 iputils strace socat frr python3 catatonit sed util-linux; zypper -n clean; rm -rf /var/log/* |  | ||||||
|  |  | ||||||
| FROM micro AS final |  | ||||||
| # Define labels according to https://en.opensuse.org/Building_derived_containers |  | ||||||
| # labelprefix=com.suse.application.frr |  | ||||||
| LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" |  | ||||||
| LABEL org.opencontainers.image.title="FRR Container Image" |  | ||||||
| LABEL org.opencontainers.image.description="frr based on the SLE Base Container Image." |  | ||||||
| LABEL org.opencontainers.image.version="8.4" |  | ||||||
| LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" |  | ||||||
| LABEL org.opencontainers.image.created="%BUILDTIME%" |  | ||||||
| LABEL org.opencontainers.image.vendor="SUSE LLC" |  | ||||||
| LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%frr:8.4-%RELEASE%" |  | ||||||
| LABEL org.openbuildservice.disturl="%DISTURL%" |  | ||||||
| LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" |  | ||||||
| LABEL com.suse.eula="SUSE Combined EULA February 2024" |  | ||||||
| LABEL com.suse.lifecycle-url="https://www.suse.com/lifecycle" |  | ||||||
| LABEL com.suse.image-type="application" |  | ||||||
| LABEL com.suse.release-stage="released" |  | ||||||
| # endlabelprefix |  | ||||||
|  |  | ||||||
| COPY --from=base /installroot / |  | ||||||
|  |  | ||||||
| #Install frr |  | ||||||
| USER root |  | ||||||
|  |  | ||||||
| ENV PYTHONDONTWRITEBYTECODE yes |  | ||||||
|  |  | ||||||
| # frr.sh is the entry point. This script examines environment |  | ||||||
| # variables to direct operation and configure ovn |  | ||||||
| ADD frr.sh /root/ |  | ||||||
| ADD daemons /etc/frr |  | ||||||
| ADD frr.conf /etc/frr |  | ||||||
| ADD vtysh.conf /etc/frr |  | ||||||
|  |  | ||||||
| RUN chown frr:frr /etc/frr/daemons /etc/frr/frr.conf |  | ||||||
|  |  | ||||||
| RUN ln -s /usr/bin/catatonit /sbin/tini |  | ||||||
| RUN usermod -a -G frrvty frr |  | ||||||
|  |  | ||||||
| COPY docker-start /usr/libexec/frr/docker-start |  | ||||||
| RUN cp -r /usr/libexec/frr /usr/lib/ # required because of the different path on rhel |  | ||||||
|  |  | ||||||
| WORKDIR /root |  | ||||||
| ENTRYPOINT ["/sbin/tini", "--"] |  | ||||||
|  |  | ||||||
| COPY docker-start /usr/lib/frr/docker-start |  | ||||||
| RUN chmod +x /usr/lib/frr/docker-start |  | ||||||
| CMD ["/usr/lib/frr/docker-start"] |  | ||||||
| @@ -1,82 +0,0 @@ | |||||||
| # This file tells the frr package which daemons to start. |  | ||||||
| # |  | ||||||
| # Entries are in the format: <daemon>=(yes|no|priority) |  | ||||||
| #   0, "no"  = disabled |  | ||||||
| #   1, "yes" = highest priority |  | ||||||
| #   2 .. 10  = lower priorities |  | ||||||
| # |  | ||||||
| # For daemons which support multiple instances, a 2nd line listing |  | ||||||
| # the instances can be added. Eg for ospfd: |  | ||||||
| #   ospfd=yes |  | ||||||
| #   ospfd_instances="1,2" |  | ||||||
| # |  | ||||||
| # Priorities were suggested by Dancer <dancer@zeor.simegen.com>. |  | ||||||
| # They're used to start the FRR daemons in more than one step |  | ||||||
| # (for example start one or two at network initialization and the |  | ||||||
| # rest later). The number of FRR daemons being small, priorities |  | ||||||
| # must be between 1 and 9, inclusive (or the initscript has to be |  | ||||||
| # changed). /etc/init.d/frr then can be started as |  | ||||||
| # |  | ||||||
| #   /etc/init.d/frr <start|stop|restart|<priority>> |  | ||||||
| # |  | ||||||
| # where priority 0 is the same as 'stop', priority 10 or 'start' |  | ||||||
| # means 'start all' |  | ||||||
| # |  | ||||||
| # Sample configurations for these daemons can be found in |  | ||||||
| # /usr/share/doc/frr/examples/. |  | ||||||
| # |  | ||||||
| # ATTENTION: |  | ||||||
| # |  | ||||||
| # When activation a daemon at the first time, a config file, even if it is |  | ||||||
| # empty, has to be present *and* be owned by the user and group "frr", else |  | ||||||
| # the daemon will not be started by /etc/init.d/frr. The permissions should |  | ||||||
| # be u=rw,g=r,o=. |  | ||||||
| # When using "vtysh" such a config file is also needed. It should be owned by |  | ||||||
| # group "frrvty" and set to ug=rw,o= though. Check /etc/pam.d/frr, too. |  | ||||||
| # |  | ||||||
| watchfrr_enable=yes |  | ||||||
| watchfrr_options="-r '/usr/lib/frr/frr restart %s' -s '/usr/lib/frr/frr start %s' -k '/usr/lib/frr/frr stop %s'" |  | ||||||
| # |  | ||||||
| zebra=yes |  | ||||||
| bgpd=yes |  | ||||||
| ospfd=no |  | ||||||
| ospf6d=no |  | ||||||
| ripd=no |  | ||||||
| ripngd=no |  | ||||||
| isisd=no |  | ||||||
| pimd=no |  | ||||||
| nhrpd=no |  | ||||||
| eigrpd=no |  | ||||||
| sharpd=no |  | ||||||
| pbrd=no |  | ||||||
| staticd=yes |  | ||||||
| bfdd=yes |  | ||||||
| fabricd=no |  | ||||||
|  |  | ||||||
| # |  | ||||||
| # Command line options for the daemons |  | ||||||
| # |  | ||||||
| zebra_options=("-A 127.0.0.1") |  | ||||||
| bgpd_options=("-A 127.0.0.1") |  | ||||||
| ospfd_options=("-A 127.0.0.1") |  | ||||||
| ospf6d_options=("-A ::1") |  | ||||||
| ripd_options=("-A 127.0.0.1") |  | ||||||
| ripngd_options=("-A ::1") |  | ||||||
| isisd_options=("-A 127.0.0.1") |  | ||||||
| pimd_options=("-A 127.0.0.1") |  | ||||||
| nhrpd_options=("-A 127.0.0.1") |  | ||||||
| eigrpd_options=("-A 127.0.0.1") |  | ||||||
| sharpd_options=("-A 127.0.0.1") |  | ||||||
| pbrd_options=("-A 127.0.0.1") |  | ||||||
| staticd_options=("-A 127.0.0.1") |  | ||||||
| bfdd_options=("-A 127.0.0.1") |  | ||||||
| fabricd_options=("-A 127.0.0.1") |  | ||||||
|  |  | ||||||
| # |  | ||||||
| # If the vtysh_enable is yes, then the unified config is read |  | ||||||
| # and applied if it exists.  If no unified frr.conf exists |  | ||||||
| # then the per-daemon <daemon>.conf files are used) |  | ||||||
| # If vtysh_enable is no or non-existant, the frr.conf is ignored. |  | ||||||
| # it is highly suggested to have this set to yes |  | ||||||
| vtysh_enable=yes |  | ||||||
|  |  | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| source /usr/lib/frr/frrcommon.sh |  | ||||||
| /usr/lib/frr/watchfrr $(daemon_list) |  | ||||||
| @@ -1,53 +0,0 @@ | |||||||
| frr defaults traditional |  | ||||||
| log file /var/log/frr/frr.log |  | ||||||
| log syslog informational |  | ||||||
| log stdout debugging |  | ||||||
| ipv6 forwarding |  | ||||||
| service integrated-vtysh-config |  | ||||||
| ! |  | ||||||
| debug bgp updates in |  | ||||||
| debug bgp updates out |  | ||||||
| debug bgp zebra |  | ||||||
| ! |  | ||||||
| interface eth0 |  | ||||||
|  no ipv6 nd suppress-ra |  | ||||||
|  ipv6 nd ra-interval 10 |  | ||||||
| ! |  | ||||||
| router bgp OCPASN |  | ||||||
|  bgp router-id OCPROUTERID |  | ||||||
|  bgp bestpath as-path multipath-relax |  | ||||||
|  bgp bestpath compare-routerid |  | ||||||
| ! |  | ||||||
|  neighbor OCPnodes peer-group |  | ||||||
|  neighbor OCPnodes description Internal OCP Nodes |  | ||||||
|  neighbor OCPnodes remote-as OCPASN |  | ||||||
|  neighbor OCPnodes bfd |  | ||||||
|  neighbor OCPnodes capability extended-nexthop  |  | ||||||
|  !neighbor eth0 interface peer-group OCPnodes |  | ||||||
|  !neighbor OCPPEER remote-as OCPASN peer-group OCPnodes |  | ||||||
|  neighbor OCPPEER peer-group OCPnodes |  | ||||||
|  ! |  | ||||||
|  address-family ipv4 unicast |  | ||||||
|   redistribute connected |  | ||||||
|   neighbor OCPnodes activate |  | ||||||
|  exit-address-family |  | ||||||
|  ! |  | ||||||
|  address-family ipv6 unicast |  | ||||||
|   redistribute connected |  | ||||||
|   neighbor OCPnodes activate |  | ||||||
|   neighbor OCPnodes nexthop-local unchanged |  | ||||||
|  exit-address-family |  | ||||||
|  ! |  | ||||||
| ! |  | ||||||
| bfd |  | ||||||
|  peer OCPPEER vrf default interface eth0 |  | ||||||
|    receive-interval 2000 |  | ||||||
|    transmit-interval 2000 |  | ||||||
|    echo-mode |  | ||||||
|    echo-interval 3000 |  | ||||||
|    no shutdown |  | ||||||
|  exit |  | ||||||
| ! |  | ||||||
| line vty |  | ||||||
| ! |  | ||||||
|  |  | ||||||
							
								
								
									
										124
									
								
								frr-image/frr.sh
									
									
									
									
									
								
							
							
						
						
									
										124
									
								
								frr-image/frr.sh
									
									
									
									
									
								
							| @@ -1,124 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
| #set -euo pipefail |  | ||||||
|  |  | ||||||
| # Enable verbose shell output if FRR_SH_VERBOSE is set to 'true' |  | ||||||
| if [[ "${FRR_SH_VERBOSE:-}" == "true" ]]; then |  | ||||||
|   set -x |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # The argument to the command is the operation to be performed |  | ||||||
| # frr-node display display_env  |  | ||||||
| # a cmd must be provided, there is no default |  | ||||||
| cmd=${1:-""} |  | ||||||
|  |  | ||||||
| # The frr user id, by default it is going to be frr:frr |  | ||||||
| frr_user_id=${FRR_USER_ID:-""} |  | ||||||
|  |  | ||||||
| # frr options |  | ||||||
| frr_options=${FRR_OPTIONS:-""} |  | ||||||
|  |  | ||||||
| # This script is the entrypoint to the image. |  | ||||||
| # frr.sh version (update when API between daemonset and script changes - v.x.y) |  | ||||||
| frr_version="3" |  | ||||||
|  |  | ||||||
| # The daemonset version must be compatible with this script. |  | ||||||
| # The default when FRR_DAEMONSET_VERSION is not set is version 3 |  | ||||||
| frr_daemonset_version=${FRR_DAEMONSET_VERSION:-"3"} |  | ||||||
|  |  | ||||||
| # hostname is the host's hostname when using host networking, |  | ||||||
| # This is useful on the master |  | ||||||
| # otherwise it is the container ID (useful for debugging). |  | ||||||
| frr_pod_host=${K8S_NODE:-$(hostname)} |  | ||||||
|  |  | ||||||
| # The ovs user id, by default it is going to be root:root |  | ||||||
| frr_user_id=${FRR_USER_ID:-""} |  | ||||||
|  |  | ||||||
| # frr options |  | ||||||
| frr_options=${FRR_OPTIONS:-""} |  | ||||||
|  |  | ||||||
| # frr.conf variables |  | ||||||
| ocp_asn=${OCPASN:-65000} |  | ||||||
| ocp_routerid=${OCPROUTERID:-"10.10.10.1"} |  | ||||||
| ocp_peer=${OCPPEER:-"10.10.10.1"} |  | ||||||
|  |  | ||||||
| FRR_ETCDIR=/etc/frr |  | ||||||
| FRR_RUNDIR=/var/run/frr |  | ||||||
| FRR_LOGDIR=/var/log/frr |  | ||||||
|  |  | ||||||
| # ========================================= |  | ||||||
|  |  | ||||||
| setup_frr_permissions() { |  | ||||||
|     chown -R ${frr_user_id} ${FRR_RUNDIR} |  | ||||||
|     chown -R ${frr_user_id} ${FRR_LOGDIR} |  | ||||||
|     chown -R ${frr_user_id} ${FRR_ETCDIR} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # ========================================= |  | ||||||
|  |  | ||||||
| display_version() { |  | ||||||
|   echo " =================== hostname: ${frr_pod_host}" |  | ||||||
|   echo " =================== daemonset version ${frr_daemonset_version}" |  | ||||||
|   if [[ -f /root/git_info ]]; then |  | ||||||
|     disp_ver=$(cat /root/git_info) |  | ||||||
|     return |  | ||||||
|   fi |  | ||||||
| } |  | ||||||
|  |  | ||||||
| display_env() { |  | ||||||
|   echo FRR_USER_ID ${frr_user_id} |  | ||||||
|   echo FRR_OPTIONS ${frr_options} |  | ||||||
|   echo frr.sh version ${frr_version} |  | ||||||
|   echo ocp_asn ${ocp_asn} |  | ||||||
|   echo ocp_routerid ${ocp_routerid} |  | ||||||
|   echo ocp_peer ${ocp_peer} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # frr-node - all nodes |  | ||||||
| frr-node() { |  | ||||||
|   trap 'kill $(jobs -p) ; exit 0' TERM |  | ||||||
|   rm -f ${FRR_RUNDIR}/frr.pid |  | ||||||
|   echo "=============== frr-node ========== update frr.conf" |  | ||||||
|   sed -i "s/OCPASN/$ocp_asn/" /etc/frr/frr.conf |  | ||||||
|   sed -i "s/OCPPEER/$ocp_peer/" /etc/frr/frr.conf |  | ||||||
|   sed -i "s/OCPROUTERID/$ocp_routerid/" /etc/frr/frr.conf |  | ||||||
|  |  | ||||||
|   #chown -R frr:frr /etc/frr |  | ||||||
|   chown -R frr:frr ${FRR_RUNDIR} |  | ||||||
|   echo "=============== frr-node ========== starting" |  | ||||||
|   # /usr/lib/frr/frrinit.sh start |  | ||||||
|   # bash -x /usr/lib/frr/frrinit.sh start |  | ||||||
|   bash -x  |  | ||||||
|   /usr/lib/frr/frrinit.sh start |  | ||||||
|   frrResult=$? |  | ||||||
|   echo "=============== frrinit result is ${frrResult} "  |  | ||||||
|   |  | ||||||
|   # Sleep forever |  | ||||||
|   exec tail -f /dev/null |  | ||||||
| } |  | ||||||
|  |  | ||||||
| echo "================== frr.sh --- version: ${frr_version} ================" |  | ||||||
|  |  | ||||||
| display_version |  | ||||||
|  |  | ||||||
| display_env |  | ||||||
|  |  | ||||||
| case ${cmd} in |  | ||||||
| "frr-node")  |  | ||||||
|   frr-node |  | ||||||
|   ;; |  | ||||||
| "display_env") |  | ||||||
|   display_env |  | ||||||
|   exit 0 |  | ||||||
|   ;; |  | ||||||
| "display") |  | ||||||
|   display |  | ||||||
|   exit 0 |  | ||||||
|   ;; |  | ||||||
| *) |  | ||||||
|   echo "invalid command ${cmd}" |  | ||||||
|   echo "valid v3 commands: frr-node display_env display "  |  | ||||||
|   exit 0 |  | ||||||
|   ;; |  | ||||||
| esac |  | ||||||
|  |  | ||||||
| exit 0 |  | ||||||
| @@ -12,8 +12,10 @@ | |||||||
|     <param name="without-version">yes</param> |     <param name="without-version">yes</param> | ||||||
|     <param name="versionrewrite-replacement">\1</param> |     <param name="versionrewrite-replacement">\1</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="tar"> |   <service mode="buildtime" name="tar" /> | ||||||
|     <param name="obsinfo">frr-k8s.obsinfo</param> |   <service mode="buildtime" name="recompress"> | ||||||
|  |     <param name="file">*.tar</param> | ||||||
|  |     <param name="compression">gz</param> | ||||||
|   </service> |   </service> | ||||||
|   <service name="go_modules"> |   <service name="go_modules"> | ||||||
|   </service> |   </service> | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ Release:        0.0.14 | |||||||
| Summary:        A kubernetes based daemonset that exposes a subset of the FRR API in a kubernetes compliant manner. | Summary:        A kubernetes based daemonset that exposes a subset of the FRR API in a kubernetes compliant manner. | ||||||
| License:        Apache-2.0 | License:        Apache-2.0 | ||||||
| URL:            https://github.com/metallb/frr-k8s | URL:            https://github.com/metallb/frr-k8s | ||||||
| Source:         frr-k8s-%{version}.tar | Source:         frr-k8s-%{version}.tar.gz | ||||||
| Source1:        vendor.tar.gz | Source1:        vendor.tar.gz | ||||||
| BuildRequires:  golang(API) = 1.22 | BuildRequires:  golang(API) = 1.22 | ||||||
| ExcludeArch:    s390 | ExcludeArch:    s390 | ||||||
|   | |||||||
| @@ -8,8 +8,10 @@ | |||||||
|     <param name="versionrewrite-pattern">v(.*)</param> |     <param name="versionrewrite-pattern">v(.*)</param> | ||||||
|     <param name="changesgenerate">enable</param> |     <param name="changesgenerate">enable</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="tar"> |   <service mode="buildtime" name="tar" /> | ||||||
|     <param name="obsinfo">hauler.obsinfo</param> |   <service mode="buildtime" name="recompress"> | ||||||
|  |     <param name="file">*.tar</param> | ||||||
|  |     <param name="compression">gz</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="set_version" /> |   <service mode="buildtime" name="set_version" /> | ||||||
|   <service name="go_modules"> |   <service name="go_modules"> | ||||||
|   | |||||||
| @@ -23,7 +23,7 @@ Release:        0 | |||||||
| Summary:        Airgap Swiss Army Knife | Summary:        Airgap Swiss Army Knife | ||||||
| License:        Apache-2.0 | License:        Apache-2.0 | ||||||
| URL:            https://github.com/hauler-dev/hauler | URL:            https://github.com/hauler-dev/hauler | ||||||
| Source:         hauler-%{version}.tar | Source:         hauler-%{version}.tar.gz | ||||||
| Source1:        vendor.tar.gz | Source1:        vendor.tar.gz | ||||||
| BuildRequires:  golang-packaging | BuildRequires:  golang-packaging | ||||||
| BuildRequires:  cosign | BuildRequires:  cosign | ||||||
|   | |||||||
| @@ -1,25 +1,26 @@ | |||||||
| # SPDX-License-Identifier: Apache-2.0 | # SPDX-License-Identifier: Apache-2.0 | ||||||
| #!BuildTag: %%IMG_PREFIX%%frr-k8s:v%%frr-k8s_version%% | #!BuildTag: %%IMG_PREFIX%%ip-address-manager:v%%ip-address-manager_version%% | ||||||
| #!BuildTag: %%IMG_PREFIX%%frr-k8s:v%%frr-k8s_version%%-%RELEASE% | #!BuildTag: %%IMG_PREFIX%%ip-address-manager:%%ip-address-manager_version%% | ||||||
|  | #!BuildTag: %%IMG_PREFIX%%ip-address-manager:%%ip-address-manager_version%%-%RELEASE% | ||||||
| #!BuildVersion: 15.6 | #!BuildVersion: 15.6 | ||||||
| ARG SLE_VERSION | ARG SLE_VERSION | ||||||
| FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro | FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro | ||||||
| 
 | 
 | ||||||
| FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base | FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base | ||||||
| COPY --from=micro / /installroot/ | COPY --from=micro / /installroot/ | ||||||
| RUN zypper --installroot /installroot --non-interactive install --no-recommends frr-k8s; zypper -n clean; rm -rf /var/log/* | RUN zypper --installroot /installroot --non-interactive install --no-recommends ip-address-manager shadow; zypper -n clean; rm -rf /var/log/* | ||||||
| 
 | 
 | ||||||
| FROM micro AS final | FROM micro AS final | ||||||
| # Define labels according to https://en.opensuse.org/Building_derived_containers | # Define labels according to https://en.opensuse.org/Building_derived_containers | ||||||
| # labelprefix=com.suse.application.endpoint-copier-operator | # labelprefix=com.suse.application.ip-address-manager | ||||||
| LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | ||||||
| LABEL org.opencontainers.image.title="SLE frr-k8s Container Image" | LABEL org.opencontainers.image.title="SLE ip-address-manager Container Image" | ||||||
| LABEL org.opencontainers.image.description="frr-k8s based on the SLE Base Container Image." | LABEL org.opencontainers.image.description="ip-address-manager based on the SLE Base Container Image." | ||||||
| LABEL org.opencontainers.image.version="%%frr-k8s_version%%" | LABEL org.opencontainers.image.version="%%ip-address-manager_version%%" | ||||||
| LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" | LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" | ||||||
| LABEL org.opencontainers.image.created="%BUILDTIME%" | LABEL org.opencontainers.image.created="%BUILDTIME%" | ||||||
| LABEL org.opencontainers.image.vendor="SUSE LLC" | LABEL org.opencontainers.image.vendor="SUSE LLC" | ||||||
| LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%frr-k8s:v%%frr-k8s_version%%-%RELEASE%" | LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ip-address-manager:%%ip-address-manager_version%%-%RELEASE%" | ||||||
| LABEL org.openbuildservice.disturl="%DISTURL%" | LABEL org.openbuildservice.disturl="%DISTURL%" | ||||||
| LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | ||||||
| LABEL com.suse.eula="SUSE Combined EULA February 2024" | LABEL com.suse.eula="SUSE Combined EULA February 2024" | ||||||
| @@ -28,6 +29,8 @@ LABEL com.suse.image-type="application" | |||||||
| LABEL com.suse.release-stage="released" | LABEL com.suse.release-stage="released" | ||||||
| # endlabelprefix | # endlabelprefix | ||||||
| 
 | 
 | ||||||
| #Install frr-k8s |  | ||||||
| COPY --from=base /installroot / | COPY --from=base /installroot / | ||||||
| ENTRYPOINT ["/frr-k8s"] | RUN mv /usr/bin/ip-address-manager /manager | ||||||
|  | # Use uid of nonroot user (65532) because kubernetes expects numeric user when applying pod security policies | ||||||
|  | USER 65532 | ||||||
|  | ENTRYPOINT [ "/manager" ] | ||||||
| @@ -3,8 +3,8 @@ | |||||||
|   <service mode="buildtime" name="docker_label_helper"/> |   <service mode="buildtime" name="docker_label_helper"/> | ||||||
|   <service name="replace_using_package_version" mode="buildtime"> |   <service name="replace_using_package_version" mode="buildtime"> | ||||||
|     <param name="file">Dockerfile</param> |     <param name="file">Dockerfile</param> | ||||||
|     <param name="regex">%%frr-k8s_version%%</param> |     <param name="regex">%%ip-address-manager_version%%</param> | ||||||
|     <param name="package">frr-k8s</param> |     <param name="package">ip-address-manager</param> | ||||||
|     <param name="parse-version">patch</param> |     <param name="parse-version">patch</param> | ||||||
|   </service> |   </service> | ||||||
|   <service name="replace_using_env" mode="buildtime"> |   <service name="replace_using_env" mode="buildtime"> | ||||||
							
								
								
									
										23
									
								
								ip-address-manager/_service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								ip-address-manager/_service
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | |||||||
|  | <services> | ||||||
|  |  <service name="obs_scm"> | ||||||
|  |     <param name="url">https://github.com/metal3-io/ip-address-manager</param> | ||||||
|  |     <param name="scm">git</param> | ||||||
|  |     <param name="revision">v1.7.2</param> | ||||||
|  |     <param name="version">_auto_</param> | ||||||
|  |     <param name="versionformat">@PARENT_TAG@</param> | ||||||
|  |     <param name="changesgenerate">enable</param> | ||||||
|  |     <param name="changesauthor">steven.hardy@suse.com</param> | ||||||
|  |     <param name="match-tag">v*</param> | ||||||
|  |     <param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param> | ||||||
|  |     <param name="without-version">yes</param> | ||||||
|  |     <param name="versionrewrite-replacement">\1</param> | ||||||
|  |   </service> | ||||||
|  |   <service mode="buildtime" name="tar" /> | ||||||
|  |   <service mode="buildtime" name="recompress"> | ||||||
|  |     <param name="file">*.tar</param> | ||||||
|  |     <param name="compression">gz</param> | ||||||
|  |   </service> | ||||||
|  |    <service name="go_modules"> | ||||||
|  |   </service> | ||||||
|  |   <service mode="buildtime" name="set_version" /> | ||||||
|  | </services> | ||||||
							
								
								
									
										51
									
								
								ip-address-manager/ip-address-manager.spec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								ip-address-manager/ip-address-manager.spec
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | |||||||
|  | # | ||||||
|  | # spec file for package ip-address-manager | ||||||
|  | # | ||||||
|  | # Copyright (c) 2023 SUSE LLC | ||||||
|  | # | ||||||
|  | # All modifications and additions to the file contributed by third parties | ||||||
|  | # remain the property of their copyright owners, unless otherwise agreed | ||||||
|  | # upon. The license for this file, and modifications and additions to the | ||||||
|  | # file, is the same license as for the pristine package itself (unless the | ||||||
|  | # license for the pristine package is not an Open Source License, in which | ||||||
|  | # case the license is the MIT License). An "Open Source License" is a | ||||||
|  | # license that conforms to the Open Source Definition (Version 1.9) | ||||||
|  | # published by the Open Source Initiative. | ||||||
|  |  | ||||||
|  | # Please submit bugfixes or comments via https://bugs.opensuse.org/ | ||||||
|  | # | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Name:           ip-address-manager | ||||||
|  | Version:        1.7.2 | ||||||
|  | Release:        0 | ||||||
|  | Summary:        Metal3 IPAM controller | ||||||
|  | License:        Apache-2.0 | ||||||
|  | URL:            https://github.com/metal3-io/ip-address-manager | ||||||
|  | Source:         ip-address-manager-%{version}.tar.gz | ||||||
|  | Source1:        vendor.tar.gz | ||||||
|  | BuildRequires:  golang(API) = 1.22 | ||||||
|  | ExcludeArch:    s390 | ||||||
|  | ExcludeArch:    %{ix86} | ||||||
|  |  | ||||||
|  | %description | ||||||
|  |  | ||||||
|  | Metal3 IPAM controller | ||||||
|  |  | ||||||
|  | %prep | ||||||
|  | %autosetup -a1 -n ip-address-manager-%{version} | ||||||
|  |  | ||||||
|  | %build | ||||||
|  | go build \ | ||||||
|  |    -mod=vendor \ | ||||||
|  |    -buildmode=pie \ | ||||||
|  |  | ||||||
|  | %install | ||||||
|  | install -D -m0755 ip-address-manager %{buildroot}%{_bindir}/ip-address-manager | ||||||
|  |  | ||||||
|  | %files | ||||||
|  | %license LICENSE | ||||||
|  | %doc README.md | ||||||
|  | %{_bindir}/ip-address-manager | ||||||
|  |  | ||||||
|  | %changelog | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| # SPDX-License-Identifier: Apache-2.0 | # SPDX-License-Identifier: Apache-2.0 | ||||||
| #!BuildTag: %%IMG_PREFIX%%ironic:26.1.2.3 | #!BuildTag: %%IMG_PREFIX%%ironic:26.1.2.0 | ||||||
| #!BuildTag: %%IMG_PREFIX%%ironic:26.1.2.3-%RELEASE% | #!BuildTag: %%IMG_PREFIX%%ironic:26.1.2.0-%RELEASE% | ||||||
| #!BuildVersion: 15.6 | #!BuildVersion: 15.6 | ||||||
|  |  | ||||||
| ARG SLE_VERSION | ARG SLE_VERSION | ||||||
| @@ -8,14 +8,7 @@ FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro | |||||||
|  |  | ||||||
| FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base | FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base | ||||||
|  |  | ||||||
| #!ArchExclusiveLine: x86_64 | RUN set -euo pipefail; zypper -n  in --no-recommends gcc git make xz-devel shim dosfstools mtools glibc-extra grub2-x86_64-efi grub2; zypper -n clean; rm -rf /var/log/* | ||||||
| RUN if [ "$(uname -m)" = "x86_64" ];then \ |  | ||||||
|       zypper -n  in --no-recommends gcc git make xz-devel shim dosfstools mtools glibc-extra grub2-x86_64-efi grub2; zypper -n clean; rm -rf /var/log/*; \ |  | ||||||
|     fi |  | ||||||
| #!ArchExclusiveLine: aarch64 |  | ||||||
| RUN if [ "$(uname -m)" = "aarch64" ];then \ |  | ||||||
|       zypper -n rm kubic-locale-archive-2.31-10.36.noarch openssl-1_1-1.1.1l-150500.17.37.1.aarch64; zypper -n in --no-recommends gcc git make xz-devel openssl-3 mokutil shim dosfstools mtools glibc glibc-extra grub2 grub2-arm64-efi; zypper -n clean; rm -rf /var/log/* ;\ |  | ||||||
|     fi |  | ||||||
| WORKDIR /tmp | WORKDIR /tmp | ||||||
| COPY prepare-efi.sh /bin/ | COPY prepare-efi.sh /bin/ | ||||||
| RUN set -euo pipefail; chmod +x /bin/prepare-efi.sh | RUN set -euo pipefail; chmod +x /bin/prepare-efi.sh | ||||||
| @@ -23,16 +16,8 @@ RUN /bin/prepare-efi.sh | |||||||
|  |  | ||||||
| COPY --from=micro / /installroot/ | COPY --from=micro / /installroot/ | ||||||
| RUN sed -i -e 's%^# rpm.install.excludedocs = no.*%rpm.install.excludedocs = yes%g' /etc/zypp/zypp.conf | RUN sed -i -e 's%^# rpm.install.excludedocs = no.*%rpm.install.excludedocs = yes%g' /etc/zypp/zypp.conf | ||||||
|  | RUN zypper --installroot /installroot --non-interactive install --no-recommends python311-devel python311 python311-pip python-dracclient python311-sushy-oem-idrac python311-proliantutils python311-sushy python3-ironicclient git curl sles-release tar gzip vim gawk dnsmasq dosfstools apache2 inotify-tools ipcalc ipmitool iproute2 procps qemu-tools sqlite3 util-linux xorriso tftp syslinux ipxe-bootimgs crudini openstack-ironic | ||||||
|  |  | ||||||
| #!ArchExclusiveLine: x86_64 |  | ||||||
| RUN if [ "$(uname -m)" = "x86_64" ];then \ |  | ||||||
|       zypper --installroot /installroot --non-interactive install --no-recommends syslinux python311-devel python311 python311-pip python-dracclient python311-sushy-oem-idrac python311-proliantutils python311-sushy python3-ironicclient git curl sles-release tar gzip vim gawk dnsmasq dosfstools apache2 apache2-mod_wsgi inotify-tools ipcalc ipmitool iproute2 procps qemu-tools sqlite3 util-linux xorriso tftp ipxe-bootimgs python311-sushy-tools crudini openstack-ironic openstack-ironic-inspector-api; \ |  | ||||||
|     fi |  | ||||||
| #!ArchExclusiveLine: aarch64 |  | ||||||
| RUN if [ "$(uname -m)" = "aarch64" ];then \ |  | ||||||
|       zypper --installroot /installroot --non-interactive install --no-recommends python311-devel python311 python311-pip python-dracclient python311-sushy-oem-idrac python311-proliantutils python311-sushy python3-ironicclient git curl sles-release tar gzip vim gawk dnsmasq dosfstools apache2 apache2-mod_wsgi inotify-tools ipcalc ipmitool iproute2 procps qemu-tools sqlite3 util-linux xorriso tftp ipxe-bootimgs python311-sushy-tools crudini openstack-ironic openstack-ironic-inspector-api; \ |  | ||||||
|     fi |  | ||||||
|      |  | ||||||
| # DATABASE | # DATABASE | ||||||
| RUN mkdir -p /installroot/var/lib/ironic && \ | RUN mkdir -p /installroot/var/lib/ironic && \ | ||||||
|   /installroot/usr/bin/sqlite3 /installroot/var/lib/ironic/ironic.sqlite "pragma journal_mode=wal" && \ |   /installroot/usr/bin/sqlite3 /installroot/var/lib/ironic/ironic.sqlite "pragma journal_mode=wal" && \ | ||||||
| @@ -46,8 +31,8 @@ LABEL org.opencontainers.image.description="Openstack Ironic based on the SLE Ba | |||||||
| LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" | LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" | ||||||
| LABEL org.opencontainers.image.created="%BUILDTIME%" | LABEL org.opencontainers.image.created="%BUILDTIME%" | ||||||
| LABEL org.opencontainers.image.vendor="SUSE LLC" | LABEL org.opencontainers.image.vendor="SUSE LLC" | ||||||
| LABEL org.opencontainers.image.version="26.1.2.3" | LABEL org.opencontainers.image.version="26.1.2.0" | ||||||
| LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic:26.1.2.3-%RELEASE%" | LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic:26.1.2.0-%RELEASE%" | ||||||
| LABEL org.openbuildservice.disturl="%DISTURL%" | LABEL org.openbuildservice.disturl="%DISTURL%" | ||||||
| LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | ||||||
| LABEL com.suse.eula="SUSE Combined EULA February 2024" | LABEL com.suse.eula="SUSE Combined EULA February 2024" | ||||||
| @@ -79,15 +64,7 @@ RUN mkdir -p $GRUB_DIR | |||||||
|  |  | ||||||
| # IRONIC # | # IRONIC # | ||||||
| RUN cp /usr/share/ipxe/undionly.kpxe /tftpboot/undionly.kpxe | RUN cp /usr/share/ipxe/undionly.kpxe /tftpboot/undionly.kpxe | ||||||
| #!ArchExclusiveLine: x86_64 | RUN cp /usr/share/ipxe/ipxe-x86_64.efi /tftpboot/ipxe.efi | ||||||
| RUN if [ "$(uname -m)" = "x86_64" ];then \ |  | ||||||
|       cp /usr/share/ipxe/ipxe-x86_64.efi /tftpboot/ipxe.efi ;\ |  | ||||||
|     fi |  | ||||||
| #!ArchExclusiveLine: x86_64 |  | ||||||
| RUN if [ "$(uname -m)" = "aarch64" ]; then\  |  | ||||||
|      cp /usr/share/ipxe/snp-arm64.efi /tftpboot/ipxe.efi; cp /usr/share/ipxe/snp-arm64.efi /tftpboot/snp-arm64.efi; cp /usr/share/ipxe/snp-arm64.efi /tftpboot/snp.efi ;\ |  | ||||||
|     fi |  | ||||||
|      |  | ||||||
| COPY --from=base /tmp/esp.img /tmp/uefi_esp.img | COPY --from=base /tmp/esp.img /tmp/uefi_esp.img | ||||||
|  |  | ||||||
| COPY ironic.conf.j2 /etc/ironic/ | COPY ironic.conf.j2 /etc/ironic/ | ||||||
|   | |||||||
| @@ -10,15 +10,17 @@ Listen {{ env.VMEDIA_TLS_PORT }} | |||||||
|     SSLCertificateFile {{ env.IRONIC_VMEDIA_CERT_FILE }} |     SSLCertificateFile {{ env.IRONIC_VMEDIA_CERT_FILE }} | ||||||
|     SSLCertificateKeyFile {{ env.IRONIC_VMEDIA_KEY_FILE }} |     SSLCertificateKeyFile {{ env.IRONIC_VMEDIA_KEY_FILE }} | ||||||
|  |  | ||||||
|     <Directory "/shared"> |     <Directory ~ "/shared/html"> | ||||||
|         AllowOverride None |          Order deny,allow | ||||||
|         Require all granted |          deny from all | ||||||
|     </Directory> |     </Directory> | ||||||
|  |     <Directory ~ "/shared/html/(redfish|ilo)/"> | ||||||
|     <Directory "/shared/html"> |          Order allow,deny | ||||||
|         Options Indexes FollowSymLinks |          allow from all | ||||||
|         AllowOverride None |     </Directory> | ||||||
|         Require all granted |     <Directory ~ "/shared/html/images/"> | ||||||
|  |          Order allow,deny | ||||||
|  |          allow from all | ||||||
|     </Directory> |     </Directory> | ||||||
| </VirtualHost> | </VirtualHost> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -83,7 +83,7 @@ send_sensor_data = {{ env.SEND_SENSOR_DATA }} | |||||||
| # Power state is checked every 60 seconds and BMC activity should | # Power state is checked every 60 seconds and BMC activity should | ||||||
| # be avoided more often than once every sixty seconds. | # be avoided more often than once every sixty seconds. | ||||||
| send_sensor_data_interval = 160 | send_sensor_data_interval = 160 | ||||||
| bootloader = {{ env.IRONIC_BOOT_BASE_URL }}/uefi_esp.img | bootloader = http://{{ env.IRONIC_URL_HOST }}:{{ env.HTTP_PORT }}/uefi_esp.img | ||||||
| verify_step_priority_override = management.clear_job_queue:90 | verify_step_priority_override = management.clear_job_queue:90 | ||||||
| # We don't use this feature, and it creates an additional load on the database | # We don't use this feature, and it creates an additional load on the database | ||||||
| node_history = False | node_history = False | ||||||
| @@ -112,7 +112,7 @@ default_boot_option = local | |||||||
| erase_devices_metadata_priority = 10 | erase_devices_metadata_priority = 10 | ||||||
| erase_devices_priority = 0 | erase_devices_priority = 0 | ||||||
| http_root = /shared/html/ | http_root = /shared/html/ | ||||||
| http_url = {{ env.IRONIC_BOOT_BASE_URL }} | http_url = http://{{ env.IRONIC_URL_HOST }}:{{ env.HTTP_PORT }} | ||||||
| fast_track = {{ env.IRONIC_FAST_TRACK }} | fast_track = {{ env.IRONIC_FAST_TRACK }} | ||||||
| {% if env.IRONIC_BOOT_ISO_SOURCE %} | {% if env.IRONIC_BOOT_ISO_SOURCE %} | ||||||
| ramdisk_image_download_source = {{ env.IRONIC_BOOT_ISO_SOURCE }} | ramdisk_image_download_source = {{ env.IRONIC_BOOT_ISO_SOURCE }} | ||||||
|   | |||||||
| @@ -6,37 +6,22 @@ ARCH=$(uname -m) | |||||||
| DEST=${2:-/tmp/esp.img} | DEST=${2:-/tmp/esp.img} | ||||||
| OS=${1:-sles} | OS=${1:-sles} | ||||||
|  |  | ||||||
| if [ $ARCH = "aarch64" ]; then | BOOTEFI=BOOTX64.efi | ||||||
|   BOOTEFI=BOOTAA64.EFI | GRUBEFI=grubx64.efi | ||||||
|   GRUBEFI=grubaa64.efi |  | ||||||
| else |  | ||||||
|   BOOTEFI=BOOTX64.efi |  | ||||||
|   GRUBEFI=grubx64.efi |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| dd bs=1024 count=6400 if=/dev/zero of=$DEST | dd bs=1024 count=6400 if=/dev/zero of=$DEST | ||||||
| mkfs.msdos -F 12 -n 'ESP_IMAGE' $DEST | mkfs.msdos -F 12 -n 'ESP_IMAGE' $DEST | ||||||
|  |  | ||||||
| mkdir -p /boot/efi/EFI/BOOT | mkdir -p /boot/efi/EFI/BOOT | ||||||
|  | cp -L /usr/lib64/efi/shim.efi /boot/efi/EFI/BOOT/$BOOTEFI | ||||||
| mkdir -p /boot/efi/EFI/$OS | mkdir -p /boot/efi/EFI/$OS | ||||||
| if [ $ARCH = "aarch64" ]; then | #cp /usr/share/grub2/x86_64-efi/grub.efi /boot/efi/EFI/$OS/$GRUBEFI | ||||||
|   cp -L /usr/share/efi/aarch64/shim.efi /boot/efi/EFI/BOOT/$BOOTEFI | cp /usr/share/grub2/x86_64-efi/grub.efi /boot/efi/EFI/$OS/grub.efi | ||||||
|   cp -L /usr/share/efi/aarch64/grub.efi /boot/efi/EFI/BOOT/grub.efi |  | ||||||
|   cp /usr/share/grub2/arm64-efi/grub.efi /boot/efi/EFI/$OS/grubaa64.efi |  | ||||||
| else |  | ||||||
|   cp -L /usr/lib64/efi/shim.efi /boot/efi/EFI/BOOT/$BOOTEFI |  | ||||||
|   #cp /usr/share/grub2/x86_64-efi/grub.efi /boot/efi/EFI/$OS/$GRUBEFI |  | ||||||
|   cp /usr/share/grub2/x86_64-efi/grub.efi /boot/efi/EFI/$OS/grub.efi |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| mmd -i $DEST EFI | mmd -i $DEST EFI | ||||||
| mmd -i $DEST EFI/BOOT | mmd -i $DEST EFI/BOOT | ||||||
| mcopy -i $DEST -v /boot/efi/EFI/BOOT/$BOOTEFI ::EFI/BOOT | mcopy -i $DEST -v /boot/efi/EFI/BOOT/$BOOTEFI ::EFI/BOOT | ||||||
| if [ $ARCH = "aarch64" ]; then | #mcopy -i $DEST -v /boot/efi/EFI/$OS/$GRUBEFI ::EFI/BOOT | ||||||
|   mcopy -i $DEST -v /boot/efi/EFI/BOOT/grub.efi ::EFI/BOOT | mcopy -i $DEST -v /boot/efi/EFI/$OS/grub.efi ::EFI/BOOT | ||||||
|   mcopy -i $DEST -v /boot/efi/EFI/$OS/$GRUBEFI ::EFI/BOOT |  | ||||||
| else |  | ||||||
|   mcopy -i $DEST -v /boot/efi/EFI/$OS/grub.efi ::EFI/BOOT |  | ||||||
| fi  |  | ||||||
| mdir -i $DEST ::EFI/BOOT; | mdir -i $DEST ::EFI/BOOT; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -3,14 +3,6 @@ | |||||||
| # Ramdisk logs path | # Ramdisk logs path | ||||||
| LOG_DIR="/shared/log/ironic/deploy" | LOG_DIR="/shared/log/ironic/deploy" | ||||||
|  |  | ||||||
| # The ironic container creates the directory, wait for |  | ||||||
| # it to exist before running inotifywait or it can fail causing |  | ||||||
| # a spurious restart |  | ||||||
| while [ ! -d "${LOG_DIR}" ]; do |  | ||||||
|   echo "Waiting for ${LOG_DIR}" |  | ||||||
|   sleep 5 |  | ||||||
| done |  | ||||||
|  |  | ||||||
| inotifywait -m "${LOG_DIR}" -e close_write | | inotifywait -m "${LOG_DIR}" -e close_write | | ||||||
|     while read -r path _action file; do |     while read -r path _action file; do | ||||||
|         echo "************ Contents of ${path}/${file} ramdisk log file bundle **************" |         echo "************ Contents of ${path}/${file} ramdisk log file bundle **************" | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| # SPDX-License-Identifier: Apache-2.0 | # SPDX-License-Identifier: Apache-2.0 | ||||||
| #!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader:3.0.1 | #!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader:3.0.0 | ||||||
| #!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader:3.0.1-%RELEASE% | #!BuildTag: %%IMG_PREFIX%%ironic-ipa-downloader:3.0.0-%RELEASE% | ||||||
| #!BuildVersion: 15.6 | #!BuildVersion: 15.6 | ||||||
| ARG SLE_VERSION | ARG SLE_VERSION | ||||||
| FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro | FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro | ||||||
| @@ -8,14 +8,7 @@ FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro | |||||||
| FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base | FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base | ||||||
| COPY --from=micro / /installroot/ | COPY --from=micro / /installroot/ | ||||||
| RUN sed -i -e 's%^# rpm.install.excludedocs = no.*%rpm.install.excludedocs = yes%g' /etc/zypp/zypp.conf | RUN sed -i -e 's%^# rpm.install.excludedocs = no.*%rpm.install.excludedocs = yes%g' /etc/zypp/zypp.conf | ||||||
| #!ArchExclusiveLine: x86_64 | RUN zypper --installroot /installroot --non-interactive install --no-recommends ironic-ipa-ramdisk-x86_64 python311-devel python311 python311-pip tar gawk git curl xz fakeroot shadow sed cpio; zypper -n clean; rm -rf /var/log/* | ||||||
| RUN if [ "$(uname -m)" = "x86_64" ];then \ |  | ||||||
|   zypper --installroot /installroot --non-interactive install --no-recommends ironic-ipa-ramdisk-x86_64 python311-devel python311 python311-pip tar gawk git curl xz fakeroot shadow sed cpio; zypper -n clean; rm -rf /var/log/*; \ |  | ||||||
|   fi |  | ||||||
| #!ArchExclusiveLine: aarch64 |  | ||||||
| RUN if [ "$(uname -m)" = "aarch64" ];then \ |  | ||||||
|   zypper --installroot /installroot --non-interactive install --no-recommends ironic-ipa-ramdisk-aarch64 python311-devel python311 python311-pip tar gawk git curl xz fakeroot shadow sed cpio; zypper -n clean; rm -rf /var/log/*; \ |  | ||||||
|   fi |  | ||||||
| #RUN zypper --installroot /installroot --non-interactive install --no-recommends sles-release; | #RUN zypper --installroot /installroot --non-interactive install --no-recommends sles-release; | ||||||
| RUN cp /usr/bin/getopt /installroot/ | RUN cp /usr/bin/getopt /installroot/ | ||||||
|  |  | ||||||
| @@ -26,11 +19,11 @@ FROM micro AS final | |||||||
| LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | ||||||
| LABEL org.opencontainers.image.title="SLE Based Ironic IPA Downloader Container Image" | LABEL org.opencontainers.image.title="SLE Based Ironic IPA Downloader Container Image" | ||||||
| LABEL org.opencontainers.image.description="ironic-ipa-downloader based on the SLE Base Container Image." | LABEL org.opencontainers.image.description="ironic-ipa-downloader based on the SLE Base Container Image." | ||||||
| LABEL org.opencontainers.image.version="3.0.1" | LABEL org.opencontainers.image.version="3.0.0" | ||||||
| LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/" | LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/" | ||||||
| LABEL org.opencontainers.image.created="%BUILDTIME%" | LABEL org.opencontainers.image.created="%BUILDTIME%" | ||||||
| LABEL org.opencontainers.image.vendor="SUSE LLC" | LABEL org.opencontainers.image.vendor="SUSE LLC" | ||||||
| LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic-ipa-downloader:3.0.1-%RELEASE%" | LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic-ipa-downloader:3.0.0-%RELEASE%" | ||||||
| LABEL org.openbuildservice.disturl="%DISTURL%" | LABEL org.openbuildservice.disturl="%DISTURL%" | ||||||
| LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | ||||||
| LABEL com.suse.eula="SUSE Combined EULA February 2024" | LABEL com.suse.eula="SUSE Combined EULA February 2024" | ||||||
|   | |||||||
| @@ -1,6 +1,12 @@ | |||||||
| <services> | <services> | ||||||
|   <service mode="buildtime" name="kiwi_metainfo_helper"/> |   <service mode="buildtime" name="kiwi_metainfo_helper"/> | ||||||
|   <service mode="buildtime" name="docker_label_helper"/> |   <service mode="buildtime" name="docker_label_helper"/> | ||||||
|  |   <service name="replace_using_package_version" mode="buildtime"> | ||||||
|  |     <param name="file">Dockerfile</param> | ||||||
|  |     <param name="regex">%%ironic-ipa-ramdisk-x86_64_version%%</param> | ||||||
|  |     <param name="package">ironic-ipa-ramdisk-x86_64</param> | ||||||
|  |     <param name="parse-version">patch</param> | ||||||
|  |   </service> | ||||||
|   <service name="replace_using_env" mode="buildtime"> |   <service name="replace_using_env" mode="buildtime"> | ||||||
|     <param name="file">Dockerfile</param> |     <param name="file">Dockerfile</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> | ||||||
|   | |||||||
| @@ -8,10 +8,10 @@ export no_proxy=${no_proxy:-$NO_PROXY} | |||||||
|  |  | ||||||
| # Which image should we use | # Which image should we use | ||||||
| if [ -z "${IPA_BASEURI}" ]; then | if [ -z "${IPA_BASEURI}" ]; then | ||||||
|   # SLES BASED IPA - ironic-ipa-ramdisk-x86_64 package |   # SLES BASED IPA - openstack-ironic-image-x86_64 package | ||||||
|   mkdir -p /shared/html/images |   mkdir -p /shared/html/images | ||||||
|   cp /tmp/initrd.xz /shared/html/images/ironic-python-agent.initramfs |   cp /tmp/initrd.xz /shared/html/images/ironic-python-agent.initramfs | ||||||
|   cp /tmp/openstack-ironic-image*.kernel /shared/html/images/ironic-python-agent.kernel |   cp /tmp/openstack-ironic-image*.x86_64*.kernel /shared/html/images/ironic-python-agent.kernel | ||||||
| else | else | ||||||
|   FILENAME=ironic-python-agent |   FILENAME=ironic-python-agent | ||||||
|   FILENAME_EXT=.tar |   FILENAME_EXT=.tar | ||||||
| @@ -68,4 +68,4 @@ if [ -d "/tmp/ironic-certificates" ]; then | |||||||
|   mkdir -p etc/ironic-python-agent.d/ca-certs |   mkdir -p etc/ironic-python-agent.d/ca-certs | ||||||
|   cp /tmp/ironic-certificates/* etc/ironic-python-agent.d/ca-certs/ |   cp /tmp/ironic-certificates/* etc/ironic-python-agent.d/ca-certs/ | ||||||
|   find . | fakeroot -i ../initrd.fakeroot cpio -o -H newc | xz --check=crc32 --x86 --lzma2 --fast > /shared/html/images/ironic-python-agent.initramfs |   find . | fakeroot -i ../initrd.fakeroot cpio -o -H newc | xz --check=crc32 --x86 --lzma2 --fast > /shared/html/images/ironic-python-agent.initramfs | ||||||
| fi | fi | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <image schemaversion="7.4" name="openstack-ironic-image-301"> | <image schemaversion="7.4" name="openstack-ironic-image-201"> | ||||||
|     <description type="system"> |     <description type="system"> | ||||||
|         <author>Cloud developers</author> |         <author>Cloud developers</author> | ||||||
|         <contact>cloud-devel@suse.de</contact> |         <contact>cloud-devel@suse.de</contact> | ||||||
| @@ -116,9 +116,8 @@ | |||||||
|         <package name="vim"/> |         <package name="vim"/> | ||||||
|         <package name="grub2"/> |         <package name="grub2"/> | ||||||
|         <package name="grub2-x86_64-efi" arch="x86_64"/> |         <package name="grub2-x86_64-efi" arch="x86_64"/> | ||||||
|         <package name="grub2-arm64-efi" arch="aarch64"/> |         <package name="grub2-i386-pc"/> | ||||||
|         <package name="grub2-i386-pc" arch="x86_64"/> |         <package name="syslinux"/> | ||||||
|         <package name="syslinux" arch="x86_64"/> |  | ||||||
|         <package name="lvm2"/> |         <package name="lvm2"/> | ||||||
|         <package name="plymouth"/> |         <package name="plymouth"/> | ||||||
|         <package name="fontconfig"/> |         <package name="fontconfig"/> | ||||||
| @@ -136,10 +135,12 @@ | |||||||
|         <package name="openstack-ironic-python-agent"/> |         <package name="openstack-ironic-python-agent"/> | ||||||
|         <package name="hdparm"/> |         <package name="hdparm"/> | ||||||
|         <package name="qemu-tools"/> |         <package name="qemu-tools"/> | ||||||
|         <package name="python311-proliantutils"/> |         <package name="python311-proliantutils" arch="x86_64"/> | ||||||
|         <package name="lshw"/> |         <package name="lshw"/> | ||||||
|         <package name="dmidecode"/> |         <package name="dmidecode" arch="aarch64"/> | ||||||
|         <package name="efibootmgr"/> |         <package name="dmidecode" arch="x86_64"/> | ||||||
|  |         <package name="efibootmgr" arch="aarch64" /> | ||||||
|  |         <package name="efibootmgr" arch="x86_64" /> | ||||||
|         <package name="gptfdisk"/> |         <package name="gptfdisk"/> | ||||||
|         <package name="open-iscsi"/> |         <package name="open-iscsi"/> | ||||||
|         <package name="hwinfo"/> |         <package name="hwinfo"/> | ||||||
| @@ -156,6 +157,7 @@ | |||||||
|     </packages> |     </packages> | ||||||
|  |  | ||||||
|     <packages type="kis"> |     <packages type="kis"> | ||||||
|  |         <package name="gfxboot-branding-SLE"/> | ||||||
|         <package name="dracut-kiwi-oem-repart"/> |         <package name="dracut-kiwi-oem-repart"/> | ||||||
|         <package name="dracut-kiwi-oem-dump"/> |         <package name="dracut-kiwi-oem-dump"/> | ||||||
|     </packages>  |     </packages>  | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| Name:           ironic-ipa-ramdisk | Name:           ironic-ipa-ramdisk | ||||||
| Version:        3.0.1 | Version:        3.0.0 | ||||||
| Release:        0 | Release:        0 | ||||||
| Summary:        Kernel and ramdisk image for OpenStack Ironic | Summary:        Kernel and ramdisk image for OpenStack Ironic | ||||||
| License:        SUSE-EULA | License:        SUSE-EULA | ||||||
| @@ -49,12 +49,7 @@ BuildRequires:  fontconfig | |||||||
| BuildRequires:  fonts-config | BuildRequires:  fonts-config | ||||||
| BuildRequires:  gptfdisk | BuildRequires:  gptfdisk | ||||||
| BuildRequires:  grub2 | BuildRequires:  grub2 | ||||||
| %ifarch x86_64 |  | ||||||
| BuildRequires:  grub2-x86_64-efi | BuildRequires:  grub2-x86_64-efi | ||||||
| %endif |  | ||||||
| %ifarch aarch64 |  | ||||||
| BuildRequires:  grub2-arm64-efi |  | ||||||
| %endif |  | ||||||
| BuildRequires:  haveged | BuildRequires:  haveged | ||||||
| BuildRequires:  hdparm | BuildRequires:  hdparm | ||||||
| BuildRequires:  hwinfo | BuildRequires:  hwinfo | ||||||
| @@ -98,14 +93,19 @@ BuildRequires:  plymouth-dracut | |||||||
| BuildRequires:  plymouth-theme-bgrt | BuildRequires:  plymouth-theme-bgrt | ||||||
| BuildRequires:  dracut-kiwi-oem-dump | BuildRequires:  dracut-kiwi-oem-dump | ||||||
| BuildRequires:  dracut-kiwi-oem-repart | BuildRequires:  dracut-kiwi-oem-repart | ||||||
|  | BuildRequires:  gfxboot-branding-SLE | ||||||
| BuildRequires:  grub2-branding-SLE | BuildRequires:  grub2-branding-SLE | ||||||
| BuildRequires:  open-iscsi | BuildRequires:  open-iscsi | ||||||
| BuildRequires:  plymouth-branding-SLE | BuildRequires:  plymouth-branding-SLE | ||||||
| BuildRequires:  lshw | BuildRequires:  lshw | ||||||
| BuildRequires:  kbd | BuildRequires:  kbd | ||||||
|  | %ifarch aarch64 | ||||||
| BuildRequires:  dmidecode | BuildRequires:  dmidecode | ||||||
| BuildRequires:  efibootmgr | BuildRequires:  efibootmgr | ||||||
|  | %endif | ||||||
| %ifarch x86_64 | %ifarch x86_64 | ||||||
|  | BuildRequires:  dmidecode | ||||||
|  | BuildRequires:  efibootmgr | ||||||
| BuildRequires:  syslinux | BuildRequires:  syslinux | ||||||
| %endif | %endif | ||||||
|  |  | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| @@ -1,20 +1,17 @@ | |||||||
| #!BuildTag: %%IMG_PREFIX%%kiwi-builder:%%kiwi_version%%.1-%RELEASE% | #!BuildTag: kiwi-builder:10.1 | ||||||
| #!BuildTag: %%IMG_PREFIX%%kiwi-builder:%%kiwi_version%%.1 | FROM registry.suse.com/bci/kiwi:10.1.10 | ||||||
|  | MAINTAINER SUSE LLC (https://www.suse.com/) | ||||||
| ARG KIWIVERSION="10.2.12" |  | ||||||
| FROM registry.suse.com/bci/kiwi:${KIWIVERSION} |  | ||||||
| ARG KIWIVERSION |  | ||||||
|  |  | ||||||
| # Define labels according to https://en.opensuse.org/Building_derived_containers | # Define labels according to https://en.opensuse.org/Building_derived_containers | ||||||
| # labelprefix=com.suse.application.akri | # labelprefix=com.suse.application.akri | ||||||
| LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" | ||||||
| LABEL org.opencontainers.image.title="SLE Kiwi Builder Container Image" | LABEL org.opencontainers.image.title="SLE Kiwi Builder Container Image" | ||||||
| LABEL org.opencontainers.image.description="kiwi-builder based on the SLE Base Container Image." | LABEL org.opencontainers.image.description="kiwi-builder based on the SLE Base Container Image." | ||||||
| LABEL org.opencontainers.image.version="%%kiwi_version%%" | LABEL org.opencontainers.image.version="%PACKAGE_VERSION%" | ||||||
| LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/" | LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/" | ||||||
| LABEL org.opencontainers.image.created="%BUILDTIME%" | LABEL org.opencontainers.image.created="%BUILDTIME%" | ||||||
| LABEL org.opencontainers.image.vendor="SUSE LLC" | LABEL org.opencontainers.image.vendor="SUSE LLC" | ||||||
| LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%kiwi-builder:%%kiwi_version%%.1-%RELEASE%" | LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%kiwi-builder:10.1" | ||||||
| LABEL org.openbuildservice.disturl="%DISTURL%" | LABEL org.openbuildservice.disturl="%DISTURL%" | ||||||
| LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" | ||||||
| LABEL com.suse.eula="SUSE Combined EULA February 2024" | LABEL com.suse.eula="SUSE Combined EULA February 2024" | ||||||
| @@ -23,8 +20,12 @@ LABEL com.suse.image-type="application" | |||||||
| LABEL com.suse.release-stage="released" | LABEL com.suse.release-stage="released" | ||||||
| # endlabelprefix | # endlabelprefix | ||||||
|  |  | ||||||
| # help the build service understand the need for python3-kiwi | # Install required packages for Kiwi to function as expected | ||||||
| RUN zypper -n install -d -D python3-kiwi; [ "%%kiwi_version%%" = "${KIWIVERSION}" ] || { echo "expected kiwi version ${KIWIVERSION}: version mismatch"; exit 1; } | # Should be provided via https://github.com/SUSE/BCI-dockerfile-generator/pull/1770 | ||||||
|  | # RUN zypper in -y gawk && zypper clean -a | ||||||
|  |  | ||||||
|  | # Configure Kiwi to use kpartx | ||||||
|  | RUN echo -e "mapper:\n  - part_mapper: kpartx" > /etc/kiwi.yml | ||||||
|  |  | ||||||
| # Copy build script into image and make it executable | # Copy build script into image and make it executable | ||||||
| ADD build-image.sh /usr/bin/build-image | ADD build-image.sh /usr/bin/build-image | ||||||
|   | |||||||
| @@ -8,48 +8,40 @@ Please ensure that you're running this on a registered SLE Micro 6.0 system, and | |||||||
|  |  | ||||||
| Next, download the podman image: | Next, download the podman image: | ||||||
|  |  | ||||||
| # podman pull %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.1 | # podman pull %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 | ||||||
|  |  | ||||||
| Make a local output directory (where the images will reside): | Make a local output directory (where the images will reside): | ||||||
|  |  | ||||||
| # mkdir output | # mkdir output | ||||||
|  |  | ||||||
| Then, to build a standard "Base" image, run the following in podman: |  | ||||||
|  |  | ||||||
| # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.1 build-image |  | ||||||
|  |  | ||||||
| To build a "Base" SelfInstall ISO, you can add additional flags, for example: |  | ||||||
|  |  | ||||||
| # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.1 build-image -p Base-SelfInstall |  | ||||||
|  |  | ||||||
| Then, to build a standard "Default" image, run the following in podman: | Then, to build a standard "Default" image, run the following in podman: | ||||||
|  |  | ||||||
| # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.1 build-image -p Default | # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image | ||||||
|  |  | ||||||
| To build a "Default" SelfInstall ISO, you can add additional flags, for example: | To build a SelfInstall ISO, you can add additional flags, for example: | ||||||
|  |  | ||||||
| # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.1 build-image -p Default-SelfInstall | # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image -p Default-SelfInstall | ||||||
|  |  | ||||||
| To build an image with a RealTime kernel, e.g. a RAW disk image ("Default"), use the following: | To build an image with a RealTime kernel, e.g. a RAW disk image ("Default"), use the following: | ||||||
|  |  | ||||||
| # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.1 build-image -p Base-RT | # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image -p Base-RT | ||||||
|  |  | ||||||
| To build an image that supports a large block/sectorsize (4096), use the "-b" flag, for example: | To build an image that supports a large block/sectorsize (4096), use the "-b" flag, for example: | ||||||
|  |  | ||||||
| # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.1 build-image -p Default-SelfInstall -b | # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image -p Default-SelfInstall -b | ||||||
|  |  | ||||||
| # mkdir mydefs/ | # mkdir mydefs/ | ||||||
| # cp /path/to/SL-Micro.kiwi mydefs/ | # cp /path/to/SL-Micro.kiwi mydefs/ | ||||||
| # cp /path/to/config.sh mydefs/ | # cp /path/to/config.sh mydefs/ | ||||||
| # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -v ./mydefs/:/micro-sdk/defs/ -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:%%kiwi_version%%.1 build-image | # podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -v ./mydefs/:/micro-sdk/defs/ -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image | ||||||
|  |  | ||||||
| All output will be in the local $(pwd)/output directory, for example: | All output will be in the local $(pwd)/output directory, for example: | ||||||
|  |  | ||||||
| # ls -1 output/ | # ls -1 output/ | ||||||
| SL-Micro.x86_64-6.0.changes | SLE-Micro.x86_64-6.0.changes | ||||||
| SL-Micro.x86_64-6.0.packages | SLE-Micro.x86_64-6.0.packages | ||||||
| SL-Micro.x86_64-6.0.raw | SLE-Micro.x86_64-6.0.raw | ||||||
| SL-Micro.x86_64-6.0.verified | SLE-Micro.x86_64-6.0.verified | ||||||
| build | build | ||||||
| kiwi.result | kiwi.result | ||||||
| kiwi.result.json | kiwi.result.json | ||||||
|   | |||||||
| @@ -16,14 +16,4 @@ | |||||||
|     <param name="eval">SUPPORT_LEVEL=$(rpm --macros=/root/.rpmmacros -E %support_level)</param> |     <param name="eval">SUPPORT_LEVEL=$(rpm --macros=/root/.rpmmacros -E %support_level)</param> | ||||||
|     <param name="var">SUPPORT_LEVEL</param> |     <param name="var">SUPPORT_LEVEL</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="replace_using_package_version"> |  | ||||||
|     <param name="file">Dockerfile</param> |  | ||||||
|     <param name="regex">%%kiwi_version%%</param> |  | ||||||
|     <param name="package">python3-kiwi</param> |  | ||||||
|   </service> |  | ||||||
|   <service mode="buildtime" name="replace_using_package_version"> |  | ||||||
|     <param name="file">README</param> |  | ||||||
|     <param name="regex">%%kiwi_version%%</param> |  | ||||||
|     <param name="package">python3-kiwi</param> |  | ||||||
|   </service> |  | ||||||
| </services> | </services> | ||||||
|   | |||||||
| @@ -21,45 +21,43 @@ | |||||||
| # | # | ||||||
|  |  | ||||||
| # Set image build defaults, blocksize is an empty string | # Set image build defaults, blocksize is an empty string | ||||||
| PROFILE="Base" | PROFILE="Default" | ||||||
| LARGEBLOCK=false | LARGEBLOCK=false | ||||||
|  |  | ||||||
| # Print usage | # Print usage | ||||||
| usage(){ | usage(){ | ||||||
|   cat <<-EOF | 	cat <<-EOF | ||||||
|   ============================== | 	============================== | ||||||
|   SLE Micro 6.0 Kiwi SDK Builder | 	SLE Micro 6.0 Kiwi SDK Builder | ||||||
|   ============================== | 	============================== | ||||||
|  |  | ||||||
|   Usage: ${0} [-p <profile>] [-b] | 	Usage: ${0} [-p <profile>] [-b] | ||||||
|  |  | ||||||
|   Profile Options (-p): | 	Profile Options (-p): | ||||||
|   * Base: RAW Disk Image with podman | 	* Default: RAW Disk Image with kernel-default | ||||||
|   * Base-SelfInstall: SelfInstall ISO with podman | 	* Default-SelfInstall: SelfInstall ISO with kernel-default | ||||||
|   * Default: RAW Disk Image with podman and kvm | 	* Base-RT: RAW Disk Image with kernel-rt | ||||||
|   * Default-SelfInstall: SelfInstall ISO with podman and kvm | 	* Base-RT-SelfInstall: SelfInstall ISO with kernel-rt | ||||||
|   * Base-RT: RAW Disk Image with kernel-rt |  | ||||||
|   * Base-RT-SelfInstall: SelfInstall ISO with kernel-rt |  | ||||||
|  |  | ||||||
|   4096 Blocksize (-b): If specified, use a 4096 blocksize (rather than 512) when generating the image. | 	4096 Blocksize (-b): If specified, use a 4096 blocksize (rather than 512) when generating the image. | ||||||
|  |  | ||||||
|   NOTE: If both options are omitted, the "Base" profile with a standard "512" blocksize is used. | 	NOTE: If both options are omitted, the "Default" profile with a standard "512" blocksize is used. | ||||||
| EOF | 	EOF | ||||||
| } | } | ||||||
|  |  | ||||||
| # Grab CLI options and handle | # Grab CLI options and handle | ||||||
| while getopts 'p:bh' OPTION; do | while getopts 'p:bh' OPTION; do | ||||||
|   case "${OPTION}" in | 	case "${OPTION}" in | ||||||
|     p) | 		p) | ||||||
|       PROFILE="${OPTARG}" | 			PROFILE="${OPTARG}" | ||||||
|       ;; | 			;; | ||||||
|     b) | 		b) | ||||||
|       LARGEBLOCK=true | 			LARGEBLOCK=true | ||||||
|       ;; | 			;; | ||||||
|     ?) | 		?) | ||||||
|       usage && exit 2 | 			usage && exit 2 | ||||||
|       ;; | 			;; | ||||||
|   esac | 	esac | ||||||
| done | done | ||||||
|  |  | ||||||
| # To avoid wasting time, perform the loop creation test first, and exit with a warning to re-run. | # To avoid wasting time, perform the loop creation test first, and exit with a warning to re-run. | ||||||
| @@ -90,4 +88,4 @@ if [ $RESULT -eq 0 ]; then | |||||||
|   echo -e "\n\nINFO: Image build successful, generated images are available in the 'output' directory." |   echo -e "\n\nINFO: Image build successful, generated images are available in the 'output' directory." | ||||||
| else | else | ||||||
|   echo -e "\n\nERROR: Failed to build the image, please see above logs." |   echo -e "\n\nERROR: Failed to build the image, please see above logs." | ||||||
| fi | fi | ||||||
| @@ -12,8 +12,10 @@ | |||||||
|     <param name="without-version">yes</param> |     <param name="without-version">yes</param> | ||||||
|     <param name="versionrewrite-replacement">\1</param> |     <param name="versionrewrite-replacement">\1</param> | ||||||
|   </service> |   </service> | ||||||
|   <service mode="buildtime" name="tar" > |   <service mode="buildtime" name="tar" /> | ||||||
|     <param name="obsinfo">kube-rbac-proxy.obsinfo</param> |   <service mode="buildtime" name="recompress"> | ||||||
|  |     <param name="file">*.tar</param> | ||||||
|  |     <param name="compression">gz</param> | ||||||
|   </service> |   </service> | ||||||
|   <service name="go_modules"> |   <service name="go_modules"> | ||||||
|   </service> |   </service> | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ Release:        0.18.1 | |||||||
| Summary:        The kube-rbac-proxy is a small HTTP proxy for a single upstream | Summary:        The kube-rbac-proxy is a small HTTP proxy for a single upstream | ||||||
| License:        Apache-2.0 | License:        Apache-2.0 | ||||||
| URL:            https://github.com/brancz/kube-rbac-proxy | URL:            https://github.com/brancz/kube-rbac-proxy | ||||||
| Source:         kube-rbac-proxy-%{version}.tar | Source:         kube-rbac-proxy-%{version}.tar.gz | ||||||
| Source1:        vendor.tar.gz | Source1:        vendor.tar.gz | ||||||
| BuildRequires:  golang(API) = 1.23 | BuildRequires:  golang(API) = 1.23 | ||||||
| ExcludeArch:    s390 | ExcludeArch:    s390 | ||||||
|   | |||||||
| @@ -1,34 +0,0 @@ | |||||||
| # SPDX-License-Identifier: Apache-2.0 |  | ||||||
| #!BuildTag: %%IMG_PREFIX%%kubectl:1.30.3 |  | ||||||
| #!BuildTag: %%IMG_PREFIX%%kubectl:1.30.3-%RELEASE% |  | ||||||
| #!BuildVersion: 15.6 |  | ||||||
| ARG SLE_VERSION |  | ||||||
| FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro |  | ||||||
|  |  | ||||||
| FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base |  | ||||||
| COPY --from=micro / /installroot/ |  | ||||||
| RUN zypper --installroot /installroot --non-interactive install --no-recommends kubectl; zypper -n clean; rm -rf /var/log/* |  | ||||||
|  |  | ||||||
| FROM micro AS final |  | ||||||
|  |  | ||||||
| # Define labels according to https://en.opensuse.org/Building_derived_containers |  | ||||||
| # labelprefix=com.suse.application.kubectl |  | ||||||
| LABEL org.opencontainers.image.authors="SUSE LLC (https://www.suse.com/)" |  | ||||||
| LABEL org.opencontainers.image.title="SLE kubectl image" |  | ||||||
| LABEL org.opencontainers.image.description="kubectl on the SLE Base Container Image." |  | ||||||
| LABEL org.opencontainers.image.version="1.30.3" |  | ||||||
| LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/" |  | ||||||
| LABEL org.opencontainers.image.created="%BUILDTIME%" |  | ||||||
| LABEL org.opencontainers.image.vendor="SUSE LLC" |  | ||||||
| LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%kubectl:1.30.3-%RELEASE%" |  | ||||||
| LABEL org.openbuildservice.disturl="%DISTURL%" |  | ||||||
| LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" |  | ||||||
| LABEL com.suse.eula="SUSE Combined EULA February 2024" |  | ||||||
| LABEL com.suse.lifecycle-url="https://www.suse.com/lifecycle" |  | ||||||
| LABEL com.suse.image-type="application" |  | ||||||
| LABEL com.suse.release-stage="released" |  | ||||||
| # endlabelprefix |  | ||||||
|  |  | ||||||
| COPY --from=base /installroot / |  | ||||||
|  |  | ||||||
| ENTRYPOINT ["/usr/bin/kubectl"] |  | ||||||
| @@ -1,12 +0,0 @@ | |||||||
| <services> |  | ||||||
|   <service mode="buildtime" name="kiwi_metainfo_helper"/> |  | ||||||
|   <service name="replace_using_env" mode="buildtime"> |  | ||||||
|     <param name="file">Dockerfile</param> |  | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |  | ||||||
|     <param name="var">IMG_PREFIX</param> |  | ||||||
|     <param name="eval">IMG_REPO=$(rpm --macros=/root/.rpmmacros -E %img_repo)</param> |  | ||||||
|     <param name="var">IMG_REPO</param> |  | ||||||
|     <param name="eval">SUPPORT_LEVEL=$(rpm --macros=/root/.rpmmacros -E %support_level)</param> |  | ||||||
|     <param name="var">SUPPORT_LEVEL</param> |  | ||||||
|   </service> |  | ||||||
| </services> |  | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| %global debug_package %{nil} | %global debug_package %{nil} | ||||||
|  |  | ||||||
| Name: kubectl | Name: kubectl-1303 | ||||||
| Version: 1.30.3 | Version: 1.30.3 | ||||||
| Release: 0 | Release: 0 | ||||||
| Summary: Command-line utility for interacting with a Kubernetes cluster | Summary: Command-line utility for interacting with a Kubernetes cluster | ||||||
|   | |||||||
| @@ -1,9 +0,0 @@ | |||||||
| #!BuildTag: %%IMG_PREFIX%%kubevirt-chart:%%CHART_MAJOR%%.0.0_up0.4.0-%RELEASE% |  | ||||||
| #!BuildTag: %%IMG_PREFIX%%kubevirt-chart:%%CHART_MAJOR%%.0.0_up0.4.0 |  | ||||||
| apiVersion: v2 |  | ||||||
| appVersion: 1.3.1 |  | ||||||
| description: A Helm chart for KubeVirt |  | ||||||
| icon: https://raw.githubusercontent.com/cncf/artwork/main/projects/kubevirt/icon/color/kubevirt-icon-color.svg |  | ||||||
| name: kubevirt |  | ||||||
| type: application |  | ||||||
| version: "%%CHART_MAJOR%%.0.0+up0.4.0" |  | ||||||
| @@ -1,10 +0,0 @@ | |||||||
| <services> |  | ||||||
|   <service mode="buildtime" name="kiwi_metainfo_helper"/> |  | ||||||
|   <service name="replace_using_env" mode="buildtime"> |  | ||||||
|     <param name="file">Chart.yaml</param> |  | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |  | ||||||
|     <param name="var">IMG_PREFIX</param> |  | ||||||
|     <param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param> |  | ||||||
|     <param name="var">CHART_MAJOR</param> |  | ||||||
|   </service> |  | ||||||
| </services> |  | ||||||
| @@ -1 +0,0 @@ | |||||||
| KubeVirt is a virtual machine management add-on for Kubernetes. The aim is to provide a common ground for virtualization solutions on top of Kubernetes. |  | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,2 +0,0 @@ | |||||||
| Verify that all KubeVirt components are installed correctly: |  | ||||||
|   kubectl get all -n {{ .Release.Namespace }} |  | ||||||
| @@ -1,62 +0,0 @@ | |||||||
| {{/* |  | ||||||
| Expand the name of the chart. |  | ||||||
| */}} |  | ||||||
| {{- define "kubevirt.name" -}} |  | ||||||
| {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} |  | ||||||
| {{- end }} |  | ||||||
|  |  | ||||||
| {{/* |  | ||||||
| Create a default fully qualified app name. |  | ||||||
| We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). |  | ||||||
| If release name contains chart name it will be used as a full name. |  | ||||||
| */}} |  | ||||||
| {{- define "kubevirt.fullname" -}} |  | ||||||
| {{- if .Values.fullnameOverride }} |  | ||||||
| {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} |  | ||||||
| {{- else }} |  | ||||||
| {{- $name := default .Chart.Name .Values.nameOverride }} |  | ||||||
| {{- if contains $name .Release.Name }} |  | ||||||
| {{- .Release.Name | trunc 63 | trimSuffix "-" }} |  | ||||||
| {{- else }} |  | ||||||
| {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} |  | ||||||
| {{- end }} |  | ||||||
| {{- end }} |  | ||||||
| {{- end }} |  | ||||||
|  |  | ||||||
| {{/* |  | ||||||
| Create chart name and version as used by the chart label. |  | ||||||
| */}} |  | ||||||
| {{- define "kubevirt.chart" -}} |  | ||||||
| {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} |  | ||||||
| {{- end }} |  | ||||||
|  |  | ||||||
| {{/* |  | ||||||
| Common labels |  | ||||||
| */}} |  | ||||||
| {{- define "kubevirt.labels" -}} |  | ||||||
| helm.sh/chart: {{ include "kubevirt.chart" . }} |  | ||||||
| {{ include "kubevirt.selectorLabels" . }} |  | ||||||
| {{- if .Chart.AppVersion }} |  | ||||||
| app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} |  | ||||||
| {{- end }} |  | ||||||
| app.kubernetes.io/managed-by: {{ .Release.Service }} |  | ||||||
| {{- end }} |  | ||||||
|  |  | ||||||
| {{/* |  | ||||||
| Selector labels |  | ||||||
| */}} |  | ||||||
| {{- define "kubevirt.selectorLabels" -}} |  | ||||||
| app.kubernetes.io/name: {{ include "kubevirt.name" . }} |  | ||||||
| app.kubernetes.io/instance: {{ .Release.Name }} |  | ||||||
| {{- end }} |  | ||||||
|  |  | ||||||
| {{/* |  | ||||||
| Create the name of the service account to use |  | ||||||
| */}} |  | ||||||
| {{- define "kubevirt.serviceAccountName" -}} |  | ||||||
| {{- if .Values.serviceAccount.create }} |  | ||||||
| {{- default (include "kubevirt.fullname" .) .Values.serviceAccount.name }} |  | ||||||
| {{- else }} |  | ||||||
| {{- default "default" .Values.serviceAccount.name }} |  | ||||||
| {{- end }} |  | ||||||
| {{- end }} |  | ||||||
| @@ -1,47 +0,0 @@ | |||||||
| {{/* Hook annotations */}} |  | ||||||
| {{- define "kubevirt.hook.annotations" -}} |  | ||||||
|   annotations: |  | ||||||
|     "helm.sh/hook": {{ .hookType }} |  | ||||||
|     "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded |  | ||||||
|     "helm.sh/hook-weight": {{ .hookWeight | quote }} |  | ||||||
| {{- end -}} |  | ||||||
|  |  | ||||||
| {{/* Namespace modifying hook annotations */}} |  | ||||||
| {{- define "kubevirt.namespaceHook.annotations" -}} |  | ||||||
| {{ template "kubevirt.hook.annotations" merge (dict "hookType" "pre-install") . }} |  | ||||||
| {{- end -}} |  | ||||||
|  |  | ||||||
| {{/* CRD upgrading hook annotations */}} |  | ||||||
| {{- define "kubevirt.crdUpgradeHook.annotations" -}} |  | ||||||
| {{ template "kubevirt.hook.annotations" merge (dict "hookType" "pre-upgrade") . }} |  | ||||||
| {{- end -}} |  | ||||||
|  |  | ||||||
| {{/* Custom resource uninstalling hook annotations */}} |  | ||||||
| {{- define "kubevirt.crUninstallHook.annotations" -}} |  | ||||||
| {{ template "kubevirt.hook.annotations" merge (dict "hookType" "pre-delete") . }} |  | ||||||
| {{- end -}} |  | ||||||
|  |  | ||||||
| {{/* CRD uninstalling hook annotations */}} |  | ||||||
| {{- define "kubevirt.crdUninstallHook.annotations" -}} |  | ||||||
| {{ template "kubevirt.hook.annotations" merge (dict "hookType" "post-delete") . }} |  | ||||||
| {{- end -}} |  | ||||||
|  |  | ||||||
| {{/* Namespace modifying hook name */}} |  | ||||||
| {{- define "kubevirt.namespaceHook.name" -}} |  | ||||||
| {{ include "kubevirt.fullname" . }}-namespace-modify |  | ||||||
| {{- end }} |  | ||||||
|  |  | ||||||
| {{/* CRD upgrading hook name */}} |  | ||||||
| {{- define "kubevirt.crdUpgradeHook.name" -}} |  | ||||||
| {{ include "kubevirt.fullname" . }}-crd-upgrade |  | ||||||
| {{- end }} |  | ||||||
|  |  | ||||||
| {{/* Custom resource uninstalling hook name */}} |  | ||||||
| {{- define "kubevirt.crUninstallHook.name" -}} |  | ||||||
| {{ include "kubevirt.fullname" . }}-uninstall |  | ||||||
| {{- end }} |  | ||||||
|  |  | ||||||
| {{/* CRD uninstalling hook name */}} |  | ||||||
| {{- define "kubevirt.crdUninstallHook.name" -}} |  | ||||||
| {{ include "kubevirt.fullname" . }}-crd-uninstall |  | ||||||
| {{- end }} |  | ||||||
| @@ -1,55 +0,0 @@ | |||||||
| apiVersion: v1 |  | ||||||
| kind: ServiceAccount |  | ||||||
| metadata: |  | ||||||
|   namespace: {{ .Release.Namespace }} |  | ||||||
|   name: {{ template "kubevirt.crdUninstallHook.name" . }} |  | ||||||
|   {{ template "kubevirt.crdUninstallHook.annotations" (dict "hookWeight" 1) }} |  | ||||||
| --- |  | ||||||
| apiVersion: rbac.authorization.k8s.io/v1 |  | ||||||
| kind: ClusterRole |  | ||||||
| metadata: |  | ||||||
|   name: {{ template "kubevirt.crdUninstallHook.name" . }} |  | ||||||
|   {{ template "kubevirt.crdUninstallHook.annotations" (dict "hookWeight" 1) }} |  | ||||||
| rules: |  | ||||||
|   - apiGroups: [ "apiextensions.k8s.io" ] |  | ||||||
|     resources: [ "customresourcedefinitions" ] |  | ||||||
|     resourceNames: |  | ||||||
|       - "kubevirts.kubevirt.io" |  | ||||||
|     verbs: [ "delete" ] |  | ||||||
| --- |  | ||||||
| apiVersion: rbac.authorization.k8s.io/v1 |  | ||||||
| kind: ClusterRoleBinding |  | ||||||
| metadata: |  | ||||||
|   name: {{ template "kubevirt.crdUninstallHook.name" . }} |  | ||||||
|   {{ template "kubevirt.crdUninstallHook.annotations" (dict "hookWeight" 2) }} |  | ||||||
| subjects: |  | ||||||
|   - kind: ServiceAccount |  | ||||||
|     namespace: {{ .Release.Namespace }} |  | ||||||
|     name: {{ template "kubevirt.crdUninstallHook.name" . }} |  | ||||||
| roleRef: |  | ||||||
|   kind: ClusterRole |  | ||||||
|   name: {{ template "kubevirt.crdUninstallHook.name" . }} |  | ||||||
|   apiGroup: rbac.authorization.k8s.io |  | ||||||
| --- |  | ||||||
| apiVersion: batch/v1 |  | ||||||
| kind: Job |  | ||||||
| metadata: |  | ||||||
|   namespace: {{ .Release.Namespace }} |  | ||||||
|   name: {{ template "kubevirt.crdUninstallHook.name" . }} |  | ||||||
|   {{ template "kubevirt.crdUninstallHook.annotations" (dict "hookWeight" 3) }} |  | ||||||
| spec: |  | ||||||
|   template: |  | ||||||
|     metadata: |  | ||||||
|       name: {{ template "kubevirt.crdUninstallHook.name" . }} |  | ||||||
|     spec: |  | ||||||
|       serviceAccountName: {{ template "kubevirt.crdUninstallHook.name" . }} |  | ||||||
|       restartPolicy: {{ .Values.hookRestartPolicy }} |  | ||||||
|       containers: |  | ||||||
|         - name: {{ template "kubevirt.crdUninstallHook.name" . }} |  | ||||||
|           image: {{ .Values.hookImage }} |  | ||||||
|           args: |  | ||||||
|             - delete |  | ||||||
|             - customresourcedefinitions |  | ||||||
|             - kubevirts.kubevirt.io |  | ||||||
|           securityContext: |  | ||||||
|             {{- toYaml .Values.hookSecurityContext | nindent 12 }} |  | ||||||
| @@ -1,80 +0,0 @@ | |||||||
| apiVersion: v1 |  | ||||||
| kind: ConfigMap |  | ||||||
| metadata: |  | ||||||
|   namespace: {{ .Release.Namespace }} |  | ||||||
|   name: kubevirt-crd-manifest |  | ||||||
|   {{ template "kubevirt.crdUpgradeHook.annotations" (dict "hookWeight" 1) }} |  | ||||||
| data: |  | ||||||
|   crd: |- |  | ||||||
|     {{ $.Files.Get "crds/kubevirt.yaml" | nindent 4 }} |  | ||||||
| --- |  | ||||||
| apiVersion: v1 |  | ||||||
| kind: ServiceAccount |  | ||||||
| metadata: |  | ||||||
|   namespace: {{ .Release.Namespace }} |  | ||||||
|   name: {{ template "kubevirt.crdUpgradeHook.name" . }} |  | ||||||
|   {{ template "kubevirt.crdUpgradeHook.annotations" (dict "hookWeight" 2) }} |  | ||||||
| --- |  | ||||||
| apiVersion: rbac.authorization.k8s.io/v1 |  | ||||||
| kind: ClusterRole |  | ||||||
| metadata: |  | ||||||
|   name: {{ template "kubevirt.crdUpgradeHook.name" . }} |  | ||||||
|   {{ template "kubevirt.crdUpgradeHook.annotations" (dict "hookWeight" 2) }} |  | ||||||
| rules: |  | ||||||
|   - apiGroups: [ "" ] |  | ||||||
|     resources: [ "configmaps" ] |  | ||||||
|     resourceNames: |  | ||||||
|       - "kubevirt-crd-manifest" |  | ||||||
|     verbs: [ "get" ] |  | ||||||
|   - apiGroups: [ "apiextensions.k8s.io" ] |  | ||||||
|     resources: [ "customresourcedefinitions" ] |  | ||||||
|     resourceNames: |  | ||||||
|       - "kubevirts.kubevirt.io" |  | ||||||
|     verbs: [ "get", "patch" ] |  | ||||||
| --- |  | ||||||
| apiVersion: rbac.authorization.k8s.io/v1 |  | ||||||
| kind: ClusterRoleBinding |  | ||||||
| metadata: |  | ||||||
|   name: {{ template "kubevirt.crdUpgradeHook.name" . }} |  | ||||||
|   {{ template "kubevirt.crdUpgradeHook.annotations" (dict "hookWeight" 3) }} |  | ||||||
| subjects: |  | ||||||
|   - kind: ServiceAccount |  | ||||||
|     namespace: {{ .Release.Namespace }} |  | ||||||
|     name: {{ template "kubevirt.crdUpgradeHook.name" . }} |  | ||||||
| roleRef: |  | ||||||
|   kind: ClusterRole |  | ||||||
|   name: {{ template "kubevirt.crdUpgradeHook.name" . }} |  | ||||||
|   apiGroup: rbac.authorization.k8s.io |  | ||||||
| --- |  | ||||||
| apiVersion: batch/v1 |  | ||||||
| kind: Job |  | ||||||
| metadata: |  | ||||||
|   namespace: {{ .Release.Namespace }} |  | ||||||
|   name: {{ template "kubevirt.crdUpgradeHook.name" . }} |  | ||||||
|   {{ template "kubevirt.crdUpgradeHook.annotations" (dict "hookWeight" 4) }} |  | ||||||
| spec: |  | ||||||
|   template: |  | ||||||
|     metadata: |  | ||||||
|       name: {{ template "kubevirt.crdUpgradeHook.name" . }} |  | ||||||
|     spec: |  | ||||||
|       serviceAccountName: {{ template "kubevirt.crdUpgradeHook.name" . }} |  | ||||||
|       restartPolicy: {{ .Values.hookRestartPolicy }} |  | ||||||
|       containers: |  | ||||||
|         - name: {{ template "kubevirt.crdUpgradeHook.name" . }} |  | ||||||
|           securityContext: |  | ||||||
|             {{- toYaml .Values.hookSecurityContext | nindent 12 }} |  | ||||||
|           image: {{ .Values.hookImage }} |  | ||||||
|           args: |  | ||||||
|             - apply |  | ||||||
|             - -f |  | ||||||
|             - /etc/manifests/crd.yaml |  | ||||||
|           volumeMounts: |  | ||||||
|             - name: crd-volume |  | ||||||
|               mountPath: /etc/manifests |  | ||||||
|       volumes: |  | ||||||
|         - name: crd-volume |  | ||||||
|           configMap: |  | ||||||
|             name: kubevirt-crd-manifest |  | ||||||
|             items: |  | ||||||
|               - key: crd |  | ||||||
|                 path: crd.yaml |  | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,71 +0,0 @@ | |||||||
| apiVersion: v1 |  | ||||||
| kind: ServiceAccount |  | ||||||
| metadata: |  | ||||||
|   namespace: {{ .Release.Namespace }} |  | ||||||
|   name: {{ template "kubevirt.crUninstallHook.name" . }} |  | ||||||
|   {{ template "kubevirt.crUninstallHook.annotations" (dict "hookWeight" 1) }} |  | ||||||
| --- |  | ||||||
| apiVersion: rbac.authorization.k8s.io/v1 |  | ||||||
| kind: Role |  | ||||||
| metadata: |  | ||||||
|   namespace: {{ .Release.Namespace }} |  | ||||||
|   name: {{ template "kubevirt.crUninstallHook.name" . }} |  | ||||||
|   {{ template "kubevirt.crUninstallHook.annotations" (dict "hookWeight" 1) }} |  | ||||||
| rules: |  | ||||||
|   - apiGroups: [ "kubevirt.io" ] |  | ||||||
|     resources: [ "kubevirts" ] |  | ||||||
|     resourceNames: |  | ||||||
|       - "kubevirt" |  | ||||||
|     verbs: [ "get", "list", "delete" ] |  | ||||||
|   - apiGroups: [ "apps" ] |  | ||||||
|     resources: [ "deployments", "daemonsets" ] |  | ||||||
|     verbs: [ "get", "list" ] |  | ||||||
| --- |  | ||||||
| apiVersion: rbac.authorization.k8s.io/v1 |  | ||||||
| kind: RoleBinding |  | ||||||
| metadata: |  | ||||||
|   namespace: {{ .Release.Namespace }} |  | ||||||
|   name: {{ template "kubevirt.crUninstallHook.name" . }} |  | ||||||
|   {{ template "kubevirt.crUninstallHook.annotations" (dict "hookWeight" 2) }} |  | ||||||
| subjects: |  | ||||||
|   - kind: ServiceAccount |  | ||||||
|     namespace: {{ .Release.Namespace }} |  | ||||||
|     name: {{ template "kubevirt.crUninstallHook.name" . }} |  | ||||||
| roleRef: |  | ||||||
|   kind: Role |  | ||||||
|   name: {{ template "kubevirt.crUninstallHook.name" . }} |  | ||||||
|   apiGroup: rbac.authorization.k8s.io |  | ||||||
| --- |  | ||||||
| apiVersion: batch/v1 |  | ||||||
| kind: Job |  | ||||||
| metadata: |  | ||||||
|   namespace: {{ .Release.Namespace }} |  | ||||||
|   name: {{ template "kubevirt.crUninstallHook.name" . }} |  | ||||||
|   {{ template "kubevirt.crUninstallHook.annotations" (dict "hookWeight" 3) }} |  | ||||||
| spec: |  | ||||||
|   template: |  | ||||||
|     metadata: |  | ||||||
|       name: {{ template "kubevirt.crUninstallHook.name" . }} |  | ||||||
|     spec: |  | ||||||
|       serviceAccountName: {{ template "kubevirt.crUninstallHook.name" . }} |  | ||||||
|       restartPolicy: {{ .Values.hookRestartPolicy }} |  | ||||||
|       containers: |  | ||||||
|         - name: {{ template "kubevirt.crUninstallHook.name" . }} |  | ||||||
|           image: {{ .Values.hookImage }} |  | ||||||
|           securityContext: |  | ||||||
|             {{- toYaml .Values.hookSecurityContext | nindent 12 }} |  | ||||||
|           args: |  | ||||||
|             - delete |  | ||||||
|             - kubevirt |  | ||||||
|             - kubevirt |  | ||||||
|         - name: {{ template "kubevirt.crUninstallHook.name" . }}-cleanup |  | ||||||
|           image: {{ .Values.hookImage }} |  | ||||||
|           securityContext: |  | ||||||
|             {{- toYaml .Values.hookSecurityContext | nindent 12 }} |  | ||||||
|           args: |  | ||||||
|             - wait |  | ||||||
|             - --for=delete |  | ||||||
|             - deployments/virt-api |  | ||||||
|             - deployments/virt-controller |  | ||||||
|             - daemonsets/virt-handler |  | ||||||
|             - --timeout=60s |  | ||||||
| @@ -1,32 +0,0 @@ | |||||||
| apiVersion: kubevirt.io/v1 |  | ||||||
| kind: KubeVirt |  | ||||||
| metadata: |  | ||||||
|   name: kubevirt |  | ||||||
|   namespace: {{ .Release.Namespace }} |  | ||||||
| spec: |  | ||||||
|   {{- with .Values.kubevirt.configuration }} |  | ||||||
|   configuration: |  | ||||||
|   {{- toYaml . | nindent 4 }} |  | ||||||
|   {{- end }} |  | ||||||
|   {{- with .Values.kubevirt.customizeComponents }} |  | ||||||
|   customizeComponents: |  | ||||||
|   {{- toYaml . | nindent 4 }} |  | ||||||
|   {{- end }} |  | ||||||
|   imagePullPolicy: {{ .Values.kubevirt.imagePullPolicy }} |  | ||||||
|   {{- with .Values.kubevirt.infra }} |  | ||||||
|   infra: |  | ||||||
|   {{- toYaml . | nindent 4 }} |  | ||||||
|   {{- end }} |  | ||||||
|   {{- if .Values.kubevirt.uninstallStrategy }} |  | ||||||
|   uninstallStrategy: {{ .Values.kubevirt.uninstallStrategy }} |  | ||||||
|   {{- end }} |  | ||||||
|   {{- with .Values.kubevirt.workloadUpdateStrategy }} |  | ||||||
|   workloadUpdateStrategy: |  | ||||||
|   {{- toYaml . | nindent 4 }} |  | ||||||
|   {{- end }} |  | ||||||
|   {{- if .Values.kubevirt.monitorNamespace }} |  | ||||||
|   monitorNamespace: {{ .Values.kubevirt.monitorNamespace }} |  | ||||||
|   {{- end }} |  | ||||||
|   {{- if .Values.kubevirt.monitorAccount }} |  | ||||||
|   monitorAccount: {{ .Values.kubevirt.monitorAccount }} |  | ||||||
|   {{- end }} |  | ||||||
| @@ -1,60 +0,0 @@ | |||||||
| apiVersion: v1 |  | ||||||
| kind: ServiceAccount |  | ||||||
| metadata: |  | ||||||
|   namespace: {{ .Release.Namespace }} |  | ||||||
|   name: {{ template "kubevirt.namespaceHook.name" . }} |  | ||||||
|   {{ template "kubevirt.namespaceHook.annotations" (dict "hookWeight" 1) }} |  | ||||||
| --- |  | ||||||
| apiVersion: rbac.authorization.k8s.io/v1 |  | ||||||
| kind: ClusterRole |  | ||||||
| metadata: |  | ||||||
|   name: {{ template "kubevirt.namespaceHook.name" . }} |  | ||||||
|   {{ template "kubevirt.namespaceHook.annotations" (dict "hookWeight" 1) }} |  | ||||||
| rules: |  | ||||||
|   - apiGroups: [ "" ] |  | ||||||
|     resources: [ "namespaces" ] |  | ||||||
|     resourceNames: |  | ||||||
|       - {{ .Release.Namespace | quote }} |  | ||||||
|     verbs: [ "get", "patch" ] |  | ||||||
|   - apiGroups: [ "management.cattle.io" ] # Rancher |  | ||||||
|     resources: [ "projects" ] |  | ||||||
|     verbs: [ "updatepsa" ] |  | ||||||
| --- |  | ||||||
| apiVersion: rbac.authorization.k8s.io/v1 |  | ||||||
| kind: ClusterRoleBinding |  | ||||||
| metadata: |  | ||||||
|   name: {{ template "kubevirt.namespaceHook.name" . }} |  | ||||||
|   {{ template "kubevirt.namespaceHook.annotations" (dict "hookWeight" 2) }} |  | ||||||
| subjects: |  | ||||||
|   - kind: ServiceAccount |  | ||||||
|     namespace: {{ .Release.Namespace }} |  | ||||||
|     name: {{ template "kubevirt.namespaceHook.name" . }} |  | ||||||
| roleRef: |  | ||||||
|   kind: ClusterRole |  | ||||||
|   name: {{ template "kubevirt.namespaceHook.name" . }} |  | ||||||
|   apiGroup: rbac.authorization.k8s.io |  | ||||||
| --- |  | ||||||
| apiVersion: batch/v1 |  | ||||||
| kind: Job |  | ||||||
| metadata: |  | ||||||
|   namespace: {{ .Release.Namespace }} |  | ||||||
|   name: {{ template "kubevirt.namespaceHook.name" . }} |  | ||||||
|   {{ template "kubevirt.namespaceHook.annotations" (dict "hookWeight" 3) }} |  | ||||||
| spec: |  | ||||||
|   template: |  | ||||||
|     metadata: |  | ||||||
|       name: {{ template "kubevirt.namespaceHook.name" . }} |  | ||||||
|     spec: |  | ||||||
|       serviceAccountName: {{ template "kubevirt.namespaceHook.name" . }} |  | ||||||
|       restartPolicy: {{ .Values.hookRestartPolicy }} |  | ||||||
|       containers: |  | ||||||
|         - name: {{ template "kubevirt.namespaceHook.name" . }} |  | ||||||
|           securityContext: |  | ||||||
|             {{- toYaml .Values.hookSecurityContext | nindent 12 }} |  | ||||||
|           image: {{ .Values.hookImage }} |  | ||||||
|           args: |  | ||||||
|             - label |  | ||||||
|             - namespace |  | ||||||
|             - {{ .Release.Namespace }} |  | ||||||
|             - kubevirt.io= |  | ||||||
|             - pod-security.kubernetes.io/enforce=privileged |  | ||||||
| @@ -1,34 +0,0 @@ | |||||||
| operator: |  | ||||||
|   image: registry.suse.com/suse/sles/15.6/virt-operator |  | ||||||
|   version: 1.3.1-150600.5.9.1 |  | ||||||
|   pullPolicy: IfNotPresent |  | ||||||
|  |  | ||||||
| kubevirt: |  | ||||||
|   # Holds kubevirt configurations. Same as the virt-configMap. |  | ||||||
|   configuration: {} |  | ||||||
|   customizeComponents: {} |  | ||||||
|   # The ImagePullPolicy to use. |  | ||||||
|   imagePullPolicy: IfNotPresent |  | ||||||
|   # Selectors and tolerations that should apply to KubeVirt infrastructure components. |  | ||||||
|   infra: {} |  | ||||||
|   # Specifies if KubeVirt can be deleted if workloads are still present. |  | ||||||
|   # This is mainly a precaution to avoid accidental data loss. |  | ||||||
|   uninstallStrategy: "" |  | ||||||
|   # WorkloadUpdateStrategy defines at the cluster level how to handle automated workload updates. |  | ||||||
|   workloadUpdateStrategy: {} |  | ||||||
|   # Optionally enable ServiceMonitor for prometheus, see |  | ||||||
|   # https://kubevirt.io/user-guide/user_workloads/component_monitoring/ |  | ||||||
|   monitorAccount: "" |  | ||||||
|   monitorNamespace: "" |  | ||||||
|  |  | ||||||
| hookImage: rancher/kubectl:v1.30.2 |  | ||||||
| hookRestartPolicy: OnFailure |  | ||||||
| hookSecurityContext: |  | ||||||
|   seccompProfile: |  | ||||||
|     type: RuntimeDefault |  | ||||||
|   runAsNonRoot: true |  | ||||||
|   runAsUser: 1000 |  | ||||||
|   allowPrivilegeEscalation: false |  | ||||||
|   capabilities: |  | ||||||
|     drop: |  | ||||||
|       - ALL |  | ||||||
| @@ -1,6 +1,5 @@ | |||||||
| #!BuildTag: %%IMG_PREFIX%%kubevirt-dashboard-extension-chart:%%CHART_MAJOR%%.0.0 | #!BuildTag: %%IMG_PREFIX%%kubevirt-dashboard-extension-chart:1.2.0 | ||||||
| #!BuildTag: %%IMG_PREFIX%%kubevirt-dashboard-extension-chart:%%CHART_MAJOR%%.0.0_up1.2.1 | #!BuildTag: %%IMG_PREFIX%%kubevirt-dashboard-extension-chart:1.2.0-%RELEASE% | ||||||
| #!BuildTag: %%IMG_PREFIX%%kubevirt-dashboard-extension-chart:%%CHART_MAJOR%%.0.0_up1.2.1-%RELEASE% |  | ||||||
| annotations: | annotations: | ||||||
|   catalog.cattle.io/certified: rancher |   catalog.cattle.io/certified: rancher | ||||||
|   catalog.cattle.io/display-name: KubeVirt |   catalog.cattle.io/display-name: KubeVirt | ||||||
| @@ -11,12 +10,11 @@ annotations: | |||||||
|   catalog.cattle.io/rancher-version: '>= 2.10.0-0' |   catalog.cattle.io/rancher-version: '>= 2.10.0-0' | ||||||
|   catalog.cattle.io/scope: management |   catalog.cattle.io/scope: management | ||||||
|   catalog.cattle.io/ui-component: plugins |   catalog.cattle.io/ui-component: plugins | ||||||
|   catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0" |   catalog.cattle.io/ui-extensions-version: '>= 3.0.0' | ||||||
| apiVersion: v2 | apiVersion: v2 | ||||||
| appVersion: 302.0.0+up1.2.1 | appVersion: 1.2.0 | ||||||
| description: 'SUSE Edge: KubeVirt extension for Rancher Dashboard' | description: 'SUSE Edge: KubeVirt extension for Rancher Dashboard' | ||||||
|  | icon: https://raw.githubusercontent.com/cncf/artwork/master/projects/kubevirt/icon/color/kubevirt-icon-color.svg | ||||||
| name: kubevirt-dashboard-extension | name: kubevirt-dashboard-extension | ||||||
| type: application | type: application | ||||||
| version: "%%CHART_MAJOR%%.0.0+up1.2.1" | version: 1.2.0 | ||||||
| icon: >- |  | ||||||
|   https://raw.githubusercontent.com/cncf/artwork/master/projects/kubevirt/icon/color/kubevirt-icon-color.svg |  | ||||||
|   | |||||||
| @@ -11,7 +11,5 @@ | |||||||
|     <param name="file">Chart.yaml</param> |     <param name="file">Chart.yaml</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> | ||||||
|     <param name="var">IMG_PREFIX</param> |     <param name="var">IMG_PREFIX</param> | ||||||
|     <param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param> |  | ||||||
|     <param name="var">CHART_MAJOR</param> |  | ||||||
|   </service> |   </service> | ||||||
| </services> | </services> | ||||||
|   | |||||||
| @@ -38,7 +38,7 @@ Common labels | |||||||
| helm.sh/chart: {{ include "extension-server.chart" . }} | helm.sh/chart: {{ include "extension-server.chart" . }} | ||||||
| {{ include "extension-server.selectorLabels" . }} | {{ include "extension-server.selectorLabels" . }} | ||||||
| {{- if .Chart.AppVersion }} | {{- if .Chart.AppVersion }} | ||||||
| app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | quote }} | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} | ||||||
| {{- end }} | {{- end }} | ||||||
| app.kubernetes.io/managed-by: {{ .Release.Service }} | app.kubernetes.io/managed-by: {{ .Release.Service }} | ||||||
| {{- end }} | {{- end }} | ||||||
| @@ -60,4 +60,4 @@ Pkg annotations | |||||||
| {{ $key }}: {{ $value | quote }} | {{ $key }}: {{ $value | quote }} | ||||||
| {{- end }} | {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
| @@ -8,7 +8,7 @@ spec: | |||||||
|   plugin: |   plugin: | ||||||
|     name: {{ include "extension-server.fullname" . }} |     name: {{ include "extension-server.fullname" . }} | ||||||
|     version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }} |     version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }} | ||||||
|     endpoint: https://raw.githubusercontent.com/suse-edge/dashboard-extensions/gh-pages/extensions/kubevirt-dashboard-extension/302.0.0+up1.2.1 |     endpoint: https://raw.githubusercontent.com/suse-edge/dashboard-extensions/gh-pages/extensions/kubevirt-dashboard-extension/1.2.0 | ||||||
|     noCache: {{ .Values.plugin.noCache }} |     noCache: {{ .Values.plugin.noCache }} | ||||||
|     noAuth: {{ .Values.plugin.noAuth }} |     noAuth: {{ .Values.plugin.noAuth }} | ||||||
|     metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }} |     metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }} | ||||||
| @@ -8,5 +8,5 @@ plugin: | |||||||
|   metadata: |   metadata: | ||||||
|     catalog.cattle.io/display-name: KubeVirt |     catalog.cattle.io/display-name: KubeVirt | ||||||
|     catalog.cattle.io/rancher-version: ">= 2.10.0-0" |     catalog.cattle.io/rancher-version: ">= 2.10.0-0" | ||||||
|     catalog.cattle.io/ui-extensions-version: ">= 3.0.0 < 4.0.0" |     catalog.cattle.io/ui-extensions-version: ">= 3.0.0" | ||||||
|     catalog.cattle.io/kube-version: ">= v1.26.0-0" |     catalog.cattle.io/kube-version: ">= v1.26.0-0" | ||||||
|   | |||||||
| @@ -1,16 +1,16 @@ | |||||||
| #!BuildTag: %%IMG_PREFIX%%metal3-chart:%%CHART_MAJOR%%.0.1_up0.9.4 | #!BuildTag: %%IMG_PREFIX%%metal3-chart:302.0.0_up0.9.0 | ||||||
| #!BuildTag: %%IMG_PREFIX%%metal3-chart:%%CHART_MAJOR%%.0.1_up0.9.4-%RELEASE% | #!BuildTag: %%IMG_PREFIX%%metal3-chart:302.0.0_up0.9.0-%RELEASE% | ||||||
| apiVersion: v2 | apiVersion: v2 | ||||||
| appVersion: 0.9.4 | appVersion: 0.9.0 | ||||||
| dependencies: | dependencies: | ||||||
| - alias: metal3-baremetal-operator | - alias: metal3-baremetal-operator | ||||||
|   name: baremetal-operator |   name: baremetal-operator | ||||||
|   repository: file://./charts/baremetal-operator |   repository: file://./charts/baremetal-operator | ||||||
|   version: 0.6.1 |   version: 0.6.0 | ||||||
| - alias: metal3-ironic | - alias: metal3-ironic | ||||||
|   name: ironic |   name: ironic | ||||||
|   repository: file://./charts/ironic |   repository: file://./charts/ironic | ||||||
|   version: 0.9.3 |   version: 0.8.0 | ||||||
| - alias: metal3-mariadb | - alias: metal3-mariadb | ||||||
|   condition: global.enable_mariadb |   condition: global.enable_mariadb | ||||||
|   name: mariadb |   name: mariadb | ||||||
| @@ -20,9 +20,9 @@ dependencies: | |||||||
|   condition: global.enable_metal3_media_server |   condition: global.enable_metal3_media_server | ||||||
|   name: media |   name: media | ||||||
|   repository: file://./charts/media |   repository: file://./charts/media | ||||||
|   version: 0.6.1 |   version: 0.6.0 | ||||||
| description: A Helm chart that installs all of the dependencies needed for Metal3 | description: A Helm chart that installs all of the dependencies needed for Metal3 | ||||||
| icon: https://github.com/cncf/artwork/raw/master/projects/metal3/icon/color/metal3-icon-color.svg | icon: https://github.com/cncf/artwork/raw/master/projects/metal3/icon/color/metal3-icon-color.svg | ||||||
| name: metal3 | name: metal3 | ||||||
| type: application | type: application | ||||||
| version: "%%CHART_MAJOR%%.0.1+up0.9.4" | version: 302.0.0+up0.9.0 | ||||||
|   | |||||||
| @@ -11,7 +11,5 @@ | |||||||
|     <param name="file">Chart.yaml</param> |     <param name="file">Chart.yaml</param> | ||||||
|     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> |     <param name="eval">IMG_PREFIX=$(rpm --macros=/root/.rpmmacros -E %{?img_prefix})</param> | ||||||
|     <param name="var">IMG_PREFIX</param> |     <param name="var">IMG_PREFIX</param> | ||||||
|     <param name="eval">CHART_MAJOR=$(rpm --macros=/root/.rpmmacros -E %{?chart_major})</param> |  | ||||||
|     <param name="var">CHART_MAJOR</param> |  | ||||||
|   </service> |   </service> | ||||||
| </services> | </services> | ||||||
|   | |||||||
| @@ -3,4 +3,4 @@ appVersion: 0.8.0 | |||||||
| description: A Helm chart for baremetal-operator, used by Metal3 | description: A Helm chart for baremetal-operator, used by Metal3 | ||||||
| name: baremetal-operator | name: baremetal-operator | ||||||
| type: application | type: application | ||||||
| version: 0.6.1 | version: 0.6.0 | ||||||
|   | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user