From d4332f85d32d18c5f7ab432be4e21109905bd3e1 Mon Sep 17 00:00:00 2001 From: Achilleas Koutsou Date: Thu, 17 Aug 2023 16:33:11 +0200 Subject: [PATCH] deps: update osbuild/images to v0.3.0 Bump the required osbuild version to v93 (due to the systemd units change). Pin the new osbuild version in Schutzfile. Update repo snapshots in Schutzfile due to osbuild v93 depending on new selinux-policy build. --- Schutzfile | 94 +++++----- cmd/osbuild-playground/my-container.go | 2 +- cmd/osbuild-playground/my-image.go | 2 +- go.mod | 8 +- go.sum | 15 +- osbuild-composer.spec | 8 +- .../credentials/ssocreds/token_provider.go | 9 + .../aws/aws-sdk-go/aws/endpoints/defaults.go | 46 ++++- .../aws/aws-sdk-go/aws/signer/v4/v4.go | 1 + .../github.com/aws/aws-sdk-go/aws/version.go | 2 +- .../aws/aws-sdk-go/service/ec2/api.go | 107 ++++++++++- vendor/github.com/google/uuid/.travis.yml | 9 - vendor/github.com/google/uuid/CHANGELOG.md | 10 ++ vendor/github.com/google/uuid/CONTRIBUTING.md | 16 ++ vendor/github.com/google/uuid/README.md | 10 +- vendor/github.com/google/uuid/node_js.go | 2 +- vendor/github.com/google/uuid/uuid.go | 10 +- .../images/pkg/distro/fedora/distro.go | 124 +++++++++++-- .../images/pkg/distro/fedora/images.go | 165 +++++++++++++++-- .../images/pkg/distro/fedora/imagetype.go | 44 ++++- .../images/pkg/distro/fedora/package_sets.go | 56 +++++- .../pkg/distro/fedora/partition_tables.go | 169 ++++++++++++++++-- .../pkg/distro/rhel7/partition_tables.go | 10 +- .../osbuild/images/pkg/distro/rhel8/images.go | 4 +- .../pkg/distro/rhel8/partition_tables.go | 24 +-- .../osbuild/images/pkg/distro/rhel9/edge.go | 17 +- .../osbuild/images/pkg/distro/rhel9/images.go | 42 ++--- .../pkg/distro/rhel9/partition_tables.go | 22 +-- .../pkg/image/anaconda_live_installer.go | 13 +- .../pkg/image/anaconda_ostree_installer.go | 13 +- .../pkg/image/anaconda_tar_installer.go | 13 +- .../osbuild/images/pkg/image/archive.go | 4 +- .../osbuild/images/pkg/image/container.go | 4 +- .../osbuild/images/pkg/image/disk.go | 79 ++++---- .../images/pkg/image/ostree_archive.go | 6 +- .../images/pkg/image/ostree_container.go | 6 +- .../image/{ostree_raw.go => ostree_disk.go} | 68 +++---- .../pkg/image/ostree_simplified_installer.go | 27 ++- .../images/pkg/manifest/anaconda_installer.go | 2 +- .../manifest/anaconda_installer_iso_tree.go | 21 +-- .../images/pkg/manifest/coi_iso_tree.go | 24 +-- .../osbuild/images/pkg/manifest/commit.go | 12 +- .../images/pkg/manifest/commit_server_tree.go | 2 +- .../images/pkg/manifest/coreos_installer.go | 17 +- .../osbuild/images/pkg/manifest/iso.go | 27 +-- .../osbuild/images/pkg/manifest/iso_rootfs.go | 6 +- .../images/pkg/manifest/oci_container.go | 31 ++-- .../osbuild/images/pkg/manifest/os.go | 9 +- .../images/pkg/manifest/ostree_deployment.go | 36 +++- .../osbuild/images/pkg/manifest/ovf.go | 17 +- .../osbuild/images/pkg/manifest/pipeline.go | 28 ++- .../osbuild/images/pkg/manifest/qcow2.go | 31 ++-- .../osbuild/images/pkg/manifest/raw.go | 35 ++-- .../osbuild/images/pkg/manifest/raw_ostree.go | 36 ++-- .../osbuild/images/pkg/manifest/tar.go | 25 +-- .../osbuild/images/pkg/manifest/vmdk.go | 46 ++--- .../osbuild/images/pkg/manifest/vpc.go | 29 +-- .../osbuild/images/pkg/manifest/xz.go | 26 +-- .../pkg/osbuild/systemd_preset_stage.go | 56 ++++++ .../images/pkg/osbuild/systemd_unit_stage.go | 21 ++- .../google.golang.org/api/internal/version.go | 2 +- vendor/modules.txt | 8 +- 62 files changed, 1269 insertions(+), 539 deletions(-) delete mode 100644 vendor/github.com/google/uuid/.travis.yml create mode 100644 vendor/github.com/google/uuid/CHANGELOG.md rename vendor/github.com/osbuild/images/pkg/image/{ostree_raw.go => ostree_disk.go} (54%) create mode 100644 vendor/github.com/osbuild/images/pkg/osbuild/systemd_preset_stage.go diff --git a/Schutzfile b/Schutzfile index 3bf416acee..bbf7a6a91f 100644 --- a/Schutzfile +++ b/Schutzfile @@ -2,7 +2,7 @@ "fedora-37": { "dependencies": { "osbuild": { - "commit": "c90b587dccf5f82e5732b7a264866c3535c066c2" + "commit": "433515cff898168b204833941a6d32399152128b" } }, "repos": [ @@ -46,14 +46,14 @@ { "title": "updates", "name": "updates", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/f37/f37-x86_64-updates-released-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/f37/f37-x86_64-updates-released-20230824" } ], "aarch64": [ { "title": "updates", "name": "updates", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/f37/f37-aarch64-updates-released-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/f37/f37-aarch64-updates-released-20230824" } ] }, @@ -63,14 +63,14 @@ { "title": "updates-modular", "name": "updates-modular", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/f37/f37-x86_64-updates-released-modular-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/f37/f37-x86_64-updates-released-modular-20230824" } ], "aarch64": [ { "title": "updates-modular", "name": "updates-modular", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/f37/f37-aarch64-updates-released-modular-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/f37/f37-aarch64-updates-released-modular-20230824" } ] } @@ -79,7 +79,7 @@ "fedora-38": { "dependencies": { "osbuild": { - "commit": "c90b587dccf5f82e5732b7a264866c3535c066c2" + "commit": "433515cff898168b204833941a6d32399152128b" } }, "repos": [ @@ -123,14 +123,14 @@ { "title": "updates", "name": "updates", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/f38/f38-x86_64-updates-released-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/f38/f38-x86_64-updates-released-20230824" } ], "aarch64": [ { "title": "updates", "name": "updates", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/f38/f38-aarch64-updates-released-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/f38/f38-aarch64-updates-released-20230824" } ] }, @@ -140,14 +140,14 @@ { "title": "updates-modular", "name": "updates-modular", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/f38/f38-x86_64-updates-released-modular-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/f38/f38-x86_64-updates-released-modular-20230824" } ], "aarch64": [ { "title": "updates-modular", "name": "updates-modular", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/f38/f38-aarch64-updates-released-modular-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/f38/f38-aarch64-updates-released-modular-20230824" } ] } @@ -156,35 +156,35 @@ "rhel-8.4": { "dependencies": { "osbuild": { - "commit": "c90b587dccf5f82e5732b7a264866c3535c066c2" + "commit": "433515cff898168b204833941a6d32399152128b" } } }, "rhel-8.6": { "dependencies": { "osbuild": { - "commit": "c90b587dccf5f82e5732b7a264866c3535c066c2" + "commit": "433515cff898168b204833941a6d32399152128b" } } }, "rhel-8.7": { "dependencies": { "osbuild": { - "commit": "c90b587dccf5f82e5732b7a264866c3535c066c2" + "commit": "433515cff898168b204833941a6d32399152128b" } } }, "rhel-8.8": { "dependencies": { "osbuild": { - "commit": "c90b587dccf5f82e5732b7a264866c3535c066c2" + "commit": "433515cff898168b204833941a6d32399152128b" } } }, "rhel-8.9": { "dependencies": { "osbuild": { - "commit": "c90b587dccf5f82e5732b7a264866c3535c066c2" + "commit": "433515cff898168b204833941a6d32399152128b" } }, "repos": [ @@ -194,34 +194,34 @@ { "title": "RHEL-8-RPMREPO-NIGHTLY-BaseOS", "name": "baseos", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el8/el8-x86_64-baseos-n8.9-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el8/el8-x86_64-baseos-n8.9-20230824" }, { "title": "RHEL-8-RPMREPO-NIGHTLY-AppStream", "name": "appstream", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el8/el8-x86_64-appstream-n8.9-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el8/el8-x86_64-appstream-n8.9-20230824" }, { "title": "RHEL-8-RPMREPO-NIGHTLY-CRB", "name": "crb", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el8/el8-x86_64-crb-n8.9-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el8/el8-x86_64-crb-n8.9-20230824" } ], "aarch64": [ { "title": "RHEL-8-RPMREPO-NIGHTLY-BaseOS", "name": "baseos", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el8/el8-aarch64-baseos-n8.9-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el8/el8-aarch64-baseos-n8.9-20230824" }, { "title": "RHEL-8-RPMREPO-NIGHTLY-AppStream", "name": "appstream", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el8/el8-aarch64-appstream-n8.9-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el8/el8-aarch64-appstream-n8.9-20230824" }, { "title": "RHEL-8-RPMREPO-NIGHTLY-CRB", "name": "crb", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el8/el8-aarch64-crb-n8.9-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el8/el8-aarch64-crb-n8.9-20230824" } ] } @@ -230,28 +230,28 @@ "rhel-9.0": { "dependencies": { "osbuild": { - "commit": "c90b587dccf5f82e5732b7a264866c3535c066c2" + "commit": "433515cff898168b204833941a6d32399152128b" } } }, "rhel-9.1": { "dependencies": { "osbuild": { - "commit": "c90b587dccf5f82e5732b7a264866c3535c066c2" + "commit": "433515cff898168b204833941a6d32399152128b" } } }, "rhel-9.2": { "dependencies": { "osbuild": { - "commit": "c90b587dccf5f82e5732b7a264866c3535c066c2" + "commit": "433515cff898168b204833941a6d32399152128b" } } }, "rhel-9.3": { "dependencies": { "osbuild": { - "commit": "c90b587dccf5f82e5732b7a264866c3535c066c2" + "commit": "433515cff898168b204833941a6d32399152128b" } }, "repos": [ @@ -261,34 +261,34 @@ { "title": "RHEL-9-RPMREPO-NIGHTLY-BaseOS", "name": "baseos", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el9/el9-x86_64-baseos-n9.3-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el9/el9-x86_64-baseos-n9.3-20230824" }, { "title": "RHEL-9-RPMREPO-NIGHTLY-AppStream", "name": "appstream", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el9/el9-x86_64-appstream-n9.3-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el9/el9-x86_64-appstream-n9.3-20230824" }, { "title": "RHEL-9-RPMREPO-NIGHTLY-CRB", "name": "crb", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el9/el9-x86_64-crb-n9.3-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el9/el9-x86_64-crb-n9.3-20230824" } ], "aarch64": [ { "title": "RHEL-9-RPMREPO-NIGHTLY-BaseOS", "name": "baseos", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el9/el9-aarch64-baseos-n9.3-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el9/el9-aarch64-baseos-n9.3-20230824" }, { "title": "RHEL-9-RPMREPO-NIGHTLY-AppStream", "name": "appstream", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el9/el9-aarch64-appstream-n9.3-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el9/el9-aarch64-appstream-n9.3-20230824" }, { "title": "RHEL-9-RPMREPO-NIGHTLY-CRB", "name": "crb", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el9/el9-aarch64-crb-n9.3-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/rhvpn/el9/el9-aarch64-crb-n9.3-20230824" } ] } @@ -297,21 +297,21 @@ "centos-8": { "dependencies": { "osbuild": { - "commit": "c90b587dccf5f82e5732b7a264866c3535c066c2" + "commit": "433515cff898168b204833941a6d32399152128b" } } }, "centos-9": { "dependencies": { "osbuild": { - "commit": "c90b587dccf5f82e5732b7a264866c3535c066c2" + "commit": "433515cff898168b204833941a6d32399152128b" } } }, "centos-stream-9": { "dependencies": { "osbuild": { - "commit": "c90b587dccf5f82e5732b7a264866c3535c066c2" + "commit": "433515cff898168b204833941a6d32399152128b" } }, "repos": [ @@ -321,34 +321,34 @@ { "title": "baseos", "name": "baseos", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el9/cs9-x86_64-baseos-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el9/cs9-x86_64-baseos-20230824" }, { "title": "appstream", "name": "appstream", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el9/cs9-x86_64-appstream-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el9/cs9-x86_64-appstream-20230824" }, { "title": "crb", "name": "crb", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el9/cs9-x86_64-crb-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el9/cs9-x86_64-crb-20230824" } ], "aarch64": [ { "title": "baseos", "name": "baseos", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el9/cs9-aarch64-baseos-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el9/cs9-aarch64-baseos-20230824" }, { "title": "appstream", "name": "appstream", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el9/cs9-aarch64-appstream-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el9/cs9-aarch64-appstream-20230824" }, { "title": "crb", "name": "crb", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el9/cs9-aarch64-crb-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el9/cs9-aarch64-crb-20230824" } ] } @@ -357,7 +357,7 @@ "centos-stream-8": { "dependencies": { "osbuild": { - "commit": "c90b587dccf5f82e5732b7a264866c3535c066c2" + "commit": "433515cff898168b204833941a6d32399152128b" } }, "repos": [ @@ -367,14 +367,14 @@ { "title": "baseos", "name": "baseos", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el8/cs8-x86_64-baseos-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el8/cs8-x86_64-baseos-20230824" } ], "aarch64": [ { "title": "baseos", "name": "baseos", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el8/cs8-aarch64-baseos-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el8/cs8-aarch64-baseos-20230824" } ] }, @@ -384,14 +384,14 @@ { "title": "appstream", "name": "appstream", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el8/cs8-x86_64-appstream-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el8/cs8-x86_64-appstream-20230824" } ], "aarch64": [ { "title": "appstream", "name": "appstream", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el8/cs8-aarch64-appstream-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el8/cs8-aarch64-appstream-20230824" } ] }, @@ -401,14 +401,14 @@ { "title": "powertools", "name": "powertools", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el8/cs8-x86_64-powertools-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el8/cs8-x86_64-powertools-20230824" } ], "aarch64": [ { "title": "powertools", "name": "powertoosl", - "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el8/cs8-aarch64-powertools-20230801" + "baseurl": "https://rpmrepo.osbuild.org/v2/mirror/public/el8/cs8-aarch64-powertools-20230824" } ] } diff --git a/cmd/osbuild-playground/my-container.go b/cmd/osbuild-playground/my-container.go index c297ecb311..f59527d8cb 100644 --- a/cmd/osbuild-playground/my-container.go +++ b/cmd/osbuild-playground/my-container.go @@ -57,7 +57,7 @@ func (img *MyContainer) InstantiateManifest(m *manifest.Manifest, os.OSCustomizations.Timezone = "UTC" // create an OCI container containing the OS tree created above - container := manifest.NewOCIContainer(m, build, os) + container := manifest.NewOCIContainer(build, os) artifact := container.Export() return artifact, nil diff --git a/cmd/osbuild-playground/my-image.go b/cmd/osbuild-playground/my-image.go index 96414e70cf..fceb0fc8cd 100644 --- a/cmd/osbuild-playground/my-image.go +++ b/cmd/osbuild-playground/my-image.go @@ -50,7 +50,7 @@ func (img *MyImage) InstantiateManifest(m *manifest.Manifest, os.KernelName = "kernel" // use the default fedora kernel // create a raw image containing the OS tree created above - raw := manifest.NewRawImage(m, build, os) + raw := manifest.NewRawImage(build, os) artifact := raw.Export() return artifact, nil diff --git a/go.mod b/go.mod index 0c96c030a9..37e28c4823 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/Azure/go-autorest/autorest v0.11.29 github.com/Azure/go-autorest/autorest/azure/auth v0.5.12 github.com/BurntSushi/toml v1.3.2 - github.com/aws/aws-sdk-go v1.44.325 + github.com/aws/aws-sdk-go v1.44.329 github.com/coreos/go-semver v0.3.1 github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f github.com/deepmap/oapi-codegen v1.8.2 @@ -20,7 +20,7 @@ require ( github.com/gobwas/glob v0.2.3 github.com/golang-jwt/jwt/v4 v4.5.0 github.com/google/go-cmp v0.5.9 - github.com/google/uuid v1.3.0 + github.com/google/uuid v1.3.1 github.com/gophercloud/gophercloud v1.5.0 github.com/hashicorp/go-retryablehttp v0.7.4 github.com/jackc/pgtype v1.14.0 @@ -31,7 +31,7 @@ require ( github.com/labstack/gommon v0.4.0 github.com/openshift-online/ocm-sdk-go v0.1.362 github.com/oracle/oci-go-sdk/v54 v54.0.0 - github.com/osbuild/images v0.0.0-20230817095437-c2aa82cc9a86 + github.com/osbuild/images v0.3.0 github.com/prometheus/client_golang v1.16.0 github.com/segmentio/ksuid v1.0.4 github.com/sirupsen/logrus v1.9.3 @@ -43,7 +43,7 @@ require ( golang.org/x/oauth2 v0.11.0 golang.org/x/sync v0.3.0 golang.org/x/sys v0.11.0 - google.golang.org/api v0.137.0 + google.golang.org/api v0.138.0 ) require ( diff --git a/go.sum b/go.sum index 0af62cc2b3..e448586e58 100644 --- a/go.sum +++ b/go.sum @@ -100,8 +100,8 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go v1.44.325 h1:jF/L99fJSq/BfiLmUOflO/aM+LwcqBm0Fe/qTK5xxuI= -github.com/aws/aws-sdk-go v1.44.325/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.329 h1:Rqy+wYI8h+iq+FphR59KKTsHR1Lz7YiwRqFzWa7xoYU= +github.com/aws/aws-sdk-go v1.44.329/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -347,8 +347,9 @@ github.com/google/s2a-go v0.1.5 h1:8IYp3w9nysqv3JH+NJgXJzGbDHzLOTj43BmSkp+O7qg= github.com/google/s2a-go v0.1.5/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvkiqTYKBCKLNmlge2eVjoZfySzM= github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -580,8 +581,8 @@ github.com/openshift-online/ocm-sdk-go v0.1.362 h1:MoaSMCSzcr8nSK9DBqKmZ9c5e4Cp8 github.com/openshift-online/ocm-sdk-go v0.1.362/go.mod h1:KYOw8kAKAHyPrJcQoVR82CneQ4ofC02Na4cXXaTq4Nw= github.com/oracle/oci-go-sdk/v54 v54.0.0 h1:CDLjeSejv2aDpElAJrhKpi6zvT/zhZCZuXchUUZ+LS4= github.com/oracle/oci-go-sdk/v54 v54.0.0/go.mod h1:+t+yvcFGVp+3ZnztnyxqXfQDsMlq8U25faBLa+mqCMc= -github.com/osbuild/images v0.0.0-20230817095437-c2aa82cc9a86 h1:xBYCeCsCxyt9Iz1CwNOgKJOpQ7Z7CvUzF71JWhXe0t0= -github.com/osbuild/images v0.0.0-20230817095437-c2aa82cc9a86/go.mod h1:CfCCR1ATJF3vyoROU7fw5fmxmhpN4QV+ymCDiPPxlmI= +github.com/osbuild/images v0.3.0 h1:eedZbt/9B8UNVfI8TDfFNqX+Psi9YMOdbA1MXcBPHnk= +github.com/osbuild/images v0.3.0/go.mod h1:lZsi8oJNfk57VRv5zhdrSLmn0z8YPcQzZBxzdHNfZls= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1058,8 +1059,8 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.137.0 h1:QrKX6uNvzJLr0Fd3vWVqcyrcmFoYi036VUAsZbiF4+s= -google.golang.org/api v0.137.0/go.mod h1:4xyob8CxC+0GChNBvEUAk8VBKNvYOTWM9T3v3UfRxuY= +google.golang.org/api v0.138.0 h1:K/tVp05MxNVbHShRw9m7e9VJGdagNeTdMzqPH7AUqr0= +google.golang.org/api v0.138.0/go.mod h1:4xyob8CxC+0GChNBvEUAk8VBKNvYOTWM9T3v3UfRxuY= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= diff --git a/osbuild-composer.spec b/osbuild-composer.spec index 18edb3cd6a..beb5a2edae 100644 --- a/osbuild-composer.spec +++ b/osbuild-composer.spec @@ -294,10 +294,10 @@ The core osbuild-composer binary. This is suitable both for spawning in containe Summary: The worker for osbuild-composer Requires: systemd Requires: qemu-img -Requires: osbuild >= 89 -Requires: osbuild-ostree >= 89 -Requires: osbuild-lvm2 >= 89 -Requires: osbuild-luks2 >= 89 +Requires: osbuild >= 93 +Requires: osbuild-ostree >= 93 +Requires: osbuild-lvm2 >= 93 +Requires: osbuild-luks2 >= 93 Requires: %{name}-dnf-json = %{version}-%{release} %description worker diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/token_provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/token_provider.go index 7562cd0135..3388b78b4f 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/token_provider.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/token_provider.go @@ -111,6 +111,15 @@ func (p *SSOTokenProvider) refreshToken(token cachedToken) (cachedToken, error) if err != nil { return cachedToken{}, fmt.Errorf("unable to refresh SSO token, %v", err) } + if createResult.ExpiresIn == nil { + return cachedToken{}, fmt.Errorf("missing required field ExpiresIn") + } + if createResult.AccessToken == nil { + return cachedToken{}, fmt.Errorf("missing required field AccessToken") + } + if createResult.RefreshToken == nil { + return cachedToken{}, fmt.Errorf("missing required field RefreshToken") + } expiresAt := nowTime().Add(time.Duration(*createResult.ExpiresIn) * time.Second) diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go index 03f3f27089..ed4812b8d1 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go @@ -12188,6 +12188,9 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, endpointKey{ Region: "me-central-1", }: endpoint{}, @@ -18155,6 +18158,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, endpointKey{ Region: "ap-south-1", }: endpoint{}, @@ -18164,6 +18170,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -18995,6 +19004,9 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, endpointKey{ Region: "me-central-1", }: endpoint{}, @@ -22525,6 +22537,9 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-2", }: endpoint{}, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, endpointKey{ Region: "rekognition-fips.ca-central-1", }: endpoint{ @@ -27933,6 +27948,9 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-3", }: endpoint{}, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, endpointKey{ Region: "me-central-1", }: endpoint{}, @@ -38667,7 +38685,7 @@ var awsusgovPartition = partition{ Region: "us-gov-east-1", Variant: dualStackVariant, }: endpoint{ - Hostname: "servicediscovery.us-gov-east-1.amazonaws.com", + Hostname: "servicediscovery.us-gov-east-1.api.aws", }, endpointKey{ Region: "us-gov-east-1", @@ -38679,7 +38697,7 @@ var awsusgovPartition = partition{ Region: "us-gov-east-1", Variant: fipsVariant | dualStackVariant, }: endpoint{ - Hostname: "servicediscovery-fips.us-gov-east-1.amazonaws.com", + Hostname: "servicediscovery-fips.us-gov-east-1.api.aws", }, endpointKey{ Region: "us-gov-east-1-fips", @@ -38697,7 +38715,7 @@ var awsusgovPartition = partition{ Region: "us-gov-west-1", Variant: dualStackVariant, }: endpoint{ - Hostname: "servicediscovery.us-gov-west-1.amazonaws.com", + Hostname: "servicediscovery.us-gov-west-1.api.aws", }, endpointKey{ Region: "us-gov-west-1", @@ -38709,7 +38727,7 @@ var awsusgovPartition = partition{ Region: "us-gov-west-1", Variant: fipsVariant | dualStackVariant, }: endpoint{ - Hostname: "servicediscovery-fips.us-gov-west-1.amazonaws.com", + Hostname: "servicediscovery-fips.us-gov-west-1.api.aws", }, endpointKey{ Region: "us-gov-west-1-fips", @@ -40069,6 +40087,9 @@ var awsisoPartition = partition{ endpointKey{ Region: "us-iso-east-1", }: endpoint{}, + endpointKey{ + Region: "us-iso-west-1", + }: endpoint{}, }, }, "elasticache": service{ @@ -40412,6 +40433,16 @@ var awsisoPartition = partition{ }: endpoint{}, }, }, + "resource-groups": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-iso-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-iso-west-1", + }: endpoint{}, + }, + }, "route53": service{ PartitionEndpoint: "aws-iso-global", IsRegionalized: boxedFalse, @@ -41052,6 +41083,13 @@ var awsisobPartition = partition{ }: endpoint{}, }, }, + "outposts": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-isob-east-1", + }: endpoint{}, + }, + }, "ram": service{ Endpoints: serviceEndpoints{ endpointKey{ diff --git a/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go b/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go index 41386bab12..b209793744 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go @@ -135,6 +135,7 @@ var requiredSignedHeaders = rules{ "X-Amz-Request-Payer": struct{}{}, "X-Amz-Server-Side-Encryption": struct{}{}, "X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id": struct{}{}, + "X-Amz-Server-Side-Encryption-Context": struct{}{}, "X-Amz-Server-Side-Encryption-Customer-Algorithm": struct{}{}, "X-Amz-Server-Side-Encryption-Customer-Key": struct{}{}, "X-Amz-Server-Side-Encryption-Customer-Key-Md5": struct{}{}, diff --git a/vendor/github.com/aws/aws-sdk-go/aws/version.go b/vendor/github.com/aws/aws-sdk-go/aws/version.go index 88f7289c7d..4d14080cb5 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/version.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/version.go @@ -5,4 +5,4 @@ package aws const SDKName = "aws-sdk-go" // SDKVersion is the version of this SDK -const SDKVersion = "1.44.325" +const SDKVersion = "1.44.329" diff --git a/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go b/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go index e13d0eaf25..7de3061fe0 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go @@ -12458,7 +12458,6 @@ func (c *EC2) DeleteKeyPairRequest(input *DeleteKeyPairInput) (req *request.Requ output = &DeleteKeyPairOutput{} req = c.newRequest(op, input, output) - req.Handlers.Unmarshal.Swap(ec2query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) return } @@ -78827,7 +78826,7 @@ type CreateVpcEndpointInput struct { RouteTableIds []*string `locationName:"RouteTableId" locationNameList:"item" type:"list"` // (Interface endpoint) The IDs of the security groups to associate with the - // endpoint network interface. If this parameter is not specified, we use the + // endpoint network interfaces. If this parameter is not specified, we use the // default security group for the VPC. SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"item" type:"list"` @@ -78836,8 +78835,11 @@ type CreateVpcEndpointInput struct { // ServiceName is a required field ServiceName *string `type:"string" required:"true"` + // The subnet configurations for the endpoint. + SubnetConfigurations []*SubnetConfiguration `locationName:"SubnetConfiguration" locationNameList:"item" type:"list"` + // (Interface and Gateway Load Balancer endpoints) The IDs of the subnets in - // which to create an endpoint network interface. For a Gateway Load Balancer + // which to create endpoint network interfaces. For a Gateway Load Balancer // endpoint, you can specify only one subnet. SubnetIds []*string `locationName:"SubnetId" locationNameList:"item" type:"list"` @@ -78943,6 +78945,12 @@ func (s *CreateVpcEndpointInput) SetServiceName(v string) *CreateVpcEndpointInpu return s } +// SetSubnetConfigurations sets the SubnetConfigurations field's value. +func (s *CreateVpcEndpointInput) SetSubnetConfigurations(v []*SubnetConfiguration) *CreateVpcEndpointInput { + s.SubnetConfigurations = v + return s +} + // SetSubnetIds sets the SubnetIds field's value. func (s *CreateVpcEndpointInput) SetSubnetIds(v []*string) *CreateVpcEndpointInput { s.SubnetIds = v @@ -82045,6 +82053,12 @@ func (s *DeleteKeyPairInput) SetKeyPairId(v string) *DeleteKeyPairInput { type DeleteKeyPairOutput struct { _ struct{} `type:"structure"` + + // The ID of the key pair. + KeyPairId *string `locationName:"keyPairId" type:"string"` + + // Is true if the request succeeds, and an error otherwise. + Return *bool `locationName:"return" type:"boolean"` } // String returns the string representation. @@ -82065,6 +82079,18 @@ func (s DeleteKeyPairOutput) GoString() string { return s.String() } +// SetKeyPairId sets the KeyPairId field's value. +func (s *DeleteKeyPairOutput) SetKeyPairId(v string) *DeleteKeyPairOutput { + s.KeyPairId = &v + return s +} + +// SetReturn sets the Return field's value. +func (s *DeleteKeyPairOutput) SetReturn(v bool) *DeleteKeyPairOutput { + s.Return = &v + return s +} + type DeleteLaunchTemplateInput struct { _ struct{} `type:"structure"` @@ -148163,7 +148189,7 @@ type ModifyVpcEndpointInput struct { AddRouteTableIds []*string `locationName:"AddRouteTableId" locationNameList:"item" type:"list"` // (Interface endpoint) The IDs of the security groups to associate with the - // network interface. + // endpoint network interfaces. AddSecurityGroupIds []*string `locationName:"AddSecurityGroupId" locationNameList:"item" type:"list"` // (Interface and Gateway Load Balancer endpoints) The IDs of the subnets in @@ -148195,7 +148221,7 @@ type ModifyVpcEndpointInput struct { RemoveRouteTableIds []*string `locationName:"RemoveRouteTableId" locationNameList:"item" type:"list"` // (Interface endpoint) The IDs of the security groups to disassociate from - // the network interface. + // the endpoint network interfaces. RemoveSecurityGroupIds []*string `locationName:"RemoveSecurityGroupId" locationNameList:"item" type:"list"` // (Interface endpoint) The IDs of the subnets from which to remove the endpoint. @@ -148205,6 +148231,9 @@ type ModifyVpcEndpointInput struct { // policy. The default policy allows full access to the service. ResetPolicy *bool `type:"boolean"` + // The subnet configurations for the endpoint. + SubnetConfigurations []*SubnetConfiguration `locationName:"SubnetConfiguration" locationNameList:"item" type:"list"` + // The ID of the endpoint. // // VpcEndpointId is a required field @@ -148314,6 +148343,12 @@ func (s *ModifyVpcEndpointInput) SetResetPolicy(v bool) *ModifyVpcEndpointInput return s } +// SetSubnetConfigurations sets the SubnetConfigurations field's value. +func (s *ModifyVpcEndpointInput) SetSubnetConfigurations(v []*SubnetConfiguration) *ModifyVpcEndpointInput { + s.SubnetConfigurations = v + return s +} + // SetVpcEndpointId sets the VpcEndpointId field's value. func (s *ModifyVpcEndpointInput) SetVpcEndpointId(v string) *ModifyVpcEndpointInput { s.VpcEndpointId = &v @@ -171813,6 +171848,68 @@ func (s *SubnetCidrReservation) SetTags(v []*Tag) *SubnetCidrReservation { return s } +// Describes the configuration of a subnet for a VPC endpoint. +type SubnetConfiguration struct { + _ struct{} `type:"structure"` + + // The IPv4 address to assign to the endpoint network interface in the subnet. + // You must provide an IPv4 address if the VPC endpoint supports IPv4. + // + // If you specify an IPv4 address when modifying a VPC endpoint, we replace + // the existing endpoint network interface with a new endpoint network interface + // with this IP address. This process temporarily disconnects the subnet and + // the VPC endpoint. + Ipv4 *string `type:"string"` + + // The IPv6 address to assign to the endpoint network interface in the subnet. + // You must provide an IPv6 address if the VPC endpoint supports IPv6. + // + // If you specify an IPv6 address when modifying a VPC endpoint, we replace + // the existing endpoint network interface with a new endpoint network interface + // with this IP address. This process temporarily disconnects the subnet and + // the VPC endpoint. + Ipv6 *string `type:"string"` + + // The ID of the subnet. + SubnetId *string `type:"string"` +} + +// String returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s SubnetConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation. +// +// API parameter values that are decorated as "sensitive" in the API will not +// be included in the string output. The member name will be present, but the +// value will be replaced with "sensitive". +func (s SubnetConfiguration) GoString() string { + return s.String() +} + +// SetIpv4 sets the Ipv4 field's value. +func (s *SubnetConfiguration) SetIpv4(v string) *SubnetConfiguration { + s.Ipv4 = &v + return s +} + +// SetIpv6 sets the Ipv6 field's value. +func (s *SubnetConfiguration) SetIpv6(v string) *SubnetConfiguration { + s.Ipv6 = &v + return s +} + +// SetSubnetId sets the SubnetId field's value. +func (s *SubnetConfiguration) SetSubnetId(v string) *SubnetConfiguration { + s.SubnetId = &v + return s +} + // Describes an association between a subnet and an IPv6 CIDR block. type SubnetIpv6CidrBlockAssociation struct { _ struct{} `type:"structure"` diff --git a/vendor/github.com/google/uuid/.travis.yml b/vendor/github.com/google/uuid/.travis.yml deleted file mode 100644 index d8156a60ba..0000000000 --- a/vendor/github.com/google/uuid/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: go - -go: - - 1.4.3 - - 1.5.3 - - tip - -script: - - go test -v ./... diff --git a/vendor/github.com/google/uuid/CHANGELOG.md b/vendor/github.com/google/uuid/CHANGELOG.md new file mode 100644 index 0000000000..2bd78667af --- /dev/null +++ b/vendor/github.com/google/uuid/CHANGELOG.md @@ -0,0 +1,10 @@ +# Changelog + +## [1.3.1](https://github.com/google/uuid/compare/v1.3.0...v1.3.1) (2023-08-18) + + +### Bug Fixes + +* Use .EqualFold() to parse urn prefixed UUIDs ([#118](https://github.com/google/uuid/issues/118)) ([574e687](https://github.com/google/uuid/commit/574e6874943741fb99d41764c705173ada5293f0)) + +## Changelog diff --git a/vendor/github.com/google/uuid/CONTRIBUTING.md b/vendor/github.com/google/uuid/CONTRIBUTING.md index 04fdf09f13..5566888726 100644 --- a/vendor/github.com/google/uuid/CONTRIBUTING.md +++ b/vendor/github.com/google/uuid/CONTRIBUTING.md @@ -2,6 +2,22 @@ We definitely welcome patches and contribution to this project! +### Tips + +Commits must be formatted according to the [Conventional Commits Specification](https://www.conventionalcommits.org). + +Always try to include a test case! If it is not possible or not necessary, +please explain why in the pull request description. + +### Releasing + +Commits that would precipitate a SemVer change, as desrcibed in the Conventional +Commits Specification, will trigger [`release-please`](https://github.com/google-github-actions/release-please-action) +to create a release candidate pull request. Once submitted, `release-please` +will create a release. + +For tips on how to work with `release-please`, see its documentation. + ### Legal requirements In order to protect both you and ourselves, you will need to sign the diff --git a/vendor/github.com/google/uuid/README.md b/vendor/github.com/google/uuid/README.md index f765a46f91..3e9a61889d 100644 --- a/vendor/github.com/google/uuid/README.md +++ b/vendor/github.com/google/uuid/README.md @@ -1,6 +1,6 @@ -# uuid ![build status](https://travis-ci.org/google/uuid.svg?branch=master) +# uuid The uuid package generates and inspects UUIDs based on -[RFC 4122](http://tools.ietf.org/html/rfc4122) +[RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122) and DCE 1.1: Authentication and Security Services. This package is based on the github.com/pborman/uuid package (previously named @@ -9,10 +9,12 @@ a UUID is a 16 byte array rather than a byte slice. One loss due to this change is the ability to represent an invalid UUID (vs a NIL UUID). ###### Install -`go get github.com/google/uuid` +```sh +go get github.com/google/uuid +``` ###### Documentation -[![GoDoc](https://godoc.org/github.com/google/uuid?status.svg)](http://godoc.org/github.com/google/uuid) +[![Go Reference](https://pkg.go.dev/badge/github.com/google/uuid.svg)](https://pkg.go.dev/github.com/google/uuid) Full `go doc` style documentation for the package can be viewed online without installing this package by using the GoDoc site here: diff --git a/vendor/github.com/google/uuid/node_js.go b/vendor/github.com/google/uuid/node_js.go index 24b78edc90..b2a0bc8711 100644 --- a/vendor/github.com/google/uuid/node_js.go +++ b/vendor/github.com/google/uuid/node_js.go @@ -7,6 +7,6 @@ package uuid // getHardwareInterface returns nil values for the JS version of the code. -// This remvoves the "net" dependency, because it is not used in the browser. +// This removes the "net" dependency, because it is not used in the browser. // Using the "net" library inflates the size of the transpiled JS code by 673k bytes. func getHardwareInterface(name string) (string, []byte) { return "", nil } diff --git a/vendor/github.com/google/uuid/uuid.go b/vendor/github.com/google/uuid/uuid.go index a57207aeb6..a56138cc4b 100644 --- a/vendor/github.com/google/uuid/uuid.go +++ b/vendor/github.com/google/uuid/uuid.go @@ -69,7 +69,7 @@ func Parse(s string) (UUID, error) { // urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx case 36 + 9: - if strings.ToLower(s[:9]) != "urn:uuid:" { + if !strings.EqualFold(s[:9], "urn:uuid:") { return uuid, fmt.Errorf("invalid urn prefix: %q", s[:9]) } s = s[9:] @@ -101,7 +101,8 @@ func Parse(s string) (UUID, error) { 9, 11, 14, 16, 19, 21, - 24, 26, 28, 30, 32, 34} { + 24, 26, 28, 30, 32, 34, + } { v, ok := xtob(s[x], s[x+1]) if !ok { return uuid, errors.New("invalid UUID format") @@ -117,7 +118,7 @@ func ParseBytes(b []byte) (UUID, error) { switch len(b) { case 36: // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx case 36 + 9: // urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - if !bytes.Equal(bytes.ToLower(b[:9]), []byte("urn:uuid:")) { + if !bytes.EqualFold(b[:9], []byte("urn:uuid:")) { return uuid, fmt.Errorf("invalid urn prefix: %q", b[:9]) } b = b[9:] @@ -145,7 +146,8 @@ func ParseBytes(b []byte) (UUID, error) { 9, 11, 14, 16, 19, 21, - 24, 26, 28, 30, 32, 34} { + 24, 26, 28, 30, 32, 34, + } { v, ok := xtob(b[x], b[x+1]) if !ok { return uuid, errors.New("invalid UUID format") diff --git a/vendor/github.com/osbuild/images/pkg/distro/fedora/distro.go b/vendor/github.com/osbuild/images/pkg/distro/fedora/distro.go index 5c0304c206..a8e0978475 100644 --- a/vendor/github.com/osbuild/images/pkg/distro/fedora/distro.go +++ b/vendor/github.com/osbuild/images/pkg/distro/fedora/distro.go @@ -157,6 +157,27 @@ var ( exports: []string{"bootiso"}, } + iotSimplifiedInstallerImgType = imageType{ + name: "iot-simplified-installer", + filename: "simplified-installer.iso", + mimeType: "application/x-iso9660-image", + packageSets: map[string]packageSetFunc{ + installerPkgsKey: iotSimplifiedInstallerPackageSet, + }, + defaultImageConfig: &distro.ImageConfig{ + EnabledServices: iotServices, + }, + defaultSize: 10 * common.GibiByte, + rpmOstree: true, + bootable: true, + bootISO: true, + image: iotSimplifiedInstallerImage, + buildPipelines: []string{"build"}, + payloadPipelines: []string{"ostree-deployment", "image", "xz", "coi-tree", "efiboot-tree", "bootiso-tree", "bootiso"}, + exports: []string{"bootiso"}, + basePartitionTables: iotSimplifiedInstallerPartitionTables, + } + iotRawImgType = imageType{ name: "iot-raw-image", nameAliases: []string{"fedora-iot-raw-image"}, @@ -170,7 +191,7 @@ var ( defaultSize: 4 * common.GibiByte, rpmOstree: true, bootable: true, - image: iotRawImage, + image: iotImage, buildPipelines: []string{"build"}, payloadPipelines: []string{"ostree-deployment", "image", "xz"}, exports: []string{"xz"}, @@ -182,6 +203,24 @@ var ( requiredPartitionSizes: map[string]uint64{}, } + iotQcow2ImgType = imageType{ + name: "iot-qcow2-image", + filename: "image.qcow2", + mimeType: "application/x-qemu-disk", + packageSets: map[string]packageSetFunc{}, + defaultImageConfig: &distro.ImageConfig{ + Locale: common.ToPtr("en_US.UTF-8"), + }, + defaultSize: 10 * common.GibiByte, + rpmOstree: true, + bootable: true, + image: iotImage, + buildPipelines: []string{"build"}, + payloadPipelines: []string{"ostree-deployment", "image", "qcow2"}, + exports: []string{"qcow2"}, + basePartitionTables: iotBasePartitionTables, + } + qcow2ImgType = imageType{ name: "qcow2", filename: "disk.qcow2", @@ -604,18 +643,10 @@ func newDistro(version int) distro.Distro { &platform.X86{ BasePlatform: platform.BasePlatform{ FirmwarePackages: []string{ - "microcode_ctl", // ?? - "iwl1000-firmware", - "iwl100-firmware", - "iwl105-firmware", - "iwl135-firmware", - "iwl2000-firmware", - "iwl2030-firmware", - "iwl3160-firmware", - "iwl5000-firmware", - "iwl5150-firmware", - "iwl6000-firmware", - "iwl6050-firmware", + "biosdevname", + "iwlwifi-dvm-firmware", + "iwlwifi-mvm-firmware", + "microcode_ctl", }, }, BIOS: true, @@ -637,6 +668,16 @@ func newDistro(version int) distro.Distro { }, iotRawImgType, ) + x86_64.addImageTypes( + &platform.X86{ + BasePlatform: platform.BasePlatform{ + ImageFormat: platform.FORMAT_QCOW2, + }, + BIOS: false, + UEFIVendor: "fedora", + }, + iotQcow2ImgType, + ) aarch64.addImageTypes( &platform.Aarch64{ UEFIVendor: "fedora", @@ -654,8 +695,9 @@ func newDistro(version int) distro.Distro { QCOW2Compat: "1.1", }, }, - qcow2ImgType, + iotQcow2ImgType, ociImgType, + qcow2ImgType, ) aarch64.addImageTypes( &platform.Aarch64{ @@ -674,17 +716,18 @@ func newDistro(version int) distro.Distro { &platform.Aarch64{ BasePlatform: platform.BasePlatform{ FirmwarePackages: []string{ - "uboot-images-armv8", // ?? - "bcm283x-firmware", "arm-image-installer", // ?? + "bcm283x-firmware", + "iwl7260-firmware", + "uboot-images-armv8", // ?? }, }, UEFIVendor: "fedora", }, + imageInstallerImgType, iotCommitImgType, - iotOCIImgType, iotInstallerImgType, - imageInstallerImgType, + iotOCIImgType, liveInstallerImgType, ) aarch64.addImageTypes( @@ -747,6 +790,51 @@ func newDistro(version int) distro.Distro { minimalrawImgType, ) + if !common.VersionLessThan(rd.Releasever(), "38") { + // iot simplified installer was introduced in F38 + x86_64.addImageTypes( + &platform.X86{ + BasePlatform: platform.BasePlatform{ + ImageFormat: platform.FORMAT_RAW, + FirmwarePackages: []string{ + "grub2-efi-x64-cdboot", + "grub2-pc", + "grub2-pc-modules", + "grub2-tools", + "grub2-tools-extra", + "grub2-tools-minimal", + "iwlwifi-dvm-firmware", + "iwlwifi-mvm-firmware", + "microcode_ctl", + "syslinux", + "syslinux-nonlinux", + }, + }, + BIOS: false, + UEFIVendor: "fedora", + }, + iotSimplifiedInstallerImgType, + ) + aarch64.addImageTypes( + &platform.Aarch64{ + BasePlatform: platform.BasePlatform{ + FirmwarePackages: []string{ + "arm-image-installer", + "bcm283x-firmware", + "grub2-efi-aa64", + "grub2-efi-aa64-cdboot", + "grub2-tools", + "grub2-tools-extra", + "grub2-tools-minimal", + "uboot-images-armv8", + }, + }, + UEFIVendor: "fedora", + }, + iotSimplifiedInstallerImgType, + ) + } + rd.addArches(x86_64, aarch64) return &rd } diff --git a/vendor/github.com/osbuild/images/pkg/distro/fedora/images.go b/vendor/github.com/osbuild/images/pkg/distro/fedora/images.go index 5e2d20f83d..e99d42e000 100644 --- a/vendor/github.com/osbuild/images/pkg/distro/fedora/images.go +++ b/vendor/github.com/osbuild/images/pkg/distro/fedora/images.go @@ -3,9 +3,10 @@ package fedora import ( "fmt" "math/rand" - "strings" "github.com/osbuild/images/internal/common" + "github.com/osbuild/images/internal/fdo" + "github.com/osbuild/images/internal/ignition" "github.com/osbuild/images/internal/oscap" "github.com/osbuild/images/internal/users" "github.com/osbuild/images/internal/workload" @@ -16,6 +17,7 @@ import ( "github.com/osbuild/images/pkg/manifest" "github.com/osbuild/images/pkg/osbuild" "github.com/osbuild/images/pkg/ostree" + "github.com/osbuild/images/pkg/platform" "github.com/osbuild/images/pkg/rpmmd" ) @@ -311,7 +313,7 @@ func imageInstallerImage(workload workload.Workload, // Enable anaconda-webui for Fedora > 38 distro := t.Arch().Distro() - if strings.HasPrefix(distro.Name(), "fedora") && !common.VersionLessThan(distro.Releasever(), "38") { + if !common.VersionLessThan(distro.Releasever(), "38") { img.AdditionalAnacondaModules = []string{ "org.fedoraproject.Anaconda.Modules.Security", "org.fedoraproject.Anaconda.Modules.Timezone", @@ -354,12 +356,31 @@ func iotCommitImage(workload workload.Workload, parentCommit, commitRef := makeOSTreeParentCommit(options.OSTree, t.OSTreeRef()) img := image.NewOSTreeArchive(commitRef) + d := t.arch.distro + img.Platform = t.platform img.OSCustomizations = osCustomizations(t, packageSets[osPkgsKey], containers, customizations) + if !common.VersionLessThan(d.Releasever(), "38") { + // see https://github.com/ostreedev/ostree/issues/2840 + img.OSCustomizations.Presets = []osbuild.Preset{ + { + Name: "ignition-firstboot-complete.service", + State: osbuild.StateEnable, + }, + { + Name: "coreos-ignition-write-issues.service", + State: osbuild.StateEnable, + }, + { + Name: "fdo-client-linuxapp.service", + State: osbuild.StateEnable, + }, + } + } img.Environment = t.environment img.Workload = workload img.OSTreeParent = parentCommit - img.OSVersion = t.arch.distro.osVersion + img.OSVersion = d.osVersion img.Filename = t.Filename() img.InstallWeakDeps = false @@ -376,14 +397,31 @@ func iotContainerImage(workload workload.Workload, parentCommit, commitRef := makeOSTreeParentCommit(options.OSTree, t.OSTreeRef()) img := image.NewOSTreeContainer(commitRef) - + d := t.arch.distro img.Platform = t.platform img.OSCustomizations = osCustomizations(t, packageSets[osPkgsKey], containers, customizations) + if !common.VersionLessThan(d.Releasever(), "38") { + // see https://github.com/ostreedev/ostree/issues/2840 + img.OSCustomizations.Presets = []osbuild.Preset{ + { + Name: "ignition-firstboot-complete.service", + State: osbuild.StateEnable, + }, + { + Name: "coreos-ignition-write-issues.service", + State: osbuild.StateEnable, + }, + { + Name: "fdo-client-linuxapp.service", + State: osbuild.StateEnable, + }, + } + } img.ContainerLanguage = img.OSCustomizations.Language img.Environment = t.environment img.Workload = workload img.OSTreeParent = parentCommit - img.OSVersion = t.arch.distro.osVersion + img.OSVersion = d.osVersion img.ExtraContainerPackages = packageSets[containerPkgsKey] img.Filename = t.Filename() @@ -431,7 +469,7 @@ func iotInstallerImage(workload workload.Workload, return img, nil } -func iotRawImage(workload workload.Workload, +func iotImage(workload workload.Workload, t *imageType, customizations *blueprint.Customizations, options distro.ImageOptions, @@ -443,14 +481,9 @@ func iotRawImage(workload workload.Workload, if err != nil { return nil, fmt.Errorf("%s: %s", t.Name(), err.Error()) } + img := image.NewOSTreeDiskImage(commit) - img := image.NewOSTreeRawImage(commit) - - // Set sysroot read-only only for Fedora 37+ distro := t.Arch().Distro() - if strings.HasPrefix(distro.Name(), "fedora") && !common.VersionLessThan(distro.Releasever(), "37") { - img.SysrootReadOnly = true - } img.Users = users.UsersFromBP(customizations.GetUsers()) img.Groups = users.GroupsFromBP(customizations.GetGroups()) @@ -464,12 +497,13 @@ func iotRawImage(workload workload.Workload, return nil, err } - // "rw" kernel option is required when /sysroot is mounted read-only to - // keep stateful parts of the filesystem writeable (/var/ and /etc) - img.KernelOptionsAppend = []string{"modprobe.blacklist=vc4", "rw"} + img.KernelOptionsAppend = []string{"modprobe.blacklist=vc4"} img.Keyboard = "us" img.Locale = "C.UTF-8" + img.SysrootReadOnly = true + img.KernelOptionsAppend = append(img.KernelOptionsAppend, "rw") + img.Platform = t.platform img.Workload = workload @@ -481,6 +515,23 @@ func iotRawImage(workload workload.Workload, } img.OSName = "fedora-iot" + if !common.VersionLessThan(distro.Releasever(), "38") { + img.Ignition = true + switch img.Platform.GetImageFormat() { + case platform.FORMAT_RAW: + img.IgnitionPlatform = "metal" + if bpIgnition := customizations.GetIgnition(); bpIgnition != nil && bpIgnition.FirstBoot != nil && bpIgnition.FirstBoot.ProvisioningURL != "" { + img.KernelOptionsAppend = append(img.KernelOptionsAppend, "ignition.config.url="+bpIgnition.FirstBoot.ProvisioningURL) + } + case platform.FORMAT_QCOW2: + img.IgnitionPlatform = "qemu" + } + } + + if kopts := customizations.GetKernel(); kopts != nil && kopts.Append != "" { + img.KernelOptionsAppend = append(img.KernelOptionsAppend, kopts.Append) + } + // TODO: move generation into LiveImage pt, err := t.getPartitionTable(customizations.GetFilesystems(), options, rng) if err != nil { @@ -494,6 +545,90 @@ func iotRawImage(workload workload.Workload, return img, nil } +func iotSimplifiedInstallerImage(workload workload.Workload, + t *imageType, + customizations *blueprint.Customizations, + options distro.ImageOptions, + packageSets map[string]rpmmd.PackageSet, + containers []container.SourceSpec, + rng *rand.Rand) (image.ImageKind, error) { + + commit, err := makeOSTreePayloadCommit(options.OSTree, t.OSTreeRef()) + if err != nil { + return nil, fmt.Errorf("%s: %s", t.Name(), err.Error()) + } + rawImg := image.NewOSTreeDiskImage(commit) + + rawImg.Users = users.UsersFromBP(customizations.GetUsers()) + rawImg.Groups = users.GroupsFromBP(customizations.GetGroups()) + + rawImg.KernelOptionsAppend = []string{"modprobe.blacklist=vc4"} + rawImg.Keyboard = "us" + rawImg.Locale = "C.UTF-8" + if !common.VersionLessThan(t.arch.distro.osVersion, "38") { + rawImg.SysrootReadOnly = true + rawImg.KernelOptionsAppend = append(rawImg.KernelOptionsAppend, "rw") + } + + rawImg.Platform = t.platform + rawImg.Workload = workload + rawImg.Remote = ostree.Remote{ + Name: "fedora-iot", + URL: options.OSTree.URL, + ContentURL: options.OSTree.ContentURL, + } + rawImg.OSName = "fedora" + + if !common.VersionLessThan(t.arch.distro.osVersion, "38") { + rawImg.Ignition = true + rawImg.IgnitionPlatform = "metal" + if bpIgnition := customizations.GetIgnition(); bpIgnition != nil && bpIgnition.FirstBoot != nil && bpIgnition.FirstBoot.ProvisioningURL != "" { + rawImg.KernelOptionsAppend = append(rawImg.KernelOptionsAppend, "ignition.config.url="+bpIgnition.FirstBoot.ProvisioningURL) + } + } + + // TODO: move generation into LiveImage + pt, err := t.getPartitionTable(customizations.GetFilesystems(), options, rng) + if err != nil { + return nil, err + } + rawImg.PartitionTable = pt + + rawImg.Filename = t.Filename() + + if kopts := customizations.GetKernel(); kopts != nil && kopts.Append != "" { + rawImg.KernelOptionsAppend = append(rawImg.KernelOptionsAppend, kopts.Append) + } + + img := image.NewOSTreeSimplifiedInstaller(rawImg, customizations.InstallationDevice) + img.ExtraBasePackages = packageSets[installerPkgsKey] + // img.Workload = workload + img.Platform = t.platform + img.Filename = t.Filename() + if bpFDO := customizations.GetFDO(); bpFDO != nil { + img.FDO = fdo.FromBP(*bpFDO) + } + // ignition configs from blueprint + if bpIgnition := customizations.GetIgnition(); bpIgnition != nil { + if bpIgnition.Embedded != nil { + var err error + img.IgnitionEmbedded, err = ignition.EmbeddedOptionsFromBP(*bpIgnition.Embedded) + if err != nil { + return nil, err + } + } + } + + d := t.arch.distro + img.ISOLabelTempl = d.isolabelTmpl + img.Product = d.product + img.Variant = "iot" + img.OSName = "fedora" + img.OSVersion = d.osVersion + + return img, nil +} + // Create an ostree SourceSpec to define an ostree parent commit using the user // options and the default ref for the image type. Additionally returns the // ref to be used for the new commit to be created. diff --git a/vendor/github.com/osbuild/images/pkg/distro/fedora/imagetype.go b/vendor/github.com/osbuild/images/pkg/distro/fedora/imagetype.go index cdb170b9e4..ca0e9d6fe7 100644 --- a/vendor/github.com/osbuild/images/pkg/distro/fedora/imagetype.go +++ b/vendor/github.com/osbuild/images/pkg/distro/fedora/imagetype.go @@ -257,7 +257,7 @@ func (t *imageType) checkOptions(bp *blueprint.Blueprint, options distro.ImageOp } } - if t.name == "iot-raw-image" { + if t.name == "iot-raw-image" || t.name == "iot-qcow2-image" { allowed := []string{"User", "Group", "Directories", "Files", "Services"} if err := customizations.CheckAllowed(allowed...); err != nil { return nil, fmt.Errorf("unsupported blueprint customizations found for image type %q: (allowed: %s)", t.name, strings.Join(allowed, ", ")) @@ -265,10 +265,48 @@ func (t *imageType) checkOptions(bp *blueprint.Blueprint, options distro.ImageOp // TODO: consider additional checks, such as those in "edge-simplified-installer" in RHEL distros } - // BootISO's have limited support for customizations. + // BootISOs have limited support for customizations. // TODO: Support kernel name selection for image-installer if t.bootISO { - if t.name == "iot-installer" || t.name == "image-installer" { + if t.name == "iot-simplified-installer" { + allowed := []string{"InstallationDevice", "FDO", "Ignition", "Kernel", "User", "Group"} + if err := customizations.CheckAllowed(allowed...); err != nil { + return nil, fmt.Errorf("unsupported blueprint customizations found for boot ISO image type %q: (allowed: %s)", t.name, strings.Join(allowed, ", ")) + } + if customizations.GetInstallationDevice() == "" { + return nil, fmt.Errorf("boot ISO image type %q requires specifying an installation device to install to", t.name) + } + + // FDO is optional, but when specified has some restrictions + if customizations.GetFDO() != nil { + if customizations.GetFDO().ManufacturingServerURL == "" { + return nil, fmt.Errorf("boot ISO image type %q requires specifying FDO.ManufacturingServerURL configuration to install to when using FDO", t.name) + } + var diunSet int + if customizations.GetFDO().DiunPubKeyHash != "" { + diunSet++ + } + if customizations.GetFDO().DiunPubKeyInsecure != "" { + diunSet++ + } + if customizations.GetFDO().DiunPubKeyRootCerts != "" { + diunSet++ + } + if diunSet != 1 { + return nil, fmt.Errorf("boot ISO image type %q requires specifying one of [FDO.DiunPubKeyHash,FDO.DiunPubKeyInsecure,FDO.DiunPubKeyRootCerts] configuration to install to when using FDO", t.name) + } + } + + // ignition is optional, we might be using FDO + if customizations.GetIgnition() != nil { + if customizations.GetIgnition().Embedded != nil && customizations.GetIgnition().FirstBoot != nil { + return nil, fmt.Errorf("both ignition embedded and firstboot configurations found") + } + if customizations.GetIgnition().FirstBoot != nil && customizations.GetIgnition().FirstBoot.ProvisioningURL == "" { + return nil, fmt.Errorf("ignition.firstboot requires a provisioning url") + } + } + } else if t.name == "iot-installer" || t.name == "image-installer" { allowed := []string{"User", "Group"} if err := customizations.CheckAllowed(allowed...); err != nil { return nil, fmt.Errorf("unsupported blueprint customizations found for boot ISO image type %q: (allowed: %s)", t.name, strings.Join(allowed, ", ")) diff --git a/vendor/github.com/osbuild/images/pkg/distro/fedora/package_sets.go b/vendor/github.com/osbuild/images/pkg/distro/fedora/package_sets.go index f53e07dab9..3b87703375 100644 --- a/vendor/github.com/osbuild/images/pkg/distro/fedora/package_sets.go +++ b/vendor/github.com/osbuild/images/pkg/distro/fedora/package_sets.go @@ -180,7 +180,10 @@ func iotCommitPackageSet(t *imageType) rpmmd.PackageSet { if !common.VersionLessThan(t.arch.distro.osVersion, "38") { ps = ps.Append(rpmmd.PackageSet{ Include: []string{ - "fdo-client", // added in F38 + "fdo-client", + "fdo-owner-cli", + "ignition-edge", + "ssh-key-dir", }, }) } @@ -539,3 +542,54 @@ func minimalrpmPackageSet(t *imageType) rpmmd.PackageSet { }, } } + +func iotSimplifiedInstallerPackageSet(t *imageType) rpmmd.PackageSet { + // common installer packages + ps := installerPackageSet(t) + + ps = ps.Append(rpmmd.PackageSet{ + Include: []string{ + "attr", + "basesystem", + "binutils", + "bsdtar", + "clevis-dracut", + "clevis-luks", + "cloud-utils-growpart", + "coreos-installer", + "coreos-installer-dracut", + "coreutils", + "device-mapper-multipath", + "dnsmasq", + "dosfstools", + "dracut-live", + "e2fsprogs", + "fcoe-utils", + "fdo-init", + "fedora-logos", + "gdisk", + "gzip", + "ima-evm-utils", + "iproute", + "iptables", + "iputils", + "iscsi-initiator-utils", + "keyutils", + "lldpad", + "lvm2", + "mdadm", + "nss-softokn", + "passwd", + "policycoreutils", + "policycoreutils-python-utils", + "procps-ng", + "rootfiles", + "setools-console", + "sudo", + "traceroute", + "util-linux", + }, + }) + + return ps +} diff --git a/vendor/github.com/osbuild/images/pkg/distro/fedora/partition_tables.go b/vendor/github.com/osbuild/images/pkg/distro/fedora/partition_tables.go index 259920160e..03011234b0 100644 --- a/vendor/github.com/osbuild/images/pkg/distro/fedora/partition_tables.go +++ b/vendor/github.com/osbuild/images/pkg/distro/fedora/partition_tables.go @@ -13,13 +13,13 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ Type: "gpt", Partitions: []disk.Partition{ { - Size: 1 * common.MebiByte, // 1MB + Size: 1 * common.MebiByte, Bootable: true, Type: disk.BIOSBootPartitionGUID, UUID: disk.BIOSBootPartitionUUID, }, { - Size: 200 * common.MebiByte, // 200 MB + Size: 200 * common.MebiByte, Type: disk.EFISystemPartitionGUID, UUID: disk.EFISystemPartitionUUID, Payload: &disk.Filesystem{ @@ -33,7 +33,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 500 * common.MebiByte, // 500 MB + Size: 500 * common.MebiByte, Type: disk.FilesystemDataGUID, UUID: disk.FilesystemDataUUID, Payload: &disk.Filesystem{ @@ -46,7 +46,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 2 * common.GibiByte, // 2GiB + Size: 2 * common.GibiByte, Type: disk.FilesystemDataGUID, UUID: disk.RootPartitionUUID, Payload: &disk.Filesystem{ @@ -65,7 +65,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ Type: "gpt", Partitions: []disk.Partition{ { - Size: 200 * common.MebiByte, // 200 MB + Size: 200 * common.MebiByte, Type: disk.EFISystemPartitionGUID, UUID: disk.EFISystemPartitionUUID, Payload: &disk.Filesystem{ @@ -79,7 +79,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 500 * common.MebiByte, // 500 MB + Size: 500 * common.MebiByte, Type: disk.FilesystemDataGUID, UUID: disk.FilesystemDataUUID, Payload: &disk.Filesystem{ @@ -92,7 +92,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 2 * common.GibiByte, // 2GiB + Size: 2 * common.GibiByte, Type: disk.FilesystemDataGUID, UUID: disk.RootPartitionUUID, Payload: &disk.Filesystem{ @@ -114,7 +114,7 @@ var iotBasePartitionTables = distro.BasePartitionTableMap{ Type: "gpt", Partitions: []disk.Partition{ { - Size: 501 * common.MebiByte, // 501 MiB + Size: 501 * common.MebiByte, Type: disk.EFISystemPartitionGUID, UUID: disk.EFISystemPartitionUUID, Payload: &disk.Filesystem{ @@ -128,7 +128,7 @@ var iotBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 1 * common.GibiByte, // 1 GiB + Size: 1 * common.GibiByte, Type: disk.FilesystemDataGUID, UUID: disk.FilesystemDataUUID, Payload: &disk.Filesystem{ @@ -141,7 +141,7 @@ var iotBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 2569 * common.MebiByte, // 2.5 GiB + Size: 2569 * common.MebiByte, Type: disk.FilesystemDataGUID, UUID: disk.RootPartitionUUID, Payload: &disk.Filesystem{ @@ -160,7 +160,7 @@ var iotBasePartitionTables = distro.BasePartitionTableMap{ Type: "dos", Partitions: []disk.Partition{ { - Size: 501 * common.MebiByte, // 501 MiB + Size: 501 * common.MebiByte, Type: "06", Bootable: true, Payload: &disk.Filesystem{ @@ -174,7 +174,7 @@ var iotBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 1 * common.GibiByte, // 1 GiB + Size: 1 * common.GibiByte, Type: "83", Payload: &disk.Filesystem{ Type: "ext4", @@ -186,7 +186,7 @@ var iotBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 2569 * common.MebiByte, // 2.5 GiB + Size: 2569 * common.MebiByte, Type: "83", Payload: &disk.Filesystem{ Type: "ext4", @@ -200,3 +200,146 @@ var iotBasePartitionTables = distro.BasePartitionTableMap{ }, }, } + +var iotSimplifiedInstallerPartitionTables = distro.BasePartitionTableMap{ + platform.ARCH_X86_64.String(): disk.PartitionTable{ + UUID: "D209C89E-EA5E-4FBD-B161-B461CCE297E0", + Type: "gpt", + Partitions: []disk.Partition{ + { + Size: 501 * common.MebiByte, + Type: disk.EFISystemPartitionGUID, + UUID: disk.EFISystemPartitionUUID, + Payload: &disk.Filesystem{ + Type: "vfat", + UUID: disk.EFIFilesystemUUID, + Mountpoint: "/boot/efi", + Label: "EFI-SYSTEM", + FSTabOptions: "umask=0077,shortname=winnt", + FSTabFreq: 0, + FSTabPassNo: 2, + }, + }, + { + Size: 1 * common.GibiByte, + Type: disk.XBootLDRPartitionGUID, + UUID: disk.FilesystemDataUUID, + Payload: &disk.Filesystem{ + Type: "ext4", + Mountpoint: "/boot", + Label: "boot", + FSTabOptions: "defaults", + FSTabFreq: 1, + FSTabPassNo: 1, + }, + }, + { + Type: disk.FilesystemDataGUID, + UUID: disk.RootPartitionUUID, + Payload: &disk.LUKSContainer{ + Label: "crypt_root", + Cipher: "cipher_null", + Passphrase: "osbuild", + PBKDF: disk.Argon2id{ + Memory: 32, + Iterations: 4, + Parallelism: 1, + }, + Clevis: &disk.ClevisBind{ + Pin: "null", + Policy: "{}", + RemovePassphrase: true, + }, + Payload: &disk.LVMVolumeGroup{ + Name: "rootvg", + Description: "built with lvm2 and osbuild", + LogicalVolumes: []disk.LVMLogicalVolume{ + { + Size: 2569 * common.MebiByte, + Name: "rootlv", + Payload: &disk.Filesystem{ + Type: "ext4", + Label: "root", + Mountpoint: "/", + FSTabOptions: "defaults", + FSTabFreq: 0, + FSTabPassNo: 0, + }, + }, + }, + }, + }, + }, + }, + }, + platform.ARCH_AARCH64.String(): disk.PartitionTable{ + UUID: "0xc1748067", + Type: "dos", + Partitions: []disk.Partition{ + { + Size: 501 * common.MebiByte, + Type: "06", + Bootable: true, + Payload: &disk.Filesystem{ + Type: "vfat", + UUID: disk.EFIFilesystemUUID, + Mountpoint: "/boot/efi", + Label: "EFI-SYSTEM", + FSTabOptions: "umask=0077,shortname=winnt", + FSTabFreq: 0, + FSTabPassNo: 2, + }, + }, + { + Size: 1 * common.GibiByte, + Type: disk.XBootLDRPartitionGUID, + UUID: disk.FilesystemDataUUID, + Payload: &disk.Filesystem{ + Type: "ext4", + Mountpoint: "/boot", + Label: "boot", + FSTabOptions: "defaults", + FSTabFreq: 1, + FSTabPassNo: 1, + }, + }, + { + Type: disk.FilesystemDataGUID, + UUID: disk.RootPartitionUUID, + Payload: &disk.LUKSContainer{ + Label: "crypt_root", + Cipher: "cipher_null", + Passphrase: "osbuild", + PBKDF: disk.Argon2id{ + Memory: 32, + Iterations: 4, + Parallelism: 1, + }, + Clevis: &disk.ClevisBind{ + Pin: "null", + Policy: "{}", + RemovePassphrase: true, + }, + Payload: &disk.LVMVolumeGroup{ + Name: "rootvg", + Description: "built with lvm2 and osbuild", + LogicalVolumes: []disk.LVMLogicalVolume{ + { + Size: 2569 * common.MebiByte, + Name: "rootlv", + Payload: &disk.Filesystem{ + Type: "ext4", + Label: "root", + Mountpoint: "/", + FSTabOptions: "defaults", + FSTabFreq: 0, + FSTabPassNo: 0, + }, + }, + }, + }, + }, + }, + }, + }, +} diff --git a/vendor/github.com/osbuild/images/pkg/distro/rhel7/partition_tables.go b/vendor/github.com/osbuild/images/pkg/distro/rhel7/partition_tables.go index 13b3c724ca..1067cb82d0 100644 --- a/vendor/github.com/osbuild/images/pkg/distro/rhel7/partition_tables.go +++ b/vendor/github.com/osbuild/images/pkg/distro/rhel7/partition_tables.go @@ -7,21 +7,19 @@ import ( "github.com/osbuild/images/pkg/platform" ) -// ////////// Partition table ////////// - var defaultBasePartitionTables = distro.BasePartitionTableMap{ platform.ARCH_X86_64.String(): disk.PartitionTable{ UUID: "D209C89E-EA5E-4FBD-B161-B461CCE297E0", Type: "gpt", Partitions: []disk.Partition{ { - Size: 1 * common.MebiByte, // 1MB + Size: 1 * common.MebiByte, Bootable: true, Type: disk.BIOSBootPartitionGUID, UUID: disk.BIOSBootPartitionUUID, }, { - Size: 200 * common.MebiByte, // 200 MB + Size: 200 * common.MebiByte, Type: disk.EFISystemPartitionGUID, UUID: disk.EFISystemPartitionUUID, Payload: &disk.Filesystem{ @@ -35,7 +33,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 500 * common.MebiByte, // 500 MB + Size: 500 * common.MebiByte, Type: disk.FilesystemDataGUID, UUID: disk.FilesystemDataUUID, Payload: &disk.Filesystem{ @@ -48,7 +46,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 2 * common.GibiByte, // 2GiB + Size: 2 * common.GibiByte, Type: disk.FilesystemDataGUID, UUID: disk.RootPartitionUUID, Payload: &disk.Filesystem{ diff --git a/vendor/github.com/osbuild/images/pkg/distro/rhel8/images.go b/vendor/github.com/osbuild/images/pkg/distro/rhel8/images.go index fd9f47e16e..40d309dca8 100644 --- a/vendor/github.com/osbuild/images/pkg/distro/rhel8/images.go +++ b/vendor/github.com/osbuild/images/pkg/distro/rhel8/images.go @@ -439,7 +439,7 @@ func edgeRawImage(workload workload.Workload, return nil, fmt.Errorf("%s: %s", t.Name(), err.Error()) } - img := image.NewOSTreeRawImage(commit) + img := image.NewOSTreeDiskImage(commit) img.Users = users.UsersFromBP(customizations.GetUsers()) img.Groups = users.GroupsFromBP(customizations.GetGroups()) @@ -484,7 +484,7 @@ func edgeSimplifiedInstallerImage(workload workload.Workload, return nil, fmt.Errorf("%s: %s", t.Name(), err.Error()) } - rawImg := image.NewOSTreeRawImage(commit) + rawImg := image.NewOSTreeDiskImage(commit) rawImg.Users = users.UsersFromBP(customizations.GetUsers()) rawImg.Groups = users.GroupsFromBP(customizations.GetGroups()) diff --git a/vendor/github.com/osbuild/images/pkg/distro/rhel8/partition_tables.go b/vendor/github.com/osbuild/images/pkg/distro/rhel8/partition_tables.go index f85ace189b..fb075e2d74 100644 --- a/vendor/github.com/osbuild/images/pkg/distro/rhel8/partition_tables.go +++ b/vendor/github.com/osbuild/images/pkg/distro/rhel8/partition_tables.go @@ -32,7 +32,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 2 * common.GibiByte, // 2 GiB + Size: 2 * common.GibiByte, Type: disk.FilesystemDataGUID, UUID: disk.RootPartitionUUID, Payload: &disk.Filesystem{ @@ -64,7 +64,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 2 * common.GibiByte, // 2 GiB + Size: 2 * common.GibiByte, Type: disk.FilesystemDataGUID, UUID: disk.RootPartitionUUID, Payload: &disk.Filesystem{ @@ -88,7 +88,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ Bootable: true, }, { - Size: 2 * common.GibiByte, // 2 GiB + Size: 2 * common.GibiByte, Payload: &disk.Filesystem{ Type: "xfs", Mountpoint: "/", @@ -104,7 +104,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ Type: "dos", Partitions: []disk.Partition{ { - Size: 2 * common.GibiByte, // 2 GiB + Size: 2 * common.GibiByte, Bootable: true, Payload: &disk.Filesystem{ Type: "xfs", @@ -233,7 +233,7 @@ var ec2LegacyBasePartitionTables = distro.BasePartitionTableMap{ UUID: disk.BIOSBootPartitionUUID, }, { - Size: 2 * common.GibiByte, // 2 GiB + Size: 2 * common.GibiByte, Type: disk.FilesystemDataGUID, UUID: disk.RootPartitionUUID, Payload: &disk.Filesystem{ @@ -277,7 +277,7 @@ var ec2LegacyBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 2 * common.GibiByte, // 2 GiB + Size: 2 * common.GibiByte, Type: disk.FilesystemDataGUID, UUID: disk.RootPartitionUUID, Payload: &disk.Filesystem{ @@ -305,7 +305,7 @@ var edgeBasePartitionTables = distro.BasePartitionTableMap{ UUID: disk.BIOSBootPartitionUUID, }, { - Size: 127 * common.MebiByte, // 127 MB + Size: 127 * common.MebiByte, Type: disk.EFISystemPartitionGUID, UUID: disk.EFISystemPartitionUUID, Payload: &disk.Filesystem{ @@ -319,7 +319,7 @@ var edgeBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 384 * common.MebiByte, // 384 MB + Size: 384 * common.MebiByte, Type: disk.FilesystemDataGUID, UUID: disk.FilesystemDataUUID, Payload: &disk.Filesystem{ @@ -332,7 +332,7 @@ var edgeBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 2 * common.GibiByte, // 2 GiB + Size: 2 * common.GibiByte, Type: disk.FilesystemDataGUID, UUID: disk.RootPartitionUUID, Payload: &disk.LUKSContainer{ @@ -366,7 +366,7 @@ var edgeBasePartitionTables = distro.BasePartitionTableMap{ Type: "gpt", Partitions: []disk.Partition{ { - Size: 127 * common.MebiByte, // 127 MB + Size: 127 * common.MebiByte, Type: disk.EFISystemPartitionGUID, UUID: disk.EFISystemPartitionUUID, Payload: &disk.Filesystem{ @@ -380,7 +380,7 @@ var edgeBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 384 * common.MebiByte, // 384 MB + Size: 384 * common.MebiByte, Type: disk.FilesystemDataGUID, UUID: disk.FilesystemDataUUID, Payload: &disk.Filesystem{ @@ -393,7 +393,7 @@ var edgeBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 2 * common.GibiByte, // 2 GiB + Size: 2 * common.GibiByte, Type: disk.FilesystemDataGUID, UUID: disk.RootPartitionUUID, Payload: &disk.LUKSContainer{ diff --git a/vendor/github.com/osbuild/images/pkg/distro/rhel9/edge.go b/vendor/github.com/osbuild/images/pkg/distro/rhel9/edge.go index e58e117bbb..9f0795281f 100644 --- a/vendor/github.com/osbuild/images/pkg/distro/rhel9/edge.go +++ b/vendor/github.com/osbuild/images/pkg/distro/rhel9/edge.go @@ -7,6 +7,7 @@ import ( "github.com/osbuild/images/internal/environment" "github.com/osbuild/images/pkg/disk" "github.com/osbuild/images/pkg/distro" + "github.com/osbuild/images/pkg/osbuild" "github.com/osbuild/images/pkg/platform" "github.com/osbuild/images/pkg/rpmmd" ) @@ -23,6 +24,7 @@ var ( }, defaultImageConfig: &distro.ImageConfig{ EnabledServices: edgeServices, + SystemdUnit: systemdUnits, }, rpmOstree: true, image: edgeCommitImage, @@ -46,6 +48,7 @@ var ( }, defaultImageConfig: &distro.ImageConfig{ EnabledServices: edgeServices, + SystemdUnit: systemdUnits, }, rpmOstree: true, bootISO: false, @@ -196,7 +199,19 @@ var ( // TODO(runcom): move fdo-client-linuxapp.service to presets? "NetworkManager.service", "firewalld.service", "sshd.service", "fdo-client-linuxapp.service", } - + //dropin to disable grub-boot-success.timer if greenboot present + systemdUnits = []*osbuild.SystemdUnitStageOptions{ + { + Unit: "grub-boot-success.timer", + Dropin: "10-disable-if-greenboot.conf", + UnitType: osbuild.Global, + Config: osbuild.SystemdServiceUnitDropin{ + Unit: &osbuild.SystemdUnitSection{ + FileExists: "!/usr/libexec/greenboot/greenboot", + }, + }, + }, + } // Partition tables edgeBasePartitionTables = distro.BasePartitionTableMap{ platform.ARCH_X86_64.String(): disk.PartitionTable{ diff --git a/vendor/github.com/osbuild/images/pkg/distro/rhel9/images.go b/vendor/github.com/osbuild/images/pkg/distro/rhel9/images.go index 6764b19b2d..461342f012 100644 --- a/vendor/github.com/osbuild/images/pkg/distro/rhel9/images.go +++ b/vendor/github.com/osbuild/images/pkg/distro/rhel9/images.go @@ -396,18 +396,11 @@ func edgeRawImage(workload workload.Workload, if err != nil { return nil, fmt.Errorf("%s: %s", t.Name(), err.Error()) } - - img := image.NewOSTreeRawImage(commit) - - if !common.VersionLessThan(t.arch.distro.osVersion, "9.2") || t.arch.distro.osVersion == "9-stream" { - img.Ignition = true - } + img := image.NewOSTreeDiskImage(commit) img.Users = users.UsersFromBP(customizations.GetUsers()) img.Groups = users.GroupsFromBP(customizations.GetGroups()) - // "rw" kernel option is required when /sysroot is mounted read-only to - // keep stateful parts of the filesystem writeable (/var/ and /etc) img.KernelOptionsAppend = []string{"modprobe.blacklist=vc4"} img.Keyboard = "us" img.Locale = "C.UTF-8" @@ -416,6 +409,14 @@ func edgeRawImage(workload workload.Workload, img.KernelOptionsAppend = append(img.KernelOptionsAppend, "rw") } + if !common.VersionLessThan(t.arch.distro.osVersion, "9.2") || t.arch.distro.osVersion == "9-stream" { + img.Ignition = true + img.IgnitionPlatform = "metal" + if bpIgnition := customizations.GetIgnition(); bpIgnition != nil && bpIgnition.FirstBoot != nil && bpIgnition.FirstBoot.ProvisioningURL != "" { + img.KernelOptionsAppend = append(img.KernelOptionsAppend, "ignition.config.url="+bpIgnition.FirstBoot.ProvisioningURL) + } + } + img.Platform = t.platform img.Workload = workload img.Remote = ostree.Remote{ @@ -425,11 +426,6 @@ func edgeRawImage(workload workload.Workload, } img.OSName = "redhat" - if bpIgnition := customizations.GetIgnition(); bpIgnition != nil && bpIgnition.FirstBoot != nil && bpIgnition.FirstBoot.ProvisioningURL != "" { - img.KernelOptionsAppend = append(img.KernelOptionsAppend, "ignition.config.url="+bpIgnition.FirstBoot.ProvisioningURL) - } - - // 92+ only if kopts := customizations.GetKernel(); kopts != nil && kopts.Append != "" { img.KernelOptionsAppend = append(img.KernelOptionsAppend, kopts.Append) } @@ -459,17 +455,11 @@ func edgeSimplifiedInstallerImage(workload workload.Workload, if err != nil { return nil, fmt.Errorf("%s: %s", t.Name(), err.Error()) } - - rawImg := image.NewOSTreeRawImage(commit) - if !common.VersionLessThan(t.arch.distro.osVersion, "9.2") || t.arch.distro.osVersion == "9-stream" { - rawImg.Ignition = true - } + rawImg := image.NewOSTreeDiskImage(commit) rawImg.Users = users.UsersFromBP(customizations.GetUsers()) rawImg.Groups = users.GroupsFromBP(customizations.GetGroups()) - // "rw" kernel option is required when /sysroot is mounted read-only to - // keep stateful parts of the filesystem writeable (/var/ and /etc) rawImg.KernelOptionsAppend = []string{"modprobe.blacklist=vc4"} rawImg.Keyboard = "us" rawImg.Locale = "C.UTF-8" @@ -487,6 +477,14 @@ func edgeSimplifiedInstallerImage(workload workload.Workload, } rawImg.OSName = "redhat" + if !common.VersionLessThan(t.arch.distro.osVersion, "9.2") || t.arch.distro.osVersion == "9-stream" { + rawImg.Ignition = true + rawImg.IgnitionPlatform = "metal" + if bpIgnition := customizations.GetIgnition(); bpIgnition != nil && bpIgnition.FirstBoot != nil && bpIgnition.FirstBoot.ProvisioningURL != "" { + rawImg.KernelOptionsAppend = append(rawImg.KernelOptionsAppend, "ignition.config.url="+bpIgnition.FirstBoot.ProvisioningURL) + } + } + // TODO: move generation into LiveImage pt, err := t.getPartitionTable(customizations.GetFilesystems(), options, rng) if err != nil { @@ -496,10 +494,6 @@ func edgeSimplifiedInstallerImage(workload workload.Workload, rawImg.Filename = t.Filename() - if bpIgnition := customizations.GetIgnition(); bpIgnition != nil && bpIgnition.FirstBoot != nil && bpIgnition.FirstBoot.ProvisioningURL != "" { - rawImg.KernelOptionsAppend = append(rawImg.KernelOptionsAppend, "ignition.config.url="+bpIgnition.FirstBoot.ProvisioningURL) - } - // 92+ only if kopts := customizations.GetKernel(); kopts != nil && kopts.Append != "" { rawImg.KernelOptionsAppend = append(rawImg.KernelOptionsAppend, kopts.Append) diff --git a/vendor/github.com/osbuild/images/pkg/distro/rhel9/partition_tables.go b/vendor/github.com/osbuild/images/pkg/distro/rhel9/partition_tables.go index a4d726567d..329542d404 100644 --- a/vendor/github.com/osbuild/images/pkg/distro/rhel9/partition_tables.go +++ b/vendor/github.com/osbuild/images/pkg/distro/rhel9/partition_tables.go @@ -13,13 +13,13 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ Type: "gpt", Partitions: []disk.Partition{ { - Size: 1 * common.MebiByte, // 1MB + Size: 1 * common.MebiByte, Bootable: true, Type: disk.BIOSBootPartitionGUID, UUID: disk.BIOSBootPartitionUUID, }, { - Size: 200 * common.MebiByte, // 200 MB + Size: 200 * common.MebiByte, Type: disk.EFISystemPartitionGUID, UUID: disk.EFISystemPartitionUUID, Payload: &disk.Filesystem{ @@ -33,7 +33,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 500 * common.MebiByte, // 500 MB + Size: 500 * common.MebiByte, Type: disk.XBootLDRPartitionGUID, UUID: disk.FilesystemDataUUID, Payload: &disk.Filesystem{ @@ -46,7 +46,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 2 * common.GibiByte, // 2GiB + Size: 2 * common.GibiByte, Type: disk.FilesystemDataGUID, UUID: disk.RootPartitionUUID, Payload: &disk.Filesystem{ @@ -65,7 +65,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ Type: "gpt", Partitions: []disk.Partition{ { - Size: 200 * common.MebiByte, // 200 MB + Size: 200 * common.MebiByte, Type: disk.EFISystemPartitionGUID, UUID: disk.EFISystemPartitionUUID, Payload: &disk.Filesystem{ @@ -79,7 +79,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 500 * common.MebiByte, // 500 MB + Size: 500 * common.MebiByte, Type: disk.XBootLDRPartitionGUID, UUID: disk.FilesystemDataUUID, Payload: &disk.Filesystem{ @@ -92,7 +92,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 2 * common.GibiByte, // 2GiB + Size: 2 * common.GibiByte, Type: disk.FilesystemDataGUID, UUID: disk.RootPartitionUUID, Payload: &disk.Filesystem{ @@ -116,7 +116,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ Bootable: true, }, { - Size: 500 * common.MebiByte, // 500 MB + Size: 500 * common.MebiByte, Payload: &disk.Filesystem{ Type: "xfs", Mountpoint: "/boot", @@ -127,7 +127,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 2 * common.GibiByte, // 2GiB + Size: 2 * common.GibiByte, Payload: &disk.Filesystem{ Type: "xfs", Mountpoint: "/", @@ -143,7 +143,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ Type: "dos", Partitions: []disk.Partition{ { - Size: 500 * common.MebiByte, // 500 MB + Size: 500 * common.MebiByte, Payload: &disk.Filesystem{ Type: "xfs", Mountpoint: "/boot", @@ -154,7 +154,7 @@ var defaultBasePartitionTables = distro.BasePartitionTableMap{ }, }, { - Size: 2 * common.GibiByte, // 2GiB + Size: 2 * common.GibiByte, Bootable: true, Payload: &disk.Filesystem{ Type: "xfs", diff --git a/vendor/github.com/osbuild/images/pkg/image/anaconda_live_installer.go b/vendor/github.com/osbuild/images/pkg/image/anaconda_live_installer.go index 2516b16af5..917ba8ed27 100644 --- a/vendor/github.com/osbuild/images/pkg/image/anaconda_live_installer.go +++ b/vendor/github.com/osbuild/images/pkg/image/anaconda_live_installer.go @@ -82,7 +82,7 @@ func (img *AnacondaLiveInstaller) InstantiateManifest(m *manifest.Manifest, // TODO: replace isoLabelTmpl with more high-level properties isoLabel := fmt.Sprintf(img.ISOLabelTempl, img.Platform.GetArch()) - rootfsImagePipeline := manifest.NewISORootfsImg(m, buildPipeline, livePipeline) + rootfsImagePipeline := manifest.NewISORootfsImg(buildPipeline, livePipeline) rootfsImagePipeline.Size = 8 * common.GibiByte bootTreePipeline := manifest.NewEFIBootTree(m, buildPipeline, img.Product, img.OSVersion) @@ -104,12 +104,7 @@ func (img *AnacondaLiveInstaller) InstantiateManifest(m *manifest.Manifest, // enable ISOLinux on x86_64 only isoLinuxEnabled := img.Platform.GetArch() == platform.ARCH_X86_64 - isoTreePipeline := manifest.NewAnacondaInstallerISOTree(m, - buildPipeline, - livePipeline, - rootfsImagePipeline, - bootTreePipeline, - isoLabel) + isoTreePipeline := manifest.NewAnacondaInstallerISOTree(buildPipeline, livePipeline, rootfsImagePipeline, bootTreePipeline) isoTreePipeline.PartitionTable = rootfsPartitionTable isoTreePipeline.Release = img.Release isoTreePipeline.OSName = img.OSName @@ -117,8 +112,8 @@ func (img *AnacondaLiveInstaller) InstantiateManifest(m *manifest.Manifest, isoTreePipeline.KernelOpts = kernelOpts isoTreePipeline.ISOLinux = isoLinuxEnabled - isoPipeline := manifest.NewISO(m, buildPipeline, isoTreePipeline, isoLabel) - isoPipeline.Filename = img.Filename + isoPipeline := manifest.NewISO(buildPipeline, isoTreePipeline, isoLabel) + isoPipeline.SetFilename(img.Filename) isoPipeline.ISOLinux = isoLinuxEnabled artifact := isoPipeline.Export() diff --git a/vendor/github.com/osbuild/images/pkg/image/anaconda_ostree_installer.go b/vendor/github.com/osbuild/images/pkg/image/anaconda_ostree_installer.go index 9a9e758563..7c2e1bf254 100644 --- a/vendor/github.com/osbuild/images/pkg/image/anaconda_ostree_installer.go +++ b/vendor/github.com/osbuild/images/pkg/image/anaconda_ostree_installer.go @@ -91,7 +91,7 @@ func (img *AnacondaOSTreeInstaller) InstantiateManifest(m *manifest.Manifest, // TODO: replace isoLabelTmpl with more high-level properties isoLabel := fmt.Sprintf(img.ISOLabelTempl, img.Platform.GetArch()) - rootfsImagePipeline := manifest.NewISORootfsImg(m, buildPipeline, anacondaPipeline) + rootfsImagePipeline := manifest.NewISORootfsImg(buildPipeline, anacondaPipeline) rootfsImagePipeline.Size = 4 * common.GibiByte bootTreePipeline := manifest.NewEFIBootTree(m, buildPipeline, img.Product, img.OSVersion) @@ -103,12 +103,7 @@ func (img *AnacondaOSTreeInstaller) InstantiateManifest(m *manifest.Manifest, // enable ISOLinux on x86_64 only isoLinuxEnabled := img.Platform.GetArch() == platform.ARCH_X86_64 - isoTreePipeline := manifest.NewAnacondaInstallerISOTree(m, - buildPipeline, - anacondaPipeline, - rootfsImagePipeline, - bootTreePipeline, - isoLabel) + isoTreePipeline := manifest.NewAnacondaInstallerISOTree(buildPipeline, anacondaPipeline, rootfsImagePipeline, bootTreePipeline) isoTreePipeline.PartitionTable = rootfsPartitionTable isoTreePipeline.Release = img.Release isoTreePipeline.OSName = img.OSName @@ -124,8 +119,8 @@ func (img *AnacondaOSTreeInstaller) InstantiateManifest(m *manifest.Manifest, isoTreePipeline.OSTreeCommitSource = &img.Commit isoTreePipeline.ISOLinux = isoLinuxEnabled - isoPipeline := manifest.NewISO(m, buildPipeline, isoTreePipeline, isoLabel) - isoPipeline.Filename = img.Filename + isoPipeline := manifest.NewISO(buildPipeline, isoTreePipeline, isoLabel) + isoPipeline.SetFilename(img.Filename) isoPipeline.ISOLinux = isoLinuxEnabled artifact := isoPipeline.Export() diff --git a/vendor/github.com/osbuild/images/pkg/image/anaconda_tar_installer.go b/vendor/github.com/osbuild/images/pkg/image/anaconda_tar_installer.go index 5a0e2dd1df..49cb1ad4cb 100644 --- a/vendor/github.com/osbuild/images/pkg/image/anaconda_tar_installer.go +++ b/vendor/github.com/osbuild/images/pkg/image/anaconda_tar_installer.go @@ -111,7 +111,7 @@ func (img *AnacondaTarInstaller) InstantiateManifest(m *manifest.Manifest, // TODO: replace isoLabelTmpl with more high-level properties isoLabel := fmt.Sprintf(img.ISOLabelTempl, img.Platform.GetArch()) - rootfsImagePipeline := manifest.NewISORootfsImg(m, buildPipeline, anacondaPipeline) + rootfsImagePipeline := manifest.NewISORootfsImg(buildPipeline, anacondaPipeline) rootfsImagePipeline.Size = 4 * common.GibiByte bootTreePipeline := manifest.NewEFIBootTree(m, buildPipeline, img.Product, img.OSVersion) @@ -134,12 +134,7 @@ func (img *AnacondaTarInstaller) InstantiateManifest(m *manifest.Manifest, // enable ISOLinux on x86_64 only isoLinuxEnabled := img.Platform.GetArch() == platform.ARCH_X86_64 - isoTreePipeline := manifest.NewAnacondaInstallerISOTree(m, - buildPipeline, - anacondaPipeline, - rootfsImagePipeline, - bootTreePipeline, - isoLabel) + isoTreePipeline := manifest.NewAnacondaInstallerISOTree(buildPipeline, anacondaPipeline, rootfsImagePipeline, bootTreePipeline) isoTreePipeline.PartitionTable = rootfsPartitionTable isoTreePipeline.Release = img.Release isoTreePipeline.OSName = img.OSName @@ -156,8 +151,8 @@ func (img *AnacondaTarInstaller) InstantiateManifest(m *manifest.Manifest, isoTreePipeline.KernelOpts = img.AdditionalKernelOpts isoTreePipeline.ISOLinux = isoLinuxEnabled - isoPipeline := manifest.NewISO(m, buildPipeline, isoTreePipeline, isoLabel) - isoPipeline.Filename = img.Filename + isoPipeline := manifest.NewISO(buildPipeline, isoTreePipeline, isoLabel) + isoPipeline.SetFilename(img.Filename) isoPipeline.ISOLinux = isoLinuxEnabled artifact := isoPipeline.Export() diff --git a/vendor/github.com/osbuild/images/pkg/image/archive.go b/vendor/github.com/osbuild/images/pkg/image/archive.go index 593aaff8aa..edf30a0a9d 100644 --- a/vendor/github.com/osbuild/images/pkg/image/archive.go +++ b/vendor/github.com/osbuild/images/pkg/image/archive.go @@ -39,8 +39,8 @@ func (img *Archive) InstantiateManifest(m *manifest.Manifest, osPipeline.Environment = img.Environment osPipeline.Workload = img.Workload - tarPipeline := manifest.NewTar(m, buildPipeline, &osPipeline.Base, "archive") - tarPipeline.Filename = img.Filename + tarPipeline := manifest.NewTar(buildPipeline, osPipeline, "archive") + tarPipeline.SetFilename(img.Filename) artifact := tarPipeline.Export() return artifact, nil diff --git a/vendor/github.com/osbuild/images/pkg/image/container.go b/vendor/github.com/osbuild/images/pkg/image/container.go index edce4a9a2c..c967ea5967 100644 --- a/vendor/github.com/osbuild/images/pkg/image/container.go +++ b/vendor/github.com/osbuild/images/pkg/image/container.go @@ -39,8 +39,8 @@ func (img *BaseContainer) InstantiateManifest(m *manifest.Manifest, osPipeline.Environment = img.Environment osPipeline.Workload = img.Workload - ociPipeline := manifest.NewOCIContainer(m, buildPipeline, osPipeline) - ociPipeline.Filename = img.Filename + ociPipeline := manifest.NewOCIContainer(buildPipeline, osPipeline) + ociPipeline.SetFilename(img.Filename) artifact := ociPipeline.Export() return artifact, nil diff --git a/vendor/github.com/osbuild/images/pkg/image/disk.go b/vendor/github.com/osbuild/images/pkg/image/disk.go index 0a3f503143..4e061f2108 100644 --- a/vendor/github.com/osbuild/images/pkg/image/disk.go +++ b/vendor/github.com/osbuild/images/pkg/image/disk.go @@ -58,76 +58,59 @@ func (img *DiskImage) InstantiateManifest(m *manifest.Manifest, osPipeline.OSVersion = img.OSVersion osPipeline.OSNick = img.OSNick - imagePipeline := manifest.NewRawImage(m, buildPipeline, osPipeline) - imagePipeline.PartTool = img.PartTool + rawImagePipeline := manifest.NewRawImage(buildPipeline, osPipeline) + rawImagePipeline.PartTool = img.PartTool - var artifact *artifact.Artifact - var artifactPipeline manifest.Pipeline + var imagePipeline manifest.FilePipeline switch img.Platform.GetImageFormat() { case platform.FORMAT_RAW: - if img.Compression == "" { - imagePipeline.Filename = img.Filename - } - artifactPipeline = imagePipeline - artifact = imagePipeline.Export() + imagePipeline = rawImagePipeline case platform.FORMAT_QCOW2: - qcow2Pipeline := manifest.NewQCOW2(m, buildPipeline, imagePipeline) - if img.Compression == "" { - qcow2Pipeline.Filename = img.Filename - } + qcow2Pipeline := manifest.NewQCOW2(buildPipeline, rawImagePipeline) qcow2Pipeline.Compat = img.Platform.GetQCOW2Compat() - artifactPipeline = qcow2Pipeline - artifact = qcow2Pipeline.Export() + imagePipeline = qcow2Pipeline case platform.FORMAT_VHD: - vpcPipeline := manifest.NewVPC(m, buildPipeline, imagePipeline) - if img.Compression == "" { - vpcPipeline.Filename = img.Filename - } + vpcPipeline := manifest.NewVPC(buildPipeline, rawImagePipeline) vpcPipeline.ForceSize = img.ForceSize - artifactPipeline = vpcPipeline - artifact = vpcPipeline.Export() + imagePipeline = vpcPipeline case platform.FORMAT_VMDK: - vmdkPipeline := manifest.NewVMDK(m, buildPipeline, imagePipeline, nil) - if img.Compression == "" { - vmdkPipeline.Filename = img.Filename - } - artifactPipeline = vmdkPipeline - artifact = vmdkPipeline.Export() + imagePipeline = manifest.NewVMDK(buildPipeline, rawImagePipeline) case platform.FORMAT_OVA: - vmdkPipeline := manifest.NewVMDK(m, buildPipeline, imagePipeline, nil) - ovfPipeline := manifest.NewOVF(m, buildPipeline, vmdkPipeline) - artifactPipeline := manifest.NewTar(m, buildPipeline, ovfPipeline, "archive") - artifactPipeline.Format = osbuild.TarArchiveFormatUstar - artifactPipeline.RootNode = osbuild.TarRootNodeOmit - artifactPipeline.Filename = img.Filename - artifact = artifactPipeline.Export() + vmdkPipeline := manifest.NewVMDK(buildPipeline, rawImagePipeline) + ovfPipeline := manifest.NewOVF(buildPipeline, vmdkPipeline) + tarPipeline := manifest.NewTar(buildPipeline, ovfPipeline, "archive") + tarPipeline.Format = osbuild.TarArchiveFormatUstar + tarPipeline.RootNode = osbuild.TarRootNodeOmit + tarPipeline.SetFilename(img.Filename) + imagePipeline = tarPipeline case platform.FORMAT_GCE: // NOTE(akoutsou): temporary workaround; filename required for GCP // TODO: define internal raw filename on image type - imagePipeline.Filename = "disk.raw" - archivePipeline := manifest.NewTar(m, buildPipeline, imagePipeline, "archive") - archivePipeline.Format = osbuild.TarArchiveFormatOldgnu - archivePipeline.RootNode = osbuild.TarRootNodeOmit + rawImagePipeline.SetFilename("disk.raw") + tarPipeline := manifest.NewTar(buildPipeline, rawImagePipeline, "archive") + tarPipeline.Format = osbuild.TarArchiveFormatOldgnu + tarPipeline.RootNode = osbuild.TarRootNodeOmit // these are required to successfully import the image to GCP - archivePipeline.ACLs = common.ToPtr(false) - archivePipeline.SELinux = common.ToPtr(false) - archivePipeline.Xattrs = common.ToPtr(false) - archivePipeline.Filename = img.Filename // filename extension will determine compression + tarPipeline.ACLs = common.ToPtr(false) + tarPipeline.SELinux = common.ToPtr(false) + tarPipeline.Xattrs = common.ToPtr(false) + tarPipeline.SetFilename(img.Filename) // filename extension will determine compression + imagePipeline = tarPipeline default: panic("invalid image format for image kind") } switch img.Compression { case "xz": - xzPipeline := manifest.NewXZ(m, buildPipeline, artifactPipeline) - xzPipeline.Filename = img.Filename - artifact = xzPipeline.Export() + xzPipeline := manifest.NewXZ(buildPipeline, imagePipeline) + xzPipeline.SetFilename(img.Filename) + return xzPipeline.Export(), nil case "": - // do nothing + // don't compress, but make sure the pipeline's filename is set + imagePipeline.SetFilename(img.Filename) + return imagePipeline.Export(), nil default: // panic on unknown strings panic(fmt.Sprintf("unsupported compression type %q", img.Compression)) } - - return artifact, nil } diff --git a/vendor/github.com/osbuild/images/pkg/image/ostree_archive.go b/vendor/github.com/osbuild/images/pkg/image/ostree_archive.go index 8d14554ada..deb789d3ce 100644 --- a/vendor/github.com/osbuild/images/pkg/image/ostree_archive.go +++ b/vendor/github.com/osbuild/images/pkg/image/ostree_archive.go @@ -56,11 +56,11 @@ func (img *OSTreeArchive) InstantiateManifest(m *manifest.Manifest, osPipeline.OSTreeRef = img.OSTreeRef osPipeline.InstallWeakDeps = img.InstallWeakDeps - ostreeCommitPipeline := manifest.NewOSTreeCommit(m, buildPipeline, osPipeline, img.OSTreeRef) + ostreeCommitPipeline := manifest.NewOSTreeCommit(buildPipeline, osPipeline, img.OSTreeRef) ostreeCommitPipeline.OSVersion = img.OSVersion - tarPipeline := manifest.NewTar(m, buildPipeline, &ostreeCommitPipeline.Base, "commit-archive") - tarPipeline.Filename = img.Filename + tarPipeline := manifest.NewTar(buildPipeline, ostreeCommitPipeline, "commit-archive") + tarPipeline.SetFilename(img.Filename) artifact := tarPipeline.Export() return artifact, nil diff --git a/vendor/github.com/osbuild/images/pkg/image/ostree_container.go b/vendor/github.com/osbuild/images/pkg/image/ostree_container.go index 99d6dadca9..75373e31f2 100644 --- a/vendor/github.com/osbuild/images/pkg/image/ostree_container.go +++ b/vendor/github.com/osbuild/images/pkg/image/ostree_container.go @@ -54,7 +54,7 @@ func (img *OSTreeContainer) InstantiateManifest(m *manifest.Manifest, osPipeline.OSTreeRef = img.OSTreeRef osPipeline.OSTreeParent = img.OSTreeParent - commitPipeline := manifest.NewOSTreeCommit(m, buildPipeline, osPipeline, img.OSTreeRef) + commitPipeline := manifest.NewOSTreeCommit(buildPipeline, osPipeline, img.OSTreeRef) commitPipeline.OSVersion = img.OSVersion nginxConfigPath := "/etc/nginx.conf" @@ -69,10 +69,10 @@ func (img *OSTreeContainer) InstantiateManifest(m *manifest.Manifest, listenPort) serverPipeline.Language = img.ContainerLanguage - containerPipeline := manifest.NewOCIContainer(m, buildPipeline, serverPipeline) + containerPipeline := manifest.NewOCIContainer(buildPipeline, serverPipeline) containerPipeline.Cmd = []string{"nginx", "-c", nginxConfigPath} containerPipeline.ExposedPorts = []string{listenPort} - containerPipeline.Filename = img.Filename + containerPipeline.SetFilename(img.Filename) artifact := containerPipeline.Export() return artifact, nil diff --git a/vendor/github.com/osbuild/images/pkg/image/ostree_raw.go b/vendor/github.com/osbuild/images/pkg/image/ostree_disk.go similarity index 54% rename from vendor/github.com/osbuild/images/pkg/image/ostree_raw.go rename to vendor/github.com/osbuild/images/pkg/image/ostree_disk.go index 3c013a7cdd..a89ed28982 100644 --- a/vendor/github.com/osbuild/images/pkg/image/ostree_raw.go +++ b/vendor/github.com/osbuild/images/pkg/image/ostree_disk.go @@ -16,7 +16,7 @@ import ( "github.com/osbuild/images/pkg/runner" ) -type OSTreeRawImage struct { +type OSTreeDiskImage struct { Base Platform platform.Platform @@ -39,32 +39,23 @@ type OSTreeRawImage struct { Filename string - Compression string - - Ignition bool + Ignition bool + IgnitionPlatform string + Compression string Directories []*fsnode.Directory Files []*fsnode.File } -func NewOSTreeRawImage(commit ostree.SourceSpec) *OSTreeRawImage { - return &OSTreeRawImage{ +func NewOSTreeDiskImage(commit ostree.SourceSpec) *OSTreeDiskImage { + return &OSTreeDiskImage{ Base: NewBase("ostree-raw-image"), CommitSource: commit, } } -func ostreeCompressedImagePipelines(img *OSTreeRawImage, m *manifest.Manifest, buildPipeline *manifest.Build) *manifest.XZ { - imagePipeline := baseRawOstreeImage(img, m, buildPipeline) - - xzPipeline := manifest.NewXZ(m, buildPipeline, imagePipeline) - xzPipeline.Filename = img.Filename - - return xzPipeline -} - -func baseRawOstreeImage(img *OSTreeRawImage, m *manifest.Manifest, buildPipeline *manifest.Build) *manifest.RawOSTreeImage { - osPipeline := manifest.NewOSTreeDeployment(m, buildPipeline, img.CommitSource, img.OSName, img.Ignition, img.Platform) +func baseRawOstreeImage(img *OSTreeDiskImage, m *manifest.Manifest, buildPipeline *manifest.Build) *manifest.RawOSTreeImage { + osPipeline := manifest.NewOSTreeDeployment(buildPipeline, m, img.CommitSource, img.OSName, img.Ignition, img.IgnitionPlatform, img.Platform) osPipeline.PartitionTable = img.PartitionTable osPipeline.Remote = img.Remote osPipeline.KernelOptionsAppend = img.KernelOptionsAppend @@ -80,39 +71,48 @@ func baseRawOstreeImage(img *OSTreeRawImage, m *manifest.Manifest, buildPipeline osPipeline.EnabledServices = img.Workload.GetServices() osPipeline.DisabledServices = img.Workload.GetDisabledServices() - return manifest.NewRawOStreeImage(m, buildPipeline, img.Platform, osPipeline) + return manifest.NewRawOStreeImage(buildPipeline, osPipeline, img.Platform) } -func (img *OSTreeRawImage) InstantiateManifest(m *manifest.Manifest, +func (img *OSTreeDiskImage) InstantiateManifest(m *manifest.Manifest, repos []rpmmd.RepoConfig, runner runner.Runner, rng *rand.Rand) (*artifact.Artifact, error) { buildPipeline := manifest.NewBuild(m, runner, repos) buildPipeline.Checkpoint() - var art *artifact.Artifact + // don't support compressing non-raw images + imgFormat := img.Platform.GetImageFormat() + if imgFormat == platform.FORMAT_UNSET { + // treat unset as raw for this check + imgFormat = platform.FORMAT_RAW + } + if imgFormat != platform.FORMAT_RAW && img.Compression != "" { + panic(fmt.Sprintf("no compression is allowed with %q format for %q", imgFormat, img.name)) + } + + baseImage := baseRawOstreeImage(img, m, buildPipeline) switch img.Platform.GetImageFormat() { case platform.FORMAT_VMDK: - if img.Compression != "" { - panic(fmt.Sprintf("no compression is allowed with VMDK format for %q", img.name)) - } - ostreeBase := baseRawOstreeImage(img, m, buildPipeline) - vmdkPipeline := manifest.NewVMDK(m, buildPipeline, nil, ostreeBase) - vmdkPipeline.Filename = img.Filename - art = vmdkPipeline.Export() + vmdkPipeline := manifest.NewVMDK(buildPipeline, baseImage) + vmdkPipeline.SetFilename(img.Filename) + return vmdkPipeline.Export(), nil + case platform.FORMAT_QCOW2: + qcow2Pipeline := manifest.NewQCOW2(buildPipeline, baseImage) + qcow2Pipeline.Compat = img.Platform.GetQCOW2Compat() + qcow2Pipeline.SetFilename(img.Filename) + return qcow2Pipeline.Export(), nil default: switch img.Compression { case "xz": - ostreeCompressed := ostreeCompressedImagePipelines(img, m, buildPipeline) - art = ostreeCompressed.Export() + compressedImage := manifest.NewXZ(buildPipeline, baseImage) + compressedImage.SetFilename(img.Filename) + return compressedImage.Export(), nil case "": - ostreeBase := baseRawOstreeImage(img, m, buildPipeline) - ostreeBase.Filename = img.Filename - art = ostreeBase.Export() + baseImage.SetFilename(img.Filename) + return baseImage.Export(), nil default: panic(fmt.Sprintf("unsupported compression type %q on %q", img.Compression, img.name)) } } - - return art, nil } diff --git a/vendor/github.com/osbuild/images/pkg/image/ostree_simplified_installer.go b/vendor/github.com/osbuild/images/pkg/image/ostree_simplified_installer.go index f7d714b0af..4ca39af0ff 100644 --- a/vendor/github.com/osbuild/images/pkg/image/ostree_simplified_installer.go +++ b/vendor/github.com/osbuild/images/pkg/image/ostree_simplified_installer.go @@ -21,7 +21,7 @@ type OSTreeSimplifiedInstaller struct { Base // Raw image that will be created and embedded - rawImage *OSTreeRawImage + rawImage *OSTreeDiskImage Platform platform.Platform OSCustomizations manifest.OSCustomizations @@ -60,7 +60,7 @@ type OSTreeSimplifiedInstaller struct { AdditionalDracutModules []string } -func NewOSTreeSimplifiedInstaller(rawImage *OSTreeRawImage, installDevice string) *OSTreeSimplifiedInstaller { +func NewOSTreeSimplifiedInstaller(rawImage *OSTreeDiskImage, installDevice string) *OSTreeSimplifiedInstaller { return &OSTreeSimplifiedInstaller{ Base: NewBase("ostree-simplified-installer"), rawImage: rawImage, @@ -75,11 +75,11 @@ func (img *OSTreeSimplifiedInstaller) InstantiateManifest(m *manifest.Manifest, buildPipeline := manifest.NewBuild(m, runner, repos) buildPipeline.Checkpoint() - rawImageFilename := "image.raw.xz" + imageFilename := "image.raw.xz" - // create the raw image - img.rawImage.Filename = rawImageFilename - rawImage := ostreeCompressedImagePipelines(img.rawImage, m, buildPipeline) + // image in simplified installer is always compressed + compressedImage := manifest.NewXZ(buildPipeline, baseRawOstreeImage(img.rawImage, m, buildPipeline)) + compressedImage.SetFilename(imageFilename) coiPipeline := manifest.NewCoreOSInstaller(m, buildPipeline, @@ -109,7 +109,7 @@ func (img *OSTreeSimplifiedInstaller) InstantiateManifest(m *manifest.Manifest, "coreos.inst.crypt_root=1", "coreos.inst.isoroot=" + isoLabel, "coreos.inst.install_dev=" + img.installDevice, - fmt.Sprintf("coreos.inst.image_file=/run/media/iso/%s", rawImageFilename), + fmt.Sprintf("coreos.inst.image_file=/run/media/iso/%s", imageFilename), "coreos.inst.insecure", } @@ -147,20 +147,15 @@ func (img *OSTreeSimplifiedInstaller) InstantiateManifest(m *manifest.Manifest, // enable ISOLinux on x86_64 only isoLinuxEnabled := img.Platform.GetArch() == platform.ARCH_X86_64 - isoTreePipeline := manifest.NewCoreOSISOTree(m, - buildPipeline, - rawImage, - coiPipeline, - bootTreePipeline, - isoLabel) + isoTreePipeline := manifest.NewCoreOSISOTree(buildPipeline, compressedImage, coiPipeline, bootTreePipeline) isoTreePipeline.KernelOpts = kernelOpts isoTreePipeline.PartitionTable = rootfsPartitionTable isoTreePipeline.OSName = img.OSName - isoTreePipeline.PayloadPath = fmt.Sprintf("/%s", rawImageFilename) + isoTreePipeline.PayloadPath = fmt.Sprintf("/%s", imageFilename) isoTreePipeline.ISOLinux = isoLinuxEnabled - isoPipeline := manifest.NewISO(m, buildPipeline, isoTreePipeline, isoLabel) - isoPipeline.Filename = img.Filename + isoPipeline := manifest.NewISO(buildPipeline, isoTreePipeline, isoLabel) + isoPipeline.SetFilename(img.Filename) isoPipeline.ISOLinux = isoLinuxEnabled artifact := isoPipeline.Export() diff --git a/vendor/github.com/osbuild/images/pkg/manifest/anaconda_installer.go b/vendor/github.com/osbuild/images/pkg/manifest/anaconda_installer.go index b172fc6ed2..f3c034814d 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/anaconda_installer.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/anaconda_installer.go @@ -367,7 +367,7 @@ func dracutStageOptions(kernelVer string, biosdevname bool, additionalModules [] } } -func (p *AnacondaInstaller) GetPlatform() platform.Platform { +func (p *AnacondaInstaller) Platform() platform.Platform { return p.platform } diff --git a/vendor/github.com/osbuild/images/pkg/manifest/anaconda_installer_iso_tree.go b/vendor/github.com/osbuild/images/pkg/manifest/anaconda_installer_iso_tree.go index 9f7c25ebee..02bb67e8e5 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/anaconda_installer_iso_tree.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/anaconda_installer_iso_tree.go @@ -55,25 +55,22 @@ type AnacondaInstallerISOTree struct { ISOLinux bool } -func NewAnacondaInstallerISOTree(m *Manifest, - buildPipeline *Build, - anacondaPipeline *AnacondaInstaller, - rootfsPipeline *ISORootfsImg, - bootTreePipeline *EFIBootTree, - isoLabel string) *AnacondaInstallerISOTree { +func NewAnacondaInstallerISOTree(buildPipeline *Build, anacondaPipeline *AnacondaInstaller, rootfsPipeline *ISORootfsImg, bootTreePipeline *EFIBootTree) *AnacondaInstallerISOTree { + // the three pipelines should all belong to the same manifest + if anacondaPipeline.Manifest() != rootfsPipeline.Manifest() || + anacondaPipeline.Manifest() != bootTreePipeline.Manifest() { + panic("pipelines from different manifests") + } p := &AnacondaInstallerISOTree{ - Base: NewBase(m, "bootiso-tree", buildPipeline), + Base: NewBase(anacondaPipeline.Manifest(), "bootiso-tree", buildPipeline), anacondaPipeline: anacondaPipeline, rootfsPipeline: rootfsPipeline, bootTreePipeline: bootTreePipeline, - isoLabel: isoLabel, + isoLabel: bootTreePipeline.ISOLabel, } buildPipeline.addDependent(p) - if anacondaPipeline.Base.manifest != m { - panic("anaconda pipeline from different manifest") - } - m.addPipeline(p) + anacondaPipeline.Manifest().addPipeline(p) return p } diff --git a/vendor/github.com/osbuild/images/pkg/manifest/coi_iso_tree.go b/vendor/github.com/osbuild/images/pkg/manifest/coi_iso_tree.go index 38cee42006..19101136ed 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/coi_iso_tree.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/coi_iso_tree.go @@ -35,25 +35,27 @@ type CoreOSISOTree struct { KernelOpts []string } -func NewCoreOSISOTree(m *Manifest, +func NewCoreOSISOTree( buildPipeline *Build, payloadPipeline *XZ, coiPipeline *CoreOSInstaller, - bootTreePipeline *EFIBootTree, - isoLabel string) *CoreOSISOTree { + bootTreePipeline *EFIBootTree) *CoreOSISOTree { + + // the three pipelines should all belong to the same manifest + if payloadPipeline.Manifest() != coiPipeline.Manifest() || + payloadPipeline.Manifest() != bootTreePipeline.Manifest() { + panic("pipelines from different manifests") + } p := &CoreOSISOTree{ - Base: NewBase(m, "bootiso-tree", buildPipeline), + Base: NewBase(coiPipeline.Manifest(), "bootiso-tree", buildPipeline), payloadPipeline: payloadPipeline, coiPipeline: coiPipeline, bootTreePipeline: bootTreePipeline, - isoLabel: isoLabel, + isoLabel: bootTreePipeline.ISOLabel, } buildPipeline.addDependent(p) - if coiPipeline.Base.manifest != m { - panic("anaconda pipeline from different manifest") - } - m.addPipeline(p) + coiPipeline.Manifest().addPipeline(p) return p } @@ -64,12 +66,12 @@ func (p *CoreOSISOTree) serialize() osbuild.Pipeline { &osbuild.CopyStageOptions{ Paths: []osbuild.CopyStagePath{ { - From: fmt.Sprintf("input://file/%s", p.payloadPipeline.Filename), + From: fmt.Sprintf("input://file/%s", p.payloadPipeline.Filename()), To: fmt.Sprintf("tree://%s", p.PayloadPath), }, }, }, - osbuild.NewXzStageInputs(osbuild.NewFilesInputPipelineObjectRef(p.payloadPipeline.Name(), p.payloadPipeline.Filename, nil)), + osbuild.NewXzStageInputs(osbuild.NewFilesInputPipelineObjectRef(p.payloadPipeline.Name(), p.payloadPipeline.Filename(), nil)), )) if p.coiPipeline.Ignition != nil { diff --git a/vendor/github.com/osbuild/images/pkg/manifest/commit.go b/vendor/github.com/osbuild/images/pkg/manifest/commit.go index 89155c6870..018c1f4f11 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/commit.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/commit.go @@ -16,20 +16,14 @@ type OSTreeCommit struct { // NewOSTreeCommit creates a new OSTree commit pipeline. The // treePipeline is the tree representing the content of the commit. // ref is the ref to create the commit under. -func NewOSTreeCommit(m *Manifest, - buildPipeline *Build, - treePipeline *OS, - ref string) *OSTreeCommit { +func NewOSTreeCommit(buildPipeline *Build, treePipeline *OS, ref string) *OSTreeCommit { p := &OSTreeCommit{ - Base: NewBase(m, "ostree-commit", buildPipeline), + Base: NewBase(treePipeline.Manifest(), "ostree-commit", buildPipeline), treePipeline: treePipeline, ref: ref, } - if treePipeline.Base.manifest != m { - panic("tree pipeline from different manifest") - } buildPipeline.addDependent(p) - m.addPipeline(p) + treePipeline.Manifest().addPipeline(p) return p } diff --git a/vendor/github.com/osbuild/images/pkg/manifest/commit_server_tree.go b/vendor/github.com/osbuild/images/pkg/manifest/commit_server_tree.go index 643a75a5d8..40d82cd4bb 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/commit_server_tree.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/commit_server_tree.go @@ -149,6 +149,6 @@ func chmodStageOptions(path, mode string, recursive bool) *osbuild.ChmodStageOpt } } -func (p *OSTreeCommitServer) GetPlatform() platform.Platform { +func (p *OSTreeCommitServer) Platform() platform.Platform { return p.platform } diff --git a/vendor/github.com/osbuild/images/pkg/manifest/coreos_installer.go b/vendor/github.com/osbuild/images/pkg/manifest/coreos_installer.go index 7dd8085708..ba0c108d24 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/coreos_installer.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/coreos_installer.go @@ -66,8 +66,10 @@ func NewCoreOSInstaller(m *Manifest, return p } -// TODO: refactor - what is required to boot and what to build, and -// do they all belong in this pipeline? +// TODO: refactor: +// - what is required to boot and what to build? +// - do they all belong in this pipeline? +// - should these be moved to the platform for the image type? func (p *CoreOSInstaller) getBootPackages() []string { packages := []string{ "grub2-tools", @@ -76,6 +78,11 @@ func (p *CoreOSInstaller) getBootPackages() []string { "efibootmgr", } + packages = append(packages, p.platform.GetPackages()...) + + // TODO: Move these to the platform? + // For Fedora, this will add a lot of duplicates, but we also add them here + // for RHEL and CentOS. switch p.platform.GetArch() { case platform.ARCH_X86_64: packages = append(packages, @@ -97,6 +104,10 @@ func (p *CoreOSInstaller) getBootPackages() []string { panic(fmt.Sprintf("unsupported arch: %s", p.platform.GetArch())) } + if p.Biosdevname { + packages = append(packages, "biosdevname") + } + return packages } @@ -185,6 +196,6 @@ func (p *CoreOSInstaller) serialize() osbuild.Pipeline { return pipeline } -func (p *CoreOSInstaller) GetPlatform() platform.Platform { +func (p *CoreOSInstaller) Platform() platform.Platform { return p.platform } diff --git a/vendor/github.com/osbuild/images/pkg/manifest/iso.go b/vendor/github.com/osbuild/images/pkg/manifest/iso.go index 937b3cb7c5..0c7e0ec777 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/iso.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/iso.go @@ -10,24 +10,29 @@ import ( type ISO struct { Base ISOLinux bool - Filename string + filename string treePipeline Pipeline isoLabel string } -func NewISO(m *Manifest, - buildPipeline *Build, - treePipeline Pipeline, - isoLabel string) *ISO { +func (p ISO) Filename() string { + return p.filename +} + +func (p *ISO) SetFilename(filename string) { + p.filename = filename +} + +func NewISO(buildPipeline *Build, treePipeline Pipeline, isoLabel string) *ISO { p := &ISO{ - Base: NewBase(m, "bootiso", buildPipeline), + Base: NewBase(treePipeline.Manifest(), "bootiso", buildPipeline), treePipeline: treePipeline, - Filename: "image.iso", + filename: "image.iso", isoLabel: isoLabel, } buildPipeline.addDependent(p) - m.addPipeline(p) + treePipeline.Manifest().addPipeline(p) return p } @@ -41,8 +46,8 @@ func (p *ISO) getBuildPackages(Distro) []string { func (p *ISO) serialize() osbuild.Pipeline { pipeline := p.Base.serialize() - pipeline.AddStage(osbuild.NewXorrisofsStage(xorrisofsStageOptions(p.Filename, p.isoLabel, p.ISOLinux), p.treePipeline.Name())) - pipeline.AddStage(osbuild.NewImplantisomd5Stage(&osbuild.Implantisomd5StageOptions{Filename: p.Filename})) + pipeline.AddStage(osbuild.NewXorrisofsStage(xorrisofsStageOptions(p.Filename(), p.isoLabel, p.ISOLinux), p.treePipeline.Name())) + pipeline.AddStage(osbuild.NewImplantisomd5Stage(&osbuild.Implantisomd5StageOptions{Filename: p.Filename()})) return pipeline } @@ -71,5 +76,5 @@ func xorrisofsStageOptions(filename, isolabel string, isolinux bool) *osbuild.Xo func (p *ISO) Export() *artifact.Artifact { p.Base.export = true mimeType := "application/x-iso9660-image" - return artifact.New(p.Name(), p.Filename, &mimeType) + return artifact.New(p.Name(), p.Filename(), &mimeType) } diff --git a/vendor/github.com/osbuild/images/pkg/manifest/iso_rootfs.go b/vendor/github.com/osbuild/images/pkg/manifest/iso_rootfs.go index 96f4f35f16..7078306e98 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/iso_rootfs.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/iso_rootfs.go @@ -14,13 +14,13 @@ type ISORootfsImg struct { installerPipeline Pipeline } -func NewISORootfsImg(m *Manifest, buildPipeline *Build, installerPipeline Pipeline) *ISORootfsImg { +func NewISORootfsImg(buildPipeline *Build, installerPipeline Pipeline) *ISORootfsImg { p := &ISORootfsImg{ - Base: NewBase(m, "rootfs-image", buildPipeline), + Base: NewBase(installerPipeline.Manifest(), "rootfs-image", buildPipeline), installerPipeline: installerPipeline, } buildPipeline.addDependent(p) - m.addPipeline(p) + installerPipeline.Manifest().addPipeline(p) return p } diff --git a/vendor/github.com/osbuild/images/pkg/manifest/oci_container.go b/vendor/github.com/osbuild/images/pkg/manifest/oci_container.go index 23d50c709d..5117b5eeaa 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/oci_container.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/oci_container.go @@ -9,26 +9,29 @@ import ( // tree created by another Pipeline. type OCIContainer struct { Base - Filename string + filename string Cmd []string ExposedPorts []string - treePipeline Tree + treePipeline TreePipeline } -func NewOCIContainer(m *Manifest, - buildPipeline *Build, - treePipeline Tree) *OCIContainer { +func (p OCIContainer) Filename() string { + return p.filename +} + +func (p *OCIContainer) SetFilename(filename string) { + p.filename = filename +} + +func NewOCIContainer(buildPipeline *Build, treePipeline TreePipeline) *OCIContainer { p := &OCIContainer{ - Base: NewBase(m, "container", buildPipeline), + Base: NewBase(treePipeline.Manifest(), "container", buildPipeline), treePipeline: treePipeline, - Filename: "oci-archive.tar", - } - if treePipeline.GetManifest() != m { - panic("tree pipeline from different manifest") + filename: "oci-archive.tar", } buildPipeline.addDependent(p) - m.addPipeline(p) + treePipeline.Manifest().addPipeline(p) return p } @@ -36,8 +39,8 @@ func (p *OCIContainer) serialize() osbuild.Pipeline { pipeline := p.Base.serialize() options := &osbuild.OCIArchiveStageOptions{ - Architecture: p.treePipeline.GetPlatform().GetArch().String(), - Filename: p.Filename, + Architecture: p.treePipeline.Platform().GetArch().String(), + Filename: p.Filename(), Config: &osbuild.OCIArchiveConfig{ Cmd: p.Cmd, ExposedPorts: p.ExposedPorts, @@ -57,5 +60,5 @@ func (p *OCIContainer) getBuildPackages(Distro) []string { func (p *OCIContainer) Export() *artifact.Artifact { p.Base.export = true mimeType := "application/x-tar" - return artifact.New(p.Name(), p.Filename, &mimeType) + return artifact.New(p.Name(), p.Filename(), &mimeType) } diff --git a/vendor/github.com/osbuild/images/pkg/manifest/os.go b/vendor/github.com/osbuild/images/pkg/manifest/os.go index 125a990e50..036caa4d4b 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/os.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/os.go @@ -123,6 +123,7 @@ type OSCustomizations struct { WSLConfig *osbuild.WSLConfStageOptions LeapSecTZ *string FactAPIType *facts.APIType + Presets []osbuild.Preset Subscription *subscription.ImageOptions RHSMConfig map[subscription.RHSMStatus]*osbuild.RHSMStageOptions @@ -732,6 +733,12 @@ func (p *OS) serialize() osbuild.Pipeline { pipeline.AddStage(osbuild.NewOscapRemediationStage(p.OpenSCAPConfig)) } + if len(p.Presets) != 0 { + pipeline.AddStage(osbuild.NewSystemdPresetStage(&osbuild.SystemdPresetStageOptions{ + Presets: p.Presets, + })) + } + if p.SElinux != "" { pipeline.AddStage(osbuild.NewSELinuxStage(&osbuild.SELinuxStageOptions{ FileContexts: fmt.Sprintf("etc/selinux/%s/contexts/files/file_contexts", p.SElinux), @@ -797,7 +804,7 @@ func usersFirstBootOptions(users []users.User) *osbuild.FirstBootStageOptions { return options } -func (p *OS) GetPlatform() platform.Platform { +func (p *OS) Platform() platform.Platform { return p.platform } diff --git a/vendor/github.com/osbuild/images/pkg/manifest/ostree_deployment.go b/vendor/github.com/osbuild/images/pkg/manifest/ostree_deployment.go index 1d98e38d9b..c480275289 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/ostree_deployment.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/ostree_deployment.go @@ -45,6 +45,9 @@ type OSTreeDeployment struct { // Whether ignition is in use or not ignition bool + // Specifies the ignition platform to use + ignitionPlatform string + Directories []*fsnode.Directory Files []*fsnode.File @@ -54,19 +57,21 @@ type OSTreeDeployment struct { // NewOSTreeDeployment creates a pipeline for an ostree deployment from a // commit. -func NewOSTreeDeployment(m *Manifest, - buildPipeline *Build, +func NewOSTreeDeployment(buildPipeline *Build, + m *Manifest, commit ostree.SourceSpec, osName string, ignition bool, + ignitionPlatform string, platform platform.Platform) *OSTreeDeployment { p := &OSTreeDeployment{ - Base: NewBase(m, "ostree-deployment", buildPipeline), - commitSource: commit, - osName: osName, - platform: platform, - ignition: ignition, + Base: NewBase(m, "ostree-deployment", buildPipeline), + commitSource: commit, + osName: osName, + platform: platform, + ignition: ignition, + ignitionPlatform: ignitionPlatform, } buildPipeline.addDependent(p) m.addPipeline(p) @@ -145,9 +150,12 @@ func (p *OSTreeDeployment) serialize() osbuild.Pipeline { kernelOpts = append(kernelOpts, p.KernelOptionsAppend...) if p.ignition { + if p.ignitionPlatform == "" { + panic("ignition is enabled but ignition platform ID is not set") + } kernelOpts = append(kernelOpts, "coreos.no_persist_ip", // users cannot add connections as we don't have a live iso, this prevents connections to bleed into the system from the ign initrd - "ignition.platform.id=metal", + "ignition.platform.id="+p.ignitionPlatform, "$ignition_firstboot", ) } @@ -239,6 +247,18 @@ func (p *OSTreeDeployment) serialize() osbuild.Pipeline { "systemd.condition-first-boot=true", }, })) + + // We enable / disable services below using the systemd stage, but its effect + // may be overridden by systemd which may reset enabled / disabled services on + // firstboot (which happend on F37+). This behavior, if available, is triggered + // only when Ignition is used. To prevent this and to not have a special cases + // in the code based on distro version, we enable / disable services also by + // creating a preset file. + if len(p.EnabledServices) != 0 || len(p.DisabledServices) != 0 { + presetsStage := osbuild.GenServicesPresetStage(p.EnabledServices, p.DisabledServices) + presetsStage.MountOSTree(p.osName, commit.Ref, 0) + pipeline.AddStage(presetsStage) + } } // if no root password is set, lock the root account diff --git a/vendor/github.com/osbuild/images/pkg/manifest/ovf.go b/vendor/github.com/osbuild/images/pkg/manifest/ovf.go index f4fedc7ce2..5dbd07c854 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/ovf.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/ovf.go @@ -14,18 +14,13 @@ type OVF struct { } // NewOVF creates a new OVF pipeline. imgPipeline is the pipeline producing the vmdk image. -func NewOVF(m *Manifest, - buildPipeline *Build, - imgPipeline *VMDK) *OVF { +func NewOVF(buidPipeline *Build, imgPipeline *VMDK) *OVF { p := &OVF{ - Base: NewBase(m, "ovf", buildPipeline), + Base: NewBase(imgPipeline.Manifest(), "ovf", buidPipeline), imgPipeline: imgPipeline, } - if imgPipeline.Base.manifest != m { - panic("live image pipeline from different manifest") - } - buildPipeline.addDependent(p) - m.addPipeline(p) + buidPipeline.addDependent(p) + imgPipeline.Manifest().addPipeline(p) return p } @@ -36,7 +31,7 @@ func (p *OVF) serialize() osbuild.Pipeline { pipeline.AddStage(osbuild.NewCopyStageSimple( &osbuild.CopyStageOptions{ Paths: []osbuild.CopyStagePath{ - osbuild.CopyStagePath{ + { From: fmt.Sprintf("input://%s/%s", inputName, p.imgPipeline.Export().Filename()), To: "tree:///", }, @@ -46,7 +41,7 @@ func (p *OVF) serialize() osbuild.Pipeline { )) pipeline.AddStage(osbuild.NewOVFStage(&osbuild.OVFStageOptions{ - Vmdk: p.imgPipeline.Filename, + Vmdk: p.imgPipeline.Filename(), })) return pipeline diff --git a/vendor/github.com/osbuild/images/pkg/manifest/pipeline.go b/vendor/github.com/osbuild/images/pkg/manifest/pipeline.go index bf87432361..e4f8e68c3f 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/pipeline.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/pipeline.go @@ -23,6 +23,13 @@ type Pipeline interface { // Export this tree of this pipeline as an artifact when osbuild is called. Export() *artifact.Artifact + // BuildPipeline returns a reference to the pipeline that creates the build + // root for this pipeline. For build pipelines, it should return nil. + BuildPipeline() *Build + + // Manifest returns a reference to the Manifest which this Pipeline belongs to. + Manifest() *Manifest + getCheckpoint() bool getExport() bool @@ -95,7 +102,11 @@ func (p Base) getExport() bool { return p.export } -func (p Base) GetManifest() *Manifest { +func (p Base) BuildPipeline() *Build { + return p.build +} + +func (p Base) Manifest() *Manifest { return p.manifest } @@ -176,8 +187,17 @@ func (p Base) serialize() osbuild.Pipeline { return pipeline } -type Tree interface { +// TreePipeline is any pipeline that produces a directory tree. +type TreePipeline interface { Name() string - GetManifest() *Manifest - GetPlatform() platform.Platform + Manifest() *Manifest + BuildPipeline() *Build + Platform() platform.Platform +} + +// FilePipeline is any pipeline that produces a single file (typically an image file). +type FilePipeline interface { + Pipeline + Filename() string + SetFilename(fname string) } diff --git a/vendor/github.com/osbuild/images/pkg/manifest/qcow2.go b/vendor/github.com/osbuild/images/pkg/manifest/qcow2.go index 75e81f57ad..4332a82f48 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/qcow2.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/qcow2.go @@ -8,28 +8,31 @@ import ( // A QCOW2 turns a raw image file into qcow2 image. type QCOW2 struct { Base - Filename string + filename string Compat string - imgPipeline *RawImage + imgPipeline FilePipeline +} + +func (p QCOW2) Filename() string { + return p.filename +} + +func (p *QCOW2) SetFilename(filename string) { + p.filename = filename } // NewQCOW2 createsa new QCOW2 pipeline. imgPipeline is the pipeline producing the // raw image. The pipeline name is the name of the new pipeline. Filename is the name // of the produced qcow2 image. -func NewQCOW2(m *Manifest, - buildPipeline *Build, - imgPipeline *RawImage) *QCOW2 { +func NewQCOW2(buildPipeline *Build, imgPipeline FilePipeline) *QCOW2 { p := &QCOW2{ - Base: NewBase(m, "qcow2", buildPipeline), + Base: NewBase(imgPipeline.Manifest(), "qcow2", buildPipeline), imgPipeline: imgPipeline, - Filename: "image.qcow2", - } - if imgPipeline.Base.manifest != m { - panic("live image pipeline from different manifest") + filename: "image.qcow2", } buildPipeline.addDependent(p) - m.addPipeline(p) + imgPipeline.Manifest().addPipeline(p) return p } @@ -37,12 +40,12 @@ func (p *QCOW2) serialize() osbuild.Pipeline { pipeline := p.Base.serialize() pipeline.AddStage(osbuild.NewQEMUStage( - osbuild.NewQEMUStageOptions(p.Filename, + osbuild.NewQEMUStageOptions(p.Filename(), osbuild.QEMUFormatQCOW2, osbuild.QCOW2Options{ Compat: p.Compat, }), - osbuild.NewQemuStagePipelineFilesInputs(p.imgPipeline.Name(), p.imgPipeline.Filename), + osbuild.NewQemuStagePipelineFilesInputs(p.imgPipeline.Name(), p.imgPipeline.Filename()), )) return pipeline @@ -55,5 +58,5 @@ func (p *QCOW2) getBuildPackages(Distro) []string { func (p *QCOW2) Export() *artifact.Artifact { p.Base.export = true mimeType := "application/x-qemu-disk" - return artifact.New(p.Name(), p.Filename, &mimeType) + return artifact.New(p.Name(), p.Filename(), &mimeType) } diff --git a/vendor/github.com/osbuild/images/pkg/manifest/raw.go b/vendor/github.com/osbuild/images/pkg/manifest/raw.go index 6efabe9f90..22598e12d2 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/raw.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/raw.go @@ -11,24 +11,27 @@ import ( type RawImage struct { Base treePipeline *OS - Filename string + filename string PartTool osbuild.PartTool } -func NewRawImage(m *Manifest, - buildPipeline *Build, - treePipeline *OS) *RawImage { +func (p RawImage) Filename() string { + return p.filename +} + +func (p *RawImage) SetFilename(filename string) { + p.filename = filename +} + +func NewRawImage(buildPipeline *Build, treePipeline *OS) *RawImage { p := &RawImage{ - Base: NewBase(m, "image", buildPipeline), + Base: NewBase(treePipeline.Manifest(), "image", buildPipeline), treePipeline: treePipeline, - Filename: "disk.img", + filename: "disk.img", } buildPipeline.addDependent(p) - if treePipeline.Base.manifest != m { - panic("tree pipeline from different manifest") - } p.PartTool = osbuild.PTSfdisk // default; can be changed after initialisation - m.addPipeline(p) + treePipeline.Manifest().addPipeline(p) return p } @@ -48,26 +51,26 @@ func (p *RawImage) serialize() osbuild.Pipeline { panic("no partition table in live image") } - for _, stage := range osbuild.GenImagePrepareStages(pt, p.Filename, p.PartTool) { + for _, stage := range osbuild.GenImagePrepareStages(pt, p.Filename(), p.PartTool) { pipeline.AddStage(stage) } inputName := "root-tree" - copyOptions, copyDevices, copyMounts := osbuild.GenCopyFSTreeOptions(inputName, p.treePipeline.Name(), p.Filename, pt) + copyOptions, copyDevices, copyMounts := osbuild.GenCopyFSTreeOptions(inputName, p.treePipeline.Name(), p.Filename(), pt) copyInputs := osbuild.NewPipelineTreeInputs(inputName, p.treePipeline.Name()) pipeline.AddStage(osbuild.NewCopyStage(copyOptions, copyInputs, copyDevices, copyMounts)) - for _, stage := range osbuild.GenImageFinishStages(pt, p.Filename) { + for _, stage := range osbuild.GenImageFinishStages(pt, p.Filename()) { pipeline.AddStage(stage) } switch p.treePipeline.platform.GetArch() { case platform.ARCH_S390X: - loopback := osbuild.NewLoopbackDevice(&osbuild.LoopbackDeviceOptions{Filename: p.Filename}) + loopback := osbuild.NewLoopbackDevice(&osbuild.LoopbackDeviceOptions{Filename: p.Filename()}) pipeline.AddStage(osbuild.NewZiplInstStage(osbuild.NewZiplInstStageOptions(p.treePipeline.kernelVer, pt), loopback, copyDevices, copyMounts)) default: if grubLegacy := p.treePipeline.platform.GetBIOSPlatform(); grubLegacy != "" { - pipeline.AddStage(osbuild.NewGrub2InstStage(osbuild.NewGrub2InstStageOption(p.Filename, pt, grubLegacy))) + pipeline.AddStage(osbuild.NewGrub2InstStage(osbuild.NewGrub2InstStageOption(p.Filename(), pt, grubLegacy))) } } @@ -76,5 +79,5 @@ func (p *RawImage) serialize() osbuild.Pipeline { func (p *RawImage) Export() *artifact.Artifact { p.Base.export = true - return artifact.New(p.Name(), p.Filename, nil) + return artifact.New(p.Name(), p.Filename(), nil) } diff --git a/vendor/github.com/osbuild/images/pkg/manifest/raw_ostree.go b/vendor/github.com/osbuild/images/pkg/manifest/raw_ostree.go index d29818abe6..e9f74777e6 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/raw_ostree.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/raw_ostree.go @@ -13,25 +13,27 @@ import ( type RawOSTreeImage struct { Base treePipeline *OSTreeDeployment - Filename string + filename string platform platform.Platform } -func NewRawOStreeImage(m *Manifest, - buildPipeline *Build, - platform platform.Platform, - treePipeline *OSTreeDeployment) *RawOSTreeImage { +func (p RawOSTreeImage) Filename() string { + return p.filename +} + +func (p *RawOSTreeImage) SetFilename(filename string) { + p.filename = filename +} + +func NewRawOStreeImage(buildPipeline *Build, treePipeline *OSTreeDeployment, platform platform.Platform) *RawOSTreeImage { p := &RawOSTreeImage{ - Base: NewBase(m, "image", buildPipeline), + Base: NewBase(treePipeline.Manifest(), "image", buildPipeline), treePipeline: treePipeline, - Filename: "disk.img", + filename: "disk.img", platform: platform, } buildPipeline.addDependent(p) - if treePipeline.Base.manifest != m { - panic("tree pipeline from different manifest") - } - m.addPipeline(p) + treePipeline.Manifest().addPipeline(p) return p } @@ -57,12 +59,12 @@ func (p *RawOSTreeImage) serialize() osbuild.Pipeline { panic("no partition table in live image") } - for _, stage := range osbuild.GenImagePrepareStages(pt, p.Filename, osbuild.PTSfdisk) { + for _, stage := range osbuild.GenImagePrepareStages(pt, p.Filename(), osbuild.PTSfdisk) { pipeline.AddStage(stage) } inputName := "root-tree" - treeCopyOptions, treeCopyDevices, treeCopyMounts := osbuild.GenCopyFSTreeOptions(inputName, p.treePipeline.Name(), p.Filename, pt) + treeCopyOptions, treeCopyDevices, treeCopyMounts := osbuild.GenCopyFSTreeOptions(inputName, p.treePipeline.Name(), p.Filename(), pt) treeCopyInputs := osbuild.NewPipelineTreeInputs(inputName, p.treePipeline.Name()) pipeline.AddStage(osbuild.NewCopyStage(treeCopyOptions, treeCopyInputs, treeCopyDevices, treeCopyMounts)) @@ -71,7 +73,7 @@ func (p *RawOSTreeImage) serialize() osbuild.Pipeline { if len(bootFiles) > 0 { // we ignore the bootcopyoptions as they contain a full tree copy instead we make our own, we *do* still want all the other // information such as mountpoints and devices - _, bootCopyDevices, bootCopyMounts := osbuild.GenCopyFSTreeOptions(inputName, p.treePipeline.Name(), p.Filename, pt) + _, bootCopyDevices, bootCopyMounts := osbuild.GenCopyFSTreeOptions(inputName, p.treePipeline.Name(), p.Filename(), pt) bootCopyOptions := &osbuild.CopyStageOptions{} commit := p.treePipeline.ostreeSpecs[0] @@ -91,12 +93,12 @@ func (p *RawOSTreeImage) serialize() osbuild.Pipeline { pipeline.AddStage(osbuild.NewCopyStage(bootCopyOptions, bootCopyInputs, bootCopyDevices, bootCopyMounts)) } - for _, stage := range osbuild.GenImageFinishStages(pt, p.Filename) { + for _, stage := range osbuild.GenImageFinishStages(pt, p.Filename()) { pipeline.AddStage(stage) } if grubLegacy := p.treePipeline.platform.GetBIOSPlatform(); grubLegacy != "" { - pipeline.AddStage(osbuild.NewGrub2InstStage(osbuild.NewGrub2InstStageOption(p.Filename, pt, grubLegacy))) + pipeline.AddStage(osbuild.NewGrub2InstStage(osbuild.NewGrub2InstStageOption(p.Filename(), pt, grubLegacy))) } return pipeline @@ -104,5 +106,5 @@ func (p *RawOSTreeImage) serialize() osbuild.Pipeline { func (p *RawOSTreeImage) Export() *artifact.Artifact { p.Base.export = true - return artifact.New(p.Name(), p.Filename, nil) + return artifact.New(p.Name(), p.Filename(), nil) } diff --git a/vendor/github.com/osbuild/images/pkg/manifest/tar.go b/vendor/github.com/osbuild/images/pkg/manifest/tar.go index 7bf6aba1f1..695ec86cb1 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/tar.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/tar.go @@ -8,7 +8,7 @@ import ( // A Tar represents the contents of another pipeline in a tar file type Tar struct { Base - Filename string + filename string Format osbuild.TarArchiveFormat RootNode osbuild.TarRootNode @@ -19,20 +19,25 @@ type Tar struct { inputPipeline Pipeline } +func (p Tar) Filename() string { + return p.filename +} + +func (p *Tar) SetFilename(filename string) { + p.filename = filename +} + // NewTar creates a new TarPipeline. The inputPipeline represents the // filesystem tree which will be the contents of the tar file. The pipelinename // is the name of the pipeline. The filename is the name of the output tar file. -func NewTar(m *Manifest, - buildPipeline *Build, - inputPipeline Pipeline, - pipelinename string) *Tar { +func NewTar(buildPipeline *Build, inputPipeline Pipeline, pipelinename string) *Tar { p := &Tar{ - Base: NewBase(m, pipelinename, buildPipeline), + Base: NewBase(inputPipeline.Manifest(), pipelinename, buildPipeline), inputPipeline: inputPipeline, - Filename: "image.tar", + filename: "image.tar", } buildPipeline.addDependent(p) - m.addPipeline(p) + inputPipeline.Manifest().addPipeline(p) return p } @@ -40,7 +45,7 @@ func (p *Tar) serialize() osbuild.Pipeline { pipeline := p.Base.serialize() tarOptions := &osbuild.TarStageOptions{ - Filename: p.Filename, + Filename: p.Filename(), Format: p.Format, ACLs: p.ACLs, SELinux: p.SELinux, @@ -60,5 +65,5 @@ func (p *Tar) getBuildPackages(Distro) []string { func (p *Tar) Export() *artifact.Artifact { p.Base.export = true mimeType := "application/x-tar" - return artifact.New(p.Name(), p.Filename, &mimeType) + return artifact.New(p.Name(), p.Filename(), &mimeType) } diff --git a/vendor/github.com/osbuild/images/pkg/manifest/vmdk.go b/vendor/github.com/osbuild/images/pkg/manifest/vmdk.go index a64d7aa601..433f4f7f06 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/vmdk.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/vmdk.go @@ -8,43 +8,31 @@ import ( // A VMDK turns a raw image file or a raw ostree image file into vmdk image. type VMDK struct { Base - Filename string + filename string imgPipeline Pipeline } +func (p VMDK) Filename() string { + return p.filename +} + +func (p *VMDK) SetFilename(filename string) { + p.filename = filename +} + // NewVMDK creates a new VMDK pipeline. imgPipeline is the pipeline producing the // raw image. imgOstreePipeline is the pipeline producing the raw ostree image. // Either imgPipeline or imgOStreePipeline are required, but not both at the same time. // Filename is the name of the produced image. -func NewVMDK(m *Manifest, - buildPipeline *Build, - imgPipeline *RawImage, imgOstreePipeline *RawOSTreeImage) *VMDK { - if imgPipeline != nil && imgOstreePipeline != nil { - panic("NewVMDK requires either RawImage or RawOSTreeImage") - } - var p *VMDK - if imgPipeline != nil { - p = &VMDK{ - Base: NewBase(m, "vmdk", buildPipeline), - imgPipeline: imgPipeline, - Filename: "image.vmdk", - } - if imgPipeline.Base.manifest != m { - panic("live image pipeline from different manifest") - } - } else { - p = &VMDK{ - Base: NewBase(m, "vmdk", buildPipeline), - imgPipeline: imgOstreePipeline, - Filename: "image.vmdk", - } - if imgOstreePipeline.Base.manifest != m { - panic("live image pipeline from different manifest") - } +func NewVMDK(buildPipeline *Build, imgPipeline FilePipeline) *VMDK { + p := &VMDK{ + Base: NewBase(imgPipeline.Manifest(), "vmdk", buildPipeline), + imgPipeline: imgPipeline, + filename: "image.vmdk", } buildPipeline.addDependent(p) - m.addPipeline(p) + imgPipeline.Manifest().addPipeline(p) return p } @@ -52,7 +40,7 @@ func (p *VMDK) serialize() osbuild.Pipeline { pipeline := p.Base.serialize() pipeline.AddStage(osbuild.NewQEMUStage( - osbuild.NewQEMUStageOptions(p.Filename, osbuild.QEMUFormatVMDK, osbuild.VMDKOptions{ + osbuild.NewQEMUStageOptions(p.Filename(), osbuild.QEMUFormatVMDK, osbuild.VMDKOptions{ Subformat: osbuild.VMDKSubformatStreamOptimized, }), osbuild.NewQemuStagePipelineFilesInputs(p.imgPipeline.Name(), p.imgPipeline.Export().Filename()), @@ -68,5 +56,5 @@ func (p *VMDK) getBuildPackages(Distro) []string { func (p *VMDK) Export() *artifact.Artifact { p.Base.export = true mimeType := "application/x-vmdk" - return artifact.New(p.Name(), p.Filename, &mimeType) + return artifact.New(p.Name(), p.Filename(), &mimeType) } diff --git a/vendor/github.com/osbuild/images/pkg/manifest/vpc.go b/vendor/github.com/osbuild/images/pkg/manifest/vpc.go index 0b816bcd03..ca0e01f73e 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/vpc.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/vpc.go @@ -8,29 +8,32 @@ import ( // A VPC turns a raw image file into qemu-based image format, such as qcow2. type VPC struct { Base - Filename string + filename string ForceSize *bool imgPipeline *RawImage } +func (p VPC) Filename() string { + return p.filename +} + +func (p *VPC) SetFilename(filename string) { + p.filename = filename +} + // NewVPC createsa new Qemu pipeline. imgPipeline is the pipeline producing the // raw image. The pipeline name is the name of the new pipeline. Filename is the name // of the produced image. -func NewVPC(m *Manifest, - buildPipeline *Build, - imgPipeline *RawImage) *VPC { +func NewVPC(buildPipeline *Build, imgPipeline *RawImage) *VPC { p := &VPC{ - Base: NewBase(m, "vpc", buildPipeline), + Base: NewBase(imgPipeline.Manifest(), "vpc", buildPipeline), imgPipeline: imgPipeline, - Filename: "image.vhd", - } - if imgPipeline.Base.manifest != m { - panic("live image pipeline from different manifest") + filename: "image.vhd", } buildPipeline.addDependent(p) - m.addPipeline(p) + imgPipeline.Manifest().addPipeline(p) return p } @@ -40,8 +43,8 @@ func (p *VPC) serialize() osbuild.Pipeline { formatOptions := osbuild.VPCOptions{ForceSize: p.ForceSize} pipeline.AddStage(osbuild.NewQEMUStage( - osbuild.NewQEMUStageOptions(p.Filename, osbuild.QEMUFormatVPC, formatOptions), - osbuild.NewQemuStagePipelineFilesInputs(p.imgPipeline.Name(), p.imgPipeline.Filename), + osbuild.NewQEMUStageOptions(p.Filename(), osbuild.QEMUFormatVPC, formatOptions), + osbuild.NewQemuStagePipelineFilesInputs(p.imgPipeline.Name(), p.imgPipeline.Filename()), )) return pipeline @@ -54,5 +57,5 @@ func (p *VPC) getBuildPackages(Distro) []string { func (p *VPC) Export() *artifact.Artifact { p.Base.export = true mimeType := "application/x-vhd" - return artifact.New(p.Name(), p.Filename, &mimeType) + return artifact.New(p.Name(), p.Filename(), &mimeType) } diff --git a/vendor/github.com/osbuild/images/pkg/manifest/xz.go b/vendor/github.com/osbuild/images/pkg/manifest/xz.go index e4b9565a51..3fba330231 100644 --- a/vendor/github.com/osbuild/images/pkg/manifest/xz.go +++ b/vendor/github.com/osbuild/images/pkg/manifest/xz.go @@ -8,23 +8,29 @@ import ( // The XZ pipeline compresses a raw image file using xz. type XZ struct { Base - Filename string + filename string - imgPipeline Pipeline + imgPipeline FilePipeline +} + +func (p XZ) Filename() string { + return p.filename +} + +func (p *XZ) SetFilename(filename string) { + p.filename = filename } // NewXZ creates a new XZ pipeline. imgPipeline is the pipeline producing the // raw image that will be xz compressed. -func NewXZ(m *Manifest, - buildPipeline *Build, - imgPipeline Pipeline) *XZ { +func NewXZ(buildPipeline *Build, imgPipeline FilePipeline) *XZ { p := &XZ{ - Base: NewBase(m, "xz", buildPipeline), - Filename: "image.xz", + Base: NewBase(imgPipeline.Manifest(), "xz", buildPipeline), + filename: "image.xz", imgPipeline: imgPipeline, } buildPipeline.addDependent(p) - m.addPipeline(p) + imgPipeline.Manifest().addPipeline(p) return p } @@ -32,7 +38,7 @@ func (p *XZ) serialize() osbuild.Pipeline { pipeline := p.Base.serialize() pipeline.AddStage(osbuild.NewXzStage( - osbuild.NewXzStageOptions(p.Filename), + osbuild.NewXzStageOptions(p.Filename()), osbuild.NewXzStageInputs(osbuild.NewFilesInputPipelineObjectRef(p.imgPipeline.Name(), p.imgPipeline.Export().Filename(), nil)), )) @@ -46,5 +52,5 @@ func (p *XZ) getBuildPackages(Distro) []string { func (p *XZ) Export() *artifact.Artifact { p.Base.export = true mimeType := "application/xz" - return artifact.New(p.Name(), p.Filename, &mimeType) + return artifact.New(p.Name(), p.Filename(), &mimeType) } diff --git a/vendor/github.com/osbuild/images/pkg/osbuild/systemd_preset_stage.go b/vendor/github.com/osbuild/images/pkg/osbuild/systemd_preset_stage.go new file mode 100644 index 0000000000..496dc1301e --- /dev/null +++ b/vendor/github.com/osbuild/images/pkg/osbuild/systemd_preset_stage.go @@ -0,0 +1,56 @@ +package osbuild + +import "fmt" + +type SystemdPresetStageOptions struct { + Presets []Preset `json:"presets,omitempty"` +} + +type PresetState string + +const ( + StateEnable PresetState = "enable" + StateDisable PresetState = "disable" +) + +type Preset struct { + Name string `json:"name,omitempty"` + State PresetState `json:"state,omitempty"` +} + +func (SystemdPresetStageOptions) isStageOptions() {} + +func NewSystemdPresetStage(options *SystemdPresetStageOptions) *Stage { + if err := options.validate(); err != nil { + panic(err) + } + return &Stage{ + Type: "org.osbuild.systemd.preset", + Options: options, + } +} + +func (o SystemdPresetStageOptions) validate() error { + if len(o.Presets) == 0 { + return fmt.Errorf("at least one preset is required") + } + return nil +} + +// GenServicesPresetStage creates a new systemd preset stage for the given +// list of services to enable and disable. +func GenServicesPresetStage(enabled, disabled []string) *Stage { + if len(enabled) == 0 && len(disabled) == 0 { + return nil + } + + presets := make([]Preset, 0, len(enabled)+len(disabled)) + for _, name := range enabled { + presets = append(presets, Preset{Name: name, State: StateEnable}) + } + for _, name := range disabled { + presets = append(presets, Preset{Name: name, State: StateDisable}) + } + + return NewSystemdPresetStage(&SystemdPresetStageOptions{Presets: presets}) +} diff --git a/vendor/github.com/osbuild/images/pkg/osbuild/systemd_unit_stage.go b/vendor/github.com/osbuild/images/pkg/osbuild/systemd_unit_stage.go index 906bf6b16a..b46094e977 100644 --- a/vendor/github.com/osbuild/images/pkg/osbuild/systemd_unit_stage.go +++ b/vendor/github.com/osbuild/images/pkg/osbuild/systemd_unit_stage.go @@ -1,9 +1,17 @@ package osbuild +type unitType string + +const ( + System unitType = "system" + Global unitType = "global" +) + type SystemdUnitStageOptions struct { - Unit string `json:"unit"` - Dropin string `json:"dropin"` - Config SystemdServiceUnitDropin `json:"config"` + Unit string `json:"unit"` + Dropin string `json:"dropin"` + Config SystemdServiceUnitDropin `json:"config"` + UnitType unitType `json:"unit-type,omitempty"` } func (SystemdUnitStageOptions) isStageOptions() {} @@ -18,6 +26,7 @@ func NewSystemdUnitStage(options *SystemdUnitStageOptions) *Stage { // Drop-in configuration for a '.service' unit type SystemdServiceUnitDropin struct { Service *SystemdUnitServiceSection `json:"Service,omitempty"` + Unit *SystemdUnitSection `json:"Unit,omitempty"` } // 'Service' configuration section of a unit file @@ -25,3 +34,9 @@ type SystemdUnitServiceSection struct { // Sets environment variables for executed process Environment string `json:"Environment,omitempty"` } + +// 'Unit' configuration section of a unit file +type SystemdUnitSection struct { + // Sets condition to to check if file exits + FileExists string `json:"ConditionPathExists,omitempty"` +} diff --git a/vendor/google.golang.org/api/internal/version.go b/vendor/google.golang.org/api/internal/version.go index 7c6a3128ed..06fd417033 100644 --- a/vendor/google.golang.org/api/internal/version.go +++ b/vendor/google.golang.org/api/internal/version.go @@ -5,4 +5,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.137.0" +const Version = "0.138.0" diff --git a/vendor/modules.txt b/vendor/modules.txt index 9124b4f69d..acef9cb5be 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -119,7 +119,7 @@ github.com/acarl005/stripansi # github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 ## explicit; go 1.13 github.com/asaskevich/govalidator -# github.com/aws/aws-sdk-go v1.44.325 +# github.com/aws/aws-sdk-go v1.44.329 ## explicit; go 1.11 github.com/aws/aws-sdk-go/aws github.com/aws/aws-sdk-go/aws/arn @@ -445,7 +445,7 @@ github.com/google/s2a-go/internal/v2/remotesigner github.com/google/s2a-go/internal/v2/tlsconfigstore github.com/google/s2a-go/retry github.com/google/s2a-go/stream -# github.com/google/uuid v1.3.0 +# github.com/google/uuid v1.3.1 ## explicit github.com/google/uuid # github.com/googleapis/enterprise-certificate-proxy v0.2.5 @@ -645,7 +645,7 @@ github.com/oracle/oci-go-sdk/v54/identity github.com/oracle/oci-go-sdk/v54/objectstorage github.com/oracle/oci-go-sdk/v54/objectstorage/transfer github.com/oracle/oci-go-sdk/v54/workrequests -# github.com/osbuild/images v0.0.0-20230817095437-c2aa82cc9a86 +# github.com/osbuild/images v0.3.0 ## explicit; go 1.19 github.com/osbuild/images/internal/common github.com/osbuild/images/internal/dnfjson @@ -973,7 +973,7 @@ golang.org/x/tools/internal/typeparams ## explicit; go 1.17 golang.org/x/xerrors golang.org/x/xerrors/internal -# google.golang.org/api v0.137.0 +# google.golang.org/api v0.138.0 ## explicit; go 1.19 google.golang.org/api/googleapi google.golang.org/api/googleapi/transport